refactor/add transaction status field to various models and update related examples

This commit is contained in:
hongwei 2025-06-13 13:43:27 +02:00
parent 890ef821b5
commit 3548361cda
8 changed files with 39 additions and 41 deletions

View File

@ -1,15 +1,14 @@
package code.api.ResourceDocs1_4_0
import code.api.Constant
import java.util.Date
import code.api.util.APIUtil._
import code.api.util.ExampleValue._
import com.github.dwickern.macros.NameOf.nameOf
import com.openbankproject.commons.model.enums.CustomerAttributeType
import com.openbankproject.commons.model.{BankAccountCommons, CustomerAttributeCommons, CustomerCommons, InboundAdapterCallContext, InboundAdapterInfoInternal, InboundStatusMessage, _}
import com.openbankproject.commons.model._
import com.openbankproject.commons.util.ReflectUtils
import java.util.Date
import scala.collection.immutable.{List, Nil}
object MessageDocsSwaggerDefinitions
@ -232,7 +231,8 @@ object MessageDocsSwaggerDefinitions
description = Some(transactionDescriptionExample.value),
startDate = DateWithDayExampleObject,
finishDate = DateWithDayExampleObject,
balance = BigDecimal(balanceAmountExample.value)
balance = BigDecimal(balanceAmountExample.value),
status = transactionStatusExample.value,
)
val accountRouting = AccountRouting("","")

View File

@ -8,7 +8,7 @@ import code.api.util.Glossary.{glossaryItems, makeGlossaryItem}
import code.apicollection.ApiCollection
import code.dynamicEntity._
import com.openbankproject.commons.model.CardAction
import com.openbankproject.commons.model.enums.{CustomerAttributeType, DynamicEntityFieldType, UserInvitationPurpose}
import com.openbankproject.commons.model.enums.{CustomerAttributeType, DynamicEntityFieldType, TransactionRequestStatus, UserInvitationPurpose}
import com.openbankproject.commons.util.ReflectUtils
import net.liftweb.json
import net.liftweb.json.JObject
@ -759,6 +759,9 @@ object ExampleValue {
lazy val statusExample = ConnectorField(NoExampleProvided,NoDescriptionProvided)
glossaryItems += makeGlossaryItem("status", statusExample)
lazy val transactionStatusExample = ConnectorField(s" ${TransactionRequestStatus.COMPLETED.toString}",s"Status of the transaction, e.g. ${TransactionRequestStatus.COMPLETED.toString}, ${TransactionRequestStatus.PENDING.toString} ..")
glossaryItems += makeGlossaryItem("status", transactionStatusExample)
lazy val errorCodeExample = ConnectorField(NoExampleProvided,NoDescriptionProvided)
glossaryItems += makeGlossaryItem("errorCode", errorCodeExample)

View File

@ -1,19 +1,16 @@
package code.bankconnectors.akka.actor
import java.util.Date
import akka.actor.{Actor, ActorLogging}
import code.api.util.APIUtil.DateWithMsFormat
import code.api.util.ErrorMessages.attemptedToOpenAnEmptyBox
import code.api.util.{APIUtil, OBPFromDate, OBPLimit, OBPToDate}
import code.bankconnectors.LocalMappedConnector._
import code.model.dataAccess.MappedBank
import code.util.Helper.MdcLoggable
import com.openbankproject.commons.dto._
import com.openbankproject.commons.model.{CreditLimit, Transaction, _}
import com.openbankproject.commons.model._
import net.liftweb.common.Box
import scala.collection.immutable.List
import java.util.Date
/**
@ -148,7 +145,8 @@ object Transformer {
description = t.description ,
startDate = t.startDate ,
finishDate = t.finishDate ,
balance = t.balance
balance = t.balance,
status = t.status
)
}
}

View File

@ -1551,7 +1551,9 @@ trait RabbitMQConnector_vOct2024 extends Connector with MdcLoggable {
description=Some(transactionDescriptionExample.value),
startDate=toDate(transactionStartDateExample),
finishDate=toDate(transactionFinishDateExample),
balance=BigDecimal(balanceExample.value))))
balance=BigDecimal(balanceExample.value),
status=transactionStatusExample.value
)))
),
adapterImplementation = Some(AdapterImplementation("- Core", 1))
)
@ -1684,7 +1686,8 @@ trait RabbitMQConnector_vOct2024 extends Connector with MdcLoggable {
description=Some(transactionDescriptionExample.value),
startDate=toDate(transactionStartDateExample),
finishDate=toDate(transactionFinishDateExample),
balance=BigDecimal(balanceExample.value)))
balance=BigDecimal(balanceExample.value),
status=transactionStatusExample.value))
),
adapterImplementation = Some(AdapterImplementation("- Core", 1))
)

View File

@ -23,16 +23,12 @@ Osloerstrasse 16/17
Berlin 13359, Germany
*/
import java.net.{ConnectException, URLEncoder, UnknownHostException}
import java.util.Date
import java.util.UUID.randomUUID
import _root_.akka.stream.StreamTcpException
import akka.http.scaladsl.model.headers.RawHeader
import akka.http.scaladsl.model._
import akka.http.scaladsl.model.headers.RawHeader
import akka.util.ByteString
import code.api.APIFailureNewStyle
import code.api.ResourceDocs1_4_0.MessageDocsSwaggerDefinitions
import code.api.cache.Caching
import code.api.dynamic.endpoint.helper.MockResponseHolder
import code.api.util.APIUtil._
import code.api.util.ErrorMessages._
@ -41,29 +37,26 @@ import code.api.util.RSAUtil.{computeXSign, getPrivateKeyFromString}
import code.api.util.{APIUtil, CallContext, OBPQueryParam}
import code.bankconnectors._
import code.context.UserAuthContextProvider
import code.customer.internalMapping.MappedCustomerIdMappingProvider
import code.model.dataAccess.internalMapping.MappedAccountIdMappingProvider
import code.util.AkkaHttpClient._
import code.util.Helper
import code.util.Helper.MdcLoggable
import com.openbankproject.commons.dto._
import com.openbankproject.commons.model.enums.StrongCustomerAuthentication.SCA
import com.openbankproject.commons.model.enums.StrongCustomerAuthenticationStatus.SCAStatus
import com.openbankproject.commons.model.enums._
import com.openbankproject.commons.model.{Meta, _}
import com.openbankproject.commons.util.{JsonUtils, ReflectUtils}
import com.tesobe.{CacheKeyFromArguments, CacheKeyOmit}
import net.liftweb.common._
import net.liftweb.json
import net.liftweb.json.Extraction.decompose
import net.liftweb.json.JsonDSL._
import net.liftweb.json.JsonParser.ParseException
import net.liftweb.json.{JValue, _}
import net.liftweb.json._
import net.liftweb.util.Helpers.tryo
import org.apache.commons.lang3.StringUtils
import java.net.{ConnectException, URLEncoder, UnknownHostException}
import java.time.Instant
import scala.collection.immutable.List
import java.util.Date
import scala.collection.mutable.ArrayBuffer
import scala.concurrent.duration._
import scala.concurrent.{Await, Future}
@ -1506,7 +1499,8 @@ trait RestConnector_vMar2019 extends Connector with MdcLoggable {
description=Some(transactionDescriptionExample.value),
startDate=toDate(transactionStartDateExample),
finishDate=toDate(transactionFinishDateExample),
balance=BigDecimal(balanceExample.value))))
balance=BigDecimal(balanceExample.value),
status=transactionStatusExample.value)))
),
adapterImplementation = Some(AdapterImplementation("- Core", 1))
)
@ -1639,7 +1633,8 @@ trait RestConnector_vMar2019 extends Connector with MdcLoggable {
description=Some(transactionDescriptionExample.value),
startDate=toDate(transactionStartDateExample),
finishDate=toDate(transactionFinishDateExample),
balance=BigDecimal(balanceExample.value)))
balance=BigDecimal(balanceExample.value),
status=transactionStatusExample.value))
),
adapterImplementation = Some(AdapterImplementation("- Core", 1))
)
@ -7041,7 +7036,7 @@ trait RestConnector_vMar2019 extends Connector with MdcLoggable {
userId: Option[String],
isPersonalEntity: Boolean,
callContext: Option[CallContext]): OBPReturnType[Box[JValue]] = {
import com.openbankproject.commons.dto.{OutBoundDynamicEntityProcess => OutBound, InBoundDynamicEntityProcess => InBound}
import com.openbankproject.commons.dto.{InBoundDynamicEntityProcess => InBound, OutBoundDynamicEntityProcess => OutBound}
val url = getUrl(callContext, "dynamicEntityProcess")
val req = OutBound(callContext.map(_.toOutboundAdapterCallContext).orNull , operation, entityName, requestBody, entityId, bankId, queryParameters, userId, isPersonalEntity)
val result: OBPReturnType[Box[JValue]] = sendRequest[InBound](url, HttpMethods.POST, req, callContext).map(convertToTuple(callContext))

View File

@ -23,30 +23,24 @@ Osloerstrasse 16/17
Berlin 13359, Germany
*/
import java.util.Date
import code.api.ResourceDocs1_4_0.MessageDocsSwaggerDefinitions
import code.api.berlin.group.v1_3.JSONFactory_BERLIN_GROUP_1_3.getIbanAndBban
import code.api.util.APIUtil.{AdapterImplementation, MessageDoc, OBPReturnType, _}
import code.api.util.ErrorMessages._
import code.api.util.ExampleValue._
import code.api.util.{APIUtil, CallContext, HashUtil, OBPQueryParam}
import code.api.util.{CallContext, OBPQueryParam}
import code.bankconnectors._
import code.customer.internalMapping.MappedCustomerIdMappingProvider
import code.model.dataAccess.internalMapping.MappedAccountIdMappingProvider
import code.util.Helper
import code.util.Helper.MdcLoggable
import com.openbankproject.commons.ExecutionContext.Implicits.global
import com.openbankproject.commons.dto.{InBoundTrait, _}
import com.openbankproject.commons.dto._
import com.openbankproject.commons.model.enums.StrongCustomerAuthenticationStatus.SCAStatus
import com.openbankproject.commons.model.enums._
import com.openbankproject.commons.model.{TopicTrait, _}
import com.openbankproject.commons.util.ReflectUtils
import net.liftweb.common.{Box, _}
import net.liftweb.common._
import net.liftweb.json._
import net.liftweb.util.StringHelpers
import scala.collection.immutable.List
import java.util.Date
import scala.collection.mutable.ArrayBuffer
import scala.concurrent.Future
import scala.language.postfixOps
@ -1486,7 +1480,8 @@ trait StoredProcedureConnector_vDec2019 extends Connector with MdcLoggable {
description=Some(transactionDescriptionExample.value),
startDate=toDate(transactionStartDateExample),
finishDate=toDate(transactionFinishDateExample),
balance=BigDecimal(balanceExample.value))))
balance=BigDecimal(balanceExample.value),
status=transactionStatusExample.value)))
),
adapterImplementation = Some(AdapterImplementation("- Core", 1))
)
@ -1619,7 +1614,8 @@ trait StoredProcedureConnector_vDec2019 extends Connector with MdcLoggable {
description=Some(transactionDescriptionExample.value),
startDate=toDate(transactionStartDateExample),
finishDate=toDate(transactionFinishDateExample),
balance=BigDecimal(balanceExample.value)))
balance=BigDecimal(balanceExample.value),
status=transactionStatusExample.value))
),
adapterImplementation = Some(AdapterImplementation("- Core", 1))
)

View File

@ -68,6 +68,7 @@ class MappedTransaction extends LongKeyedMapper[MappedTransaction] with IdPK wit
object CPOtherAccountSecondaryRoutingAddress extends MappedString(this, 255)
object CPOtherBankRoutingScheme extends MappedString(this, 255)
object CPOtherBankRoutingAddress extends MappedString(this, 255)
object status extends MappedString(this, 20)
//This is a holder for storing data from a previous model version that wasn't set correctly
//e.g. some previous models had counterpartyAccountNumber set to a string that was clearly
@ -154,7 +155,8 @@ class MappedTransaction extends LongKeyedMapper[MappedTransaction] with IdPK wit
transactionDescription,
tStartDate.get,
tFinishDate.get,
newBalance))
newBalance,
status.get))
}
}

View File

@ -1140,7 +1140,8 @@ case class Transaction(
// The date when the money finished changing hands
finishDate : Date,
//the new balance for the bank account
balance : BigDecimal
balance : BigDecimal,
status: String
) {
val bankId = thisAccount.bankId