From 63f10ef2fcbc5776dc5fe76aa0ffcc03eb0e65ca Mon Sep 17 00:00:00 2001 From: Naeem Ullah Date: Mon, 5 Jan 2026 14:30:51 +0500 Subject: [PATCH] Add deposit and loan account services and update controllers Introduced DepositAccountService and LoanAccountService for handling deposit and loan account operations. Updated DepositAccountController and LoanAccountController to use these services and added new endpoints for individual and business deposit/loan creation and approval. Added RestTemplate configuration and updated AconnectURI and TokenBypassURI constants. Modified PermissionDTO to use a String for permissions and adjusted UserService accordingly. Increased requestBody column length in Logger entity. Added Apache HttpClient5 dependency. --- .../controller/DepositAccountController.java | 33 ++++++- .../controller/LoanAccountController.java | 23 +++++ .../client/service/DepositAccountService.java | 88 +++++++++++++++++++ .../client/service/LoanAccountService.java | 41 +++++++++ .../config/RestTemplateConfig.java | 15 ++++ .../usermanagement/dto/PermissionDTO.java | 2 +- .../usermanagement/service/UserService.java | 2 +- common/pom.xml | 6 +- .../configuration/constant/AconnectURI.java | 2 + .../constant/TokenBypassURI.java | 2 + .../common/configuration/model/Logger.java | 2 +- 11 files changed, 211 insertions(+), 5 deletions(-) create mode 100644 aconnect/src/main/java/com/mfsys/aconnect/client/service/DepositAccountService.java create mode 100644 aconnect/src/main/java/com/mfsys/aconnect/client/service/LoanAccountService.java create mode 100644 aconnect/src/main/java/com/mfsys/aconnect/configuration/config/RestTemplateConfig.java diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/controller/DepositAccountController.java b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/DepositAccountController.java index 1b8cc4d..32ef557 100644 --- a/aconnect/src/main/java/com/mfsys/aconnect/client/controller/DepositAccountController.java +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/DepositAccountController.java @@ -1,7 +1,38 @@ package com.mfsys.aconnect.client.controller; -import org.springframework.web.bind.annotation.RestController; +import com.mfsys.aconnect.client.dto.WorkflowRequestDTO; +import com.mfsys.aconnect.client.service.CRMService; +import com.mfsys.aconnect.client.service.DepositAccountService; +import com.mfsys.common.configuration.constant.AconnectURI; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; @RestController public class DepositAccountController { + + @Autowired + private DepositAccountService depositAccountService; + + @Autowired + public DepositAccountController(DepositAccountService depositAccountService) { + this.depositAccountService = depositAccountService; + } + + @PostMapping(AconnectURI.INDIVIDUAL_DEPOSIT_CREATION_URI) + public Object createIndividualDeposit(@RequestBody WorkflowRequestDTO workflowRequestDTO, + @RequestHeader("Authorization") String token) { + return depositAccountService.createIndividualDeposit(workflowRequestDTO, token); + } + + @PatchMapping(AconnectURI.UPDATE_DEPOSIT_CREATION_URI) + public Object updateIndividualDeposit(@RequestBody WorkflowRequestDTO workflowRequestDTO, + @RequestHeader("Authorization") String token) { + return depositAccountService.approvalIndividualDeposit(workflowRequestDTO, token); + } + + @PostMapping(AconnectURI.BUSINESS_DEPOSIT_CREATION_URI) + public Object createBusinessCRM(@RequestBody WorkflowRequestDTO workflowRequestDTO, + @RequestHeader("Authorization") String token) { + return depositAccountService.createBusinessDeposit(workflowRequestDTO, token); + } } diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/controller/LoanAccountController.java b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/LoanAccountController.java index 1b2e27a..2176eea 100644 --- a/aconnect/src/main/java/com/mfsys/aconnect/client/controller/LoanAccountController.java +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/LoanAccountController.java @@ -1,7 +1,30 @@ package com.mfsys.aconnect.client.controller; +import com.mfsys.aconnect.client.dto.WorkflowRequestDTO; +import com.mfsys.aconnect.client.service.DepositAccountService; +import com.mfsys.aconnect.client.service.LoanAccountService; +import com.mfsys.common.configuration.constant.AconnectURI; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RestController; @RestController public class LoanAccountController { + + @Autowired + private LoanAccountService loanAccountService; + + @Autowired + public LoanAccountController(LoanAccountService loanAccountService) { + this.loanAccountService = loanAccountService; + } + + @PostMapping(AconnectURI.INDIVIDUAL_LOAN_CREATION_URI) + public Object createIndividualCRM(@RequestBody WorkflowRequestDTO workflowRequestDTO, + @RequestHeader("Authorization") String token) { + return loanAccountService.createIndividualLoan(workflowRequestDTO, token); + } + } diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/service/DepositAccountService.java b/aconnect/src/main/java/com/mfsys/aconnect/client/service/DepositAccountService.java new file mode 100644 index 0000000..7e33a91 --- /dev/null +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/service/DepositAccountService.java @@ -0,0 +1,88 @@ +package com.mfsys.aconnect.client.service; + +import com.mfsys.aconnect.client.dto.WorkflowRequestDTO; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.*; +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import java.util.Map; + +@Service +public class DepositAccountService { + + @Value("${app.deposit.uri}") + private String depositURI; + + + private final RestTemplate restTemplate; + public DepositAccountService(RestTemplate restTemplate) { + this.restTemplate = restTemplate; + } + + public Object createIndividualDeposit(WorkflowRequestDTO workflowRequestDTO, String token) { + String porOrgacode = workflowRequestDTO.getPorOrgacode(); + String url = depositURI + "/deposit" + "/mongodb/formdata" ; + HttpHeaders headers = new HttpHeaders(); + headers.set("Authorization", token); + headers.set("POR_ORGACODE", porOrgacode); + headers.set("SUS_USERCODE", workflowRequestDTO.getSusUsercode()); + headers.setContentType(MediaType.APPLICATION_JSON); + + HttpEntity entity = new HttpEntity<>(workflowRequestDTO, headers); + + ResponseEntity response = restTemplate.exchange( + url, + HttpMethod.POST, + entity, + Map.class + ); + + return ResponseEntity.status(response.getStatusCode()).body(response.getBody()); + } + + + public Object approvalIndividualDeposit(WorkflowRequestDTO workflowRequestDTO, String token) { + String porOrgacode = workflowRequestDTO.getPorOrgacode(); + String url = depositURI + "/deposit" + "/mongodb/formdata" ; + HttpHeaders headers = new HttpHeaders(); + headers.set("Authorization", token); + headers.set("POR_ORGACODE", porOrgacode); + headers.set("SUS_USERCODE", workflowRequestDTO.getSusUsercode()); + headers.setContentType(MediaType.APPLICATION_JSON); + + HttpEntity entity = new HttpEntity<>(workflowRequestDTO, headers); + restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory()); + + ResponseEntity response = restTemplate.exchange( + url, + HttpMethod.PATCH, + entity, + Map.class + ); + + return ResponseEntity.status(response.getStatusCode()).body(response.getBody()); + } + + public Object createBusinessDeposit(WorkflowRequestDTO workflowRequestDTO, String token) { + String porOrgacode = workflowRequestDTO.getPorOrgacode(); + String url = depositURI + "/deposit" + "/mongodb/formdata" ; + HttpHeaders headers = new HttpHeaders(); + headers.set("Authorization", token); + headers.set("POR_ORGACODE", porOrgacode); + headers.set("SUS_USERCODE", workflowRequestDTO.getSusUsercode()); + headers.setContentType(MediaType.APPLICATION_JSON); + + HttpEntity entity = new HttpEntity<>(workflowRequestDTO, headers); + + ResponseEntity response = restTemplate.exchange( + url, + HttpMethod.POST, + entity, + Map.class + ); + + return ResponseEntity.status(response.getStatusCode()).body(response.getBody()); + } +} diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/service/LoanAccountService.java b/aconnect/src/main/java/com/mfsys/aconnect/client/service/LoanAccountService.java new file mode 100644 index 0000000..06953d4 --- /dev/null +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/service/LoanAccountService.java @@ -0,0 +1,41 @@ +package com.mfsys.aconnect.client.service; + +import com.mfsys.aconnect.client.dto.WorkflowRequestDTO; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.*; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import java.util.Map; + +@Service +public class LoanAccountService { + + @Value("${app.loan.uri}") + private String loanURI; + + private final RestTemplate restTemplate = new RestTemplate(); + + + public Object createIndividualLoan(WorkflowRequestDTO workflowRequestDTO, String token) { + String porOrgacode = workflowRequestDTO.getPorOrgacode(); + String url = loanURI + "/loan" + "/mongodb/formdata" ; + HttpHeaders headers = new HttpHeaders(); + headers.set("Authorization", token); + headers.set("POR_ORGACODE", porOrgacode); + headers.set("SUS_USERCODE", workflowRequestDTO.getSusUsercode()); + headers.setContentType(MediaType.APPLICATION_JSON); + + HttpEntity entity = new HttpEntity<>(workflowRequestDTO, headers); + + ResponseEntity response = restTemplate.exchange( + url, + HttpMethod.POST, + entity, + Map.class + ); + + return ResponseEntity.status(response.getStatusCode()).body(response.getBody()); + } + +} diff --git a/aconnect/src/main/java/com/mfsys/aconnect/configuration/config/RestTemplateConfig.java b/aconnect/src/main/java/com/mfsys/aconnect/configuration/config/RestTemplateConfig.java new file mode 100644 index 0000000..40f281a --- /dev/null +++ b/aconnect/src/main/java/com/mfsys/aconnect/configuration/config/RestTemplateConfig.java @@ -0,0 +1,15 @@ +package com.mfsys.aconnect.configuration.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; +import org.springframework.web.client.RestTemplate; + +@Configuration +public class RestTemplateConfig { + + @Bean + public RestTemplate restTemplate() { + return new RestTemplate(new HttpComponentsClientHttpRequestFactory()); + } +} diff --git a/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/dto/PermissionDTO.java b/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/dto/PermissionDTO.java index 22def00..77c8fcb 100644 --- a/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/dto/PermissionDTO.java +++ b/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/dto/PermissionDTO.java @@ -5,6 +5,6 @@ import java.util.List; @Data public class PermissionDTO { - private List permissions; + private String permissions; private String userId; } diff --git a/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/service/UserService.java b/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/service/UserService.java index ec9b62e..25040f7 100644 --- a/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/service/UserService.java +++ b/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/service/UserService.java @@ -109,7 +109,7 @@ public class UserService { PermissionDTO dto = new PermissionDTO(); dto.setUserId(userId); if (user.getPermissions() != null && !user.getPermissions().isEmpty()) { - dto.setPermissions(java.util.Arrays.asList(user.getPermissions().split(","))); + dto.setPermissions((user.getPermissions())); } return dto; } diff --git a/common/pom.xml b/common/pom.xml index 4742aee..69707fc 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -47,7 +47,11 @@ org.springframework.boot spring-boot-starter-web - + + org.apache.httpcomponents.client5 + httpclient5 + 5.2.1 + org.projectlombok lombok diff --git a/common/src/main/java/com/mfsys/common/configuration/constant/AconnectURI.java b/common/src/main/java/com/mfsys/common/configuration/constant/AconnectURI.java index 2bc59b2..d0d600a 100644 --- a/common/src/main/java/com/mfsys/common/configuration/constant/AconnectURI.java +++ b/common/src/main/java/com/mfsys/common/configuration/constant/AconnectURI.java @@ -29,6 +29,8 @@ public interface AconnectURI { String INDIVIDUAL_CRM_CREATION_URI = CRM + INDIVIDUAL + "/create"; String BUSINESS_CRM_CREATION_URI = CRM + BUSINESS + "/create"; String INDIVIDUAL_DEPOSIT_CREATION_URI = DEPOSIT + INDIVIDUAL + "/create"; + String UPDATE_DEPOSIT_CREATION_URI = DEPOSIT + INDIVIDUAL + "/approval"; + String BUSINESS_DEPOSIT_CREATION_URI = DEPOSIT + BUSINESS + "/create"; String INDIVIDUAL_LOAN_CREATION_URI = LOAN + INDIVIDUAL + "/create"; diff --git a/common/src/main/java/com/mfsys/common/configuration/constant/TokenBypassURI.java b/common/src/main/java/com/mfsys/common/configuration/constant/TokenBypassURI.java index 70b51ce..649406a 100644 --- a/common/src/main/java/com/mfsys/common/configuration/constant/TokenBypassURI.java +++ b/common/src/main/java/com/mfsys/common/configuration/constant/TokenBypassURI.java @@ -21,7 +21,9 @@ public interface TokenBypassURI { "/aconnect/crm/individual/create", "/aconnect/crm/business/create", "/aconnect/deposit/individual/create", + "/aconnect/deposit/individual/approval", "/aconnect/deposit/business/create", + "/aconnect/loan/individual/create", "/aconnect/deposit/transactions/cancel", "/aconnect/generalledger/transactions/cancel", diff --git a/common/src/main/java/com/mfsys/common/configuration/model/Logger.java b/common/src/main/java/com/mfsys/common/configuration/model/Logger.java index 16b6c6c..460e365 100644 --- a/common/src/main/java/com/mfsys/common/configuration/model/Logger.java +++ b/common/src/main/java/com/mfsys/common/configuration/model/Logger.java @@ -24,7 +24,7 @@ public class Logger { @Column(name = "REQUEST_URI", nullable = false, length = 200) private String requestUri; - @Column(name = "REQUEST_BODY", length = 4000) + @Column(name = "REQUEST_BODY", length = 10000) private String requestBody; @Column(name = "REMOTE_IP", nullable = false, length = 50)