From 3548361cdaaf4f23af845b42b8c6c3bf227adf0b Mon Sep 17 00:00:00 2001 From: hongwei Date: Fri, 13 Jun 2025 13:43:27 +0200 Subject: [PATCH] refactor/add transaction status field to various models and update related examples --- .../MessageDocsSwaggerDefinitions.scala | 8 +++---- .../scala/code/api/util/ExampleValue.scala | 5 +++- .../actor/SouthSideActorOfAkkaConnector.scala | 10 ++++---- .../rabbitmq/RabbitMQConnector_vOct2024.scala | 7 ++++-- .../rest/RestConnector_vMar2019.scala | 23 ++++++++----------- .../StoredProcedureConnector_vDec2019.scala | 20 +++++++--------- .../code/transaction/MappedTransaction.scala | 4 +++- .../commons/model/CommonModel.scala | 3 ++- 8 files changed, 39 insertions(+), 41 deletions(-) diff --git a/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/MessageDocsSwaggerDefinitions.scala b/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/MessageDocsSwaggerDefinitions.scala index 57f2e9c60..356864a65 100644 --- a/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/MessageDocsSwaggerDefinitions.scala +++ b/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/MessageDocsSwaggerDefinitions.scala @@ -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("","") diff --git a/obp-api/src/main/scala/code/api/util/ExampleValue.scala b/obp-api/src/main/scala/code/api/util/ExampleValue.scala index c9c00d99d..e02db9cf2 100644 --- a/obp-api/src/main/scala/code/api/util/ExampleValue.scala +++ b/obp-api/src/main/scala/code/api/util/ExampleValue.scala @@ -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) diff --git a/obp-api/src/main/scala/code/bankconnectors/akka/actor/SouthSideActorOfAkkaConnector.scala b/obp-api/src/main/scala/code/bankconnectors/akka/actor/SouthSideActorOfAkkaConnector.scala index defaaf912..b9b9966d4 100644 --- a/obp-api/src/main/scala/code/bankconnectors/akka/actor/SouthSideActorOfAkkaConnector.scala +++ b/obp-api/src/main/scala/code/bankconnectors/akka/actor/SouthSideActorOfAkkaConnector.scala @@ -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 ) } } diff --git a/obp-api/src/main/scala/code/bankconnectors/rabbitmq/RabbitMQConnector_vOct2024.scala b/obp-api/src/main/scala/code/bankconnectors/rabbitmq/RabbitMQConnector_vOct2024.scala index 5c2954822..9759da0ae 100644 --- a/obp-api/src/main/scala/code/bankconnectors/rabbitmq/RabbitMQConnector_vOct2024.scala +++ b/obp-api/src/main/scala/code/bankconnectors/rabbitmq/RabbitMQConnector_vOct2024.scala @@ -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)) ) diff --git a/obp-api/src/main/scala/code/bankconnectors/rest/RestConnector_vMar2019.scala b/obp-api/src/main/scala/code/bankconnectors/rest/RestConnector_vMar2019.scala index 92343ceb1..ca92922ae 100644 --- a/obp-api/src/main/scala/code/bankconnectors/rest/RestConnector_vMar2019.scala +++ b/obp-api/src/main/scala/code/bankconnectors/rest/RestConnector_vMar2019.scala @@ -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)) diff --git a/obp-api/src/main/scala/code/bankconnectors/storedprocedure/StoredProcedureConnector_vDec2019.scala b/obp-api/src/main/scala/code/bankconnectors/storedprocedure/StoredProcedureConnector_vDec2019.scala index b1675d8b5..ddf4c75c6 100644 --- a/obp-api/src/main/scala/code/bankconnectors/storedprocedure/StoredProcedureConnector_vDec2019.scala +++ b/obp-api/src/main/scala/code/bankconnectors/storedprocedure/StoredProcedureConnector_vDec2019.scala @@ -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)) ) diff --git a/obp-api/src/main/scala/code/transaction/MappedTransaction.scala b/obp-api/src/main/scala/code/transaction/MappedTransaction.scala index 899eb1374..5ff7ab1bb 100644 --- a/obp-api/src/main/scala/code/transaction/MappedTransaction.scala +++ b/obp-api/src/main/scala/code/transaction/MappedTransaction.scala @@ -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)) } } diff --git a/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModel.scala b/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModel.scala index ef058b261..ba46de514 100644 --- a/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModel.scala +++ b/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModel.scala @@ -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