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.
ACONNECT-DEPOSITACCOUNT-API
Naeem Ullah 4 weeks ago
parent 2426fb7c7e
commit 63f10ef2fc

@ -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);
}
}

@ -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);
}
}

@ -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<WorkflowRequestDTO> entity = new HttpEntity<>(workflowRequestDTO, headers);
ResponseEntity<Map> 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<WorkflowRequestDTO> entity = new HttpEntity<>(workflowRequestDTO, headers);
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
ResponseEntity<Map> 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<WorkflowRequestDTO> entity = new HttpEntity<>(workflowRequestDTO, headers);
ResponseEntity<Map> response = restTemplate.exchange(
url,
HttpMethod.POST,
entity,
Map.class
);
return ResponseEntity.status(response.getStatusCode()).body(response.getBody());
}
}

@ -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<WorkflowRequestDTO> entity = new HttpEntity<>(workflowRequestDTO, headers);
ResponseEntity<Map> response = restTemplate.exchange(
url,
HttpMethod.POST,
entity,
Map.class
);
return ResponseEntity.status(response.getStatusCode()).body(response.getBody());
}
}

@ -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());
}
}

@ -5,6 +5,6 @@ import java.util.List;
@Data
public class PermissionDTO {
private List<String> permissions;
private String permissions;
private String userId;
}

@ -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;
}

@ -47,7 +47,11 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
<version>5.2.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>

@ -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";

@ -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",

@ -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)

Loading…
Cancel
Save