From 34f353410ef0ecc4ebe54dc921bb93475c52a3ed Mon Sep 17 00:00:00 2001 From: Omar Shahbaz Date: Mon, 23 Feb 2026 11:12:01 +0500 Subject: [PATCH] [UCOD][PRE-PROD][11]-Onboard Customer implementation --- .../uco/dto/SignupStep3RequestModel.java | 5 +++- .../DepositAccountNotReadyException.java | 10 +++++++ .../mfsys/uco/service/UcoAccountService.java | 27 ++++++++++++++++--- 3 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/mfsys/uco/exception/DepositAccountNotReadyException.java diff --git a/src/main/java/com/mfsys/uco/dto/SignupStep3RequestModel.java b/src/main/java/com/mfsys/uco/dto/SignupStep3RequestModel.java index 6252901..77f18bc 100644 --- a/src/main/java/com/mfsys/uco/dto/SignupStep3RequestModel.java +++ b/src/main/java/com/mfsys/uco/dto/SignupStep3RequestModel.java @@ -1,5 +1,6 @@ package com.mfsys.uco.dto; +import com.fasterxml.jackson.annotation.JsonProperty; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -17,7 +18,8 @@ public class SignupStep3RequestModel { private String address; private String identificationType; private String identificationNumber; - private boolean isKycAdded; + @JsonProperty("isKycAdded") + private boolean kycAdded; private String dmpProdcode; private String kycType; private String kycDocumentId1; // base64 encoded @@ -25,4 +27,5 @@ public class SignupStep3RequestModel { private String userRole; private String channelCode; private String porOrgacode; + private String plcLocacode; } diff --git a/src/main/java/com/mfsys/uco/exception/DepositAccountNotReadyException.java b/src/main/java/com/mfsys/uco/exception/DepositAccountNotReadyException.java new file mode 100644 index 0000000..c41af63 --- /dev/null +++ b/src/main/java/com/mfsys/uco/exception/DepositAccountNotReadyException.java @@ -0,0 +1,10 @@ +package com.mfsys.uco.exception; + +import com.mfsys.comm.exception.ApplicationException; +import com.mfsys.comm.exception.ERRCode; + +public class DepositAccountNotReadyException extends ApplicationException { + public DepositAccountNotReadyException() { + super(null, ERRCode.DEPOSIT_ACCOUNT_NOT_READY, null); + } +} diff --git a/src/main/java/com/mfsys/uco/service/UcoAccountService.java b/src/main/java/com/mfsys/uco/service/UcoAccountService.java index 4b52e05..e2a09a2 100644 --- a/src/main/java/com/mfsys/uco/service/UcoAccountService.java +++ b/src/main/java/com/mfsys/uco/service/UcoAccountService.java @@ -12,6 +12,7 @@ import com.mfsys.uco.dto.SignupStep3RequestModel; import com.mfsys.uco.dto.webclientdto.AccountDetail; import com.mfsys.uco.exception.AccountDoesntExistsException; import com.mfsys.uco.exception.CustomerAccountOpeningNotAllowedException; +import com.mfsys.uco.exception.DepositAccountNotReadyException; import com.mfsys.uco.exception.UserAlreadyRegisteredException; import com.mfsys.uco.model.AccountId; import com.mfsys.uco.model.CustomerProfile; @@ -96,8 +97,8 @@ public class UcoAccountService { "CIT_IDENVALUE", signupStep3RequestModel.getIdentificationNumber(), "PAD_ADRSMOBPHONE", signupStep3RequestModel.getPhone(), "POR_ORGACODE", signupStep3RequestModel.getPorOrgacode(), - "SUS_USERCODE", "01", - "PLC_LOCACODE", "2003", + "SUS_USERCODE", signupStep3RequestModel.getChannelCode(), + "PLC_LOCACODE", signupStep3RequestModel.getPlcLocacode(), "DMP_PRODCODE", signupStep3RequestModel.getDmpProdcode() ), UCOURI.CUSTOMER_ONBOARDING, @@ -106,7 +107,11 @@ public class UcoAccountService { String cmpCustcode = String.valueOf(cmpCustcodeReturn.get("cmpCustcode")); System.out.println(cmpCustcode); - AccountDetail accountDetail = fetchdepositAccountFromCiihive(porOrgacode, cmpCustcode).get(0); + List depositAccounts = fetchDepositAccountWithRetry(porOrgacode, cmpCustcode); + if (depositAccounts.isEmpty()) { + throw new DepositAccountNotReadyException(); + } + AccountDetail accountDetail = depositAccounts.get(0); CustomerProfile customerProfile = CustomerProfile.builder().cmpCustcode(accountDetail.getCmpCustcode()).cmpEmail(signupStep3RequestModel.getEmail()) .cmpName(signupStep3RequestModel.getName()).cmpIsKycVerified(signupStep3RequestModel.isKycAdded()) .pitIdencode(signupStep3RequestModel.getIdentificationType()).pitIdenvalue(signupStep3RequestModel.getIdentificationNumber()) @@ -151,8 +156,22 @@ public class UcoAccountService { ObjectMapper objectMapper = new ObjectMapper(); return objectMapper.convertValue(map, objectMapper.getTypeFactory().constructCollectionType(List.class, AccountDetail.class)); + } - + private List fetchDepositAccountWithRetry(String porOrgacode, String cmpCustcode) { + int maxAttempts = 3; + int delayMs = 2000; + List accounts = fetchdepositAccountFromCiihive(porOrgacode, cmpCustcode); + for (int attempt = 1; attempt < maxAttempts && accounts.isEmpty(); attempt++) { + try { + Thread.sleep(delayMs); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + break; + } + accounts = fetchdepositAccountFromCiihive(porOrgacode, cmpCustcode); + } + return accounts; } public Object fetchExchangeRate(String porOrgacode) { -- 2.32.0