From 2426fb7c7e68f7d62f15e9c4b8e4b587dcde0c17 Mon Sep 17 00:00:00 2001 From: Naeem Ullah Date: Mon, 5 Jan 2026 10:04:29 +0500 Subject: [PATCH] CRM Api added CRM Api added --- .../client/controller/CRMController.java | 27 ++++++++ .../client/dto/WorkflowRequestDTO.java | 39 ++++++++++++ .../aconnect/client/service/CRMService.java | 61 +++++++++++++++++++ .../main/resources/application-dev.properties | 2 + .../configuration/constant/AconnectURI.java | 11 ++++ .../constant/TokenBypassURI.java | 5 +- 6 files changed, 144 insertions(+), 1 deletion(-) create mode 100644 aconnect/src/main/java/com/mfsys/aconnect/client/dto/WorkflowRequestDTO.java create mode 100644 aconnect/src/main/java/com/mfsys/aconnect/client/service/CRMService.java diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/controller/CRMController.java b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/CRMController.java index 28a03fc..f12b7d0 100644 --- a/aconnect/src/main/java/com/mfsys/aconnect/client/controller/CRMController.java +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/CRMController.java @@ -1,7 +1,34 @@ package com.mfsys.aconnect.client.controller; +import com.mfsys.aconnect.client.dto.WorkflowRequestDTO; +import com.mfsys.aconnect.client.service.CRMService; +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 CRMController { + + @Autowired + private CRMService crmService; + + @Autowired + public CRMController(CRMService crmService) { + this.crmService = crmService; + } + + @PostMapping(AconnectURI.INDIVIDUAL_CRM_CREATION_URI) + public Object createIndividualCRM(@RequestBody WorkflowRequestDTO workflowRequestDTO, + @RequestHeader("Authorization") String token) { + return crmService.createIndividualCRM(workflowRequestDTO, token); + } + + @PostMapping(AconnectURI.BUSINESS_CRM_CREATION_URI) + public Object createBusinessCRM(@RequestBody WorkflowRequestDTO workflowRequestDTO, + @RequestHeader("Authorization") String token) { + return crmService.createBusinessCRM(workflowRequestDTO, token); + } } diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/dto/WorkflowRequestDTO.java b/aconnect/src/main/java/com/mfsys/aconnect/client/dto/WorkflowRequestDTO.java new file mode 100644 index 0000000..5d71e2a --- /dev/null +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/dto/WorkflowRequestDTO.java @@ -0,0 +1,39 @@ +package com.mfsys.aconnect.client.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class WorkflowRequestDTO { + + private String workFlowId; + + @JsonProperty("SUS_USERCODE") + private String susUsercode; + + private Map filesMap; + private List autoIncrementFields; + private String formId; + private String postProcessFormId; + private String payload; + private String operation; + + @JsonProperty("POR_ORGACODE") + private String porOrgacode; + + private List> uniqueConstraints; + private List formCounters; + + @Data + public static class AutoIncrementField { + private String key; + private String type; + private List position; + private Boolean incrementByCategoryTag; + private Boolean incrementIfFlowTerminated; + } +} + diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/service/CRMService.java b/aconnect/src/main/java/com/mfsys/aconnect/client/service/CRMService.java new file mode 100644 index 0000000..857851e --- /dev/null +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/service/CRMService.java @@ -0,0 +1,61 @@ +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 CRMService { + + @Value("${app.crm.uri}") + private String crmURI; + + private final RestTemplate restTemplate = new RestTemplate(); + public Object createIndividualCRM(WorkflowRequestDTO workflowRequestDTO, String token) { + String porOrgacode = workflowRequestDTO.getPorOrgacode(); + String url = crmURI + "/crm" + "/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 createBusinessCRM(WorkflowRequestDTO workflowRequestDTO, String token) { + String porOrgacode = workflowRequestDTO.getPorOrgacode(); + String url = crmURI + "/crm" + "/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/resources/application-dev.properties b/aconnect/src/main/resources/application-dev.properties index 5ff9154..778d675 100644 --- a/aconnect/src/main/resources/application-dev.properties +++ b/aconnect/src/main/resources/application-dev.properties @@ -2,5 +2,7 @@ app.security.uri=http://localhost:9090/security/auth/user app.deposit.uri=http://localhost:9095 app.generalledger.uri=http://localhost:9093 app.onlinebanking.uri=http://localhost:9099 +app.crm.uri=http://localhost:9096 +app.loan.uri=http://localhost:9094 app.organization.uri=0005 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 7448689..2bc59b2 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 @@ -4,11 +4,15 @@ public interface AconnectURI { String ACONNECT = "/aconnect"; String REFRESH_TOKEN = "/refreshtoken"; String DEPOSIT = "/deposit"; + String CRM = "/crm"; + String LOAN = "/loan"; String GENERALLEDGER = "/generalledger"; String SIGNIN = "/signin"; String TRANSACTION_URI = "/transactions"; String CANCEL_URI = "/cancel"; String REJECT_URI = "/rejection"; + String INDIVIDUAL = "/individual"; + String BUSINESS = "/business"; String REVERSE_URI = "/reversal"; String AUTHORIZATION_URI = "/authorizations"; String DEPOSIT_AUTHORIZATION_URI = DEPOSIT + AUTHORIZATION_URI; @@ -22,6 +26,13 @@ public interface AconnectURI { String TRANSACTION_GL_GL_URI = TRANSACTION_URI + "/gltogls"; String ACCOUNT_TO_ACCOUNT_TRANSACTION_URI = TRANSACTION_URI + "/accounttoaccount"; String GL_TO_ACCOUNT_TRANSACTION_URI = TRANSACTION_URI + "/gl-account"; + 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 BUSINESS_DEPOSIT_CREATION_URI = DEPOSIT + BUSINESS + "/create"; + + String INDIVIDUAL_LOAN_CREATION_URI = LOAN + INDIVIDUAL + "/create"; + String TRANSACTION_CANCEL_URI = TRANSACTION_URI + CANCEL_URI + "/nodes/{nodeId}/trannums/{sgtGntrtranlink}"; String DEPOSIT_TRANSACTION_REJECT_URI = DEPOSIT + TRANSACTION_URI + REJECT_URI; String GENERALLEDGER_TRANSACTION_REJECT_URI = GENERALLEDGER + TRANSACTION_URI + REJECT_URI; 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 a123cbf..70b51ce 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 @@ -18,7 +18,10 @@ public interface TokenBypassURI { "/aconnect/deposit/authorizations", "/aconnect/generalledger/authorizations", "/aconnect/deposit/authorizations", - + "/aconnect/crm/individual/create", + "/aconnect/crm/business/create", + "/aconnect/deposit/individual/create", + "/aconnect/deposit/business/create", "/aconnect/deposit/transactions/cancel", "/aconnect/generalledger/transactions/cancel",