Commit[1]:Revamping User Controller

development
Omar Shahbaz 2 weeks ago
parent e504b4bc49
commit 6e877435d5

@ -9,9 +9,9 @@
<relativePath/> <!-- lookup parent from repository --> <relativePath/> <!-- lookup parent from repository -->
</parent> </parent>
<groupId>com.mfsys</groupId> <groupId>com.mfsys</groupId>
<artifactId>uco-bs-poc</artifactId> <artifactId>uco</artifactId>
<version>0.0.1-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
<name>uco-bs-poc</name> <name>uco</name>
<description>UCO-BS-POC Spring Boot Project</description> <description>UCO-BS-POC Spring Boot Project</description>
<url/> <url/>
<licenses> <licenses>
@ -82,6 +82,10 @@
<groupId>org.hibernate.validator</groupId> <groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId> <artifactId>hibernate-validator</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
</dependencies> </dependencies>

@ -1,13 +1,13 @@
package com.mfsys.uco_bs_poc; package com.mfsys.uco;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication @SpringBootApplication
public class UcoBsPocApplication { public class UcoApplication {
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(UcoBsPocApplication.class, args); SpringApplication.run(UcoApplication.class, args);
} }
} }

@ -0,0 +1,6 @@
package com.mfsys.uco.constants;
public interface UCOURI {
String ONBOARD_CUSTOMER = "/auth/user/authenticate/onboardCutomer";
}

@ -0,0 +1,30 @@
package com.mfsys.uco.controller;
import com.mfsys.uco.constants.UCOURI;
import com.mfsys.uco.request.SignupStep3Request;
import com.mfsys.uco.service.UcoAccountService;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping
public class UserController {
private final UcoAccountService ucoAccountService;
public UserController(UcoAccountService ucoAccountService) {
this.ucoAccountService = ucoAccountService;
}
@PostMapping(UCOURI.ONBOARD_CUSTOMER)
public ResponseEntity<HttpStatus> customerOnBoarding(@RequestBody SignupStep3Request signupStep3Request) {
ucoAccountService.onBoardCustomer(signupStep3Request);
return ResponseEntity.ok(HttpStatus.OK);
}
}

@ -0,0 +1,67 @@
package com.mfsys.uco.model;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDate;
@Entity
@Table(name = "BN_CS_MP_CUSTOMERPROFILE")
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class CustomerProfile {
@Id
@Column(name = "POR_ORGACODE")
protected String porOrgacode;
@Column(name = "CMP_CUSTCODE")
protected String cmpCustcode;
@Column(name = "PIT_IDENVALUE")
protected String pitIdenvalue;
@Column(name = "PIT_IDENCODE")
protected String pitIdencode;
@Column(name = "PAD_ADRSMOBPHONE")
protected String padAdrsmobphone;
@Column(name = "KYC_RENEWAL_DATE")
protected LocalDate kycRenewalDate;
@Column(name = "CMP_ISKYC_VERIFIED")
protected boolean cmpIsKycVerified = false;
@Column(name = "CMP_TRAN_PIN")
protected String cmpTranpin;
@Column(name = "CMP_UNVERIFIED_TRAN_PIN")
protected String cmpUnverifiedTranpin;
@Column(name = "CMP_TRAN_PIN_VERIFIED")
protected boolean cmpTranpinVerfied = false;
@Column(name = "CMP_EMAIL")
private String cmpEmail;
@Column(name = "CMP_NAME")
private String cmpName;
@Column(name = "CMP_USERNAME")
private String cmpUserName;
@Column(name = "CMP_ADDRESS")
private String cmpAddress;
@Column(name = "CMP_CUSTIMG")
@Lob
private String cmpCustImage;
}

@ -0,0 +1,13 @@
package com.mfsys.uco.repository;
import com.mfsys.uco.model.CustomerProfile;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
@Repository
public interface CustomerProfileRepository extends JpaRepository<CustomerProfile, String> {
@Query("SELECT c FROM CustomerProfile c WHERE c.porOrgacode =:porOrgacode and c.cmpEmail = :email")
CustomerProfile findbyEmail(String porOrgacode, String email);
}

@ -0,0 +1,23 @@
package com.mfsys.uco.request;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AddAccountRequest {
private String porOrgacode;
private String email;
private String title;
private String dmpProdcode;
private String channelCode;
}

@ -0,0 +1,33 @@
package com.mfsys.uco.request;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class BeneficiaryRequest {
private String porOrgacode;
private String email;
private String pcrCurrcode;
private String pcrCurrdesc;
private String pcrCurrshort;
private String mbmBkmstitleRef;
private String mbmBkmsnumberRef;
private String refPhoneNumber;
private String refEmail;
private String refNickName;
}

@ -0,0 +1,30 @@
package com.mfsys.uco.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ChangeTransactionPinRequest {
private String oldTransPincode;
private String newTransPincode;
private String channelCode;
private String pctCstycode;
private String porOrgacode;
private String cmpCustcode;
private boolean isOtpRequired;
private String pinType;
}

@ -0,0 +1,28 @@
package com.mfsys.uco.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class CreateTransactionPinRequest {
private String newTransPincode;
private String channelCode;
private String pctCstycode;
private String porOrgacode;
private String cmpCustcode;
private boolean isOtpRequired;
private String pinType;
}

@ -0,0 +1,30 @@
package com.mfsys.uco.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class OTPRequest {
private boolean isOtpRequired;
private String email;
private String phone;
private String channelCode;
private String porOrgacode;
private String username;
private String pinType;
private String subject;
}

@ -0,0 +1,43 @@
package com.mfsys.uco.request;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SignupStep3Request {
private String username;
private String email;
private String phone;
private String name;
private String address;
private String identificationType;
private String identificationNumber;
private boolean isKycAdded;
private String dmpProdcode;
private String kycType;
private String kycDocumentId1; // base64 encoded
private String kycDocumentId2; // base64 encoded
private String userRole;
private String channelCode;
private String porOrgacode;
}

@ -0,0 +1,23 @@
package com.mfsys.uco.request;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TransactionHistoryRequest {
private String porOrgacode;
private String mbmBkmsnumber;
private String sgtGntrvaluedatefrom;
private String sgtGntrvaluedateto;
private String type; // Expected to be "pdf"
}

@ -0,0 +1,20 @@
package com.mfsys.uco.request;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class UpdateProfileRequest {
private String porOrgacode;
private String cmpCustcode;
private String cmpCustImage;
}

@ -0,0 +1,27 @@
package com.mfsys.uco.request;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class VerifyPinRequest {
String channelCode;
String pctCstycode;
String porOrgacode;
String cmpCustcode;
String email;
String obpPincode;
String pinType;
}

@ -0,0 +1,19 @@
package com.mfsys.uco.request;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ViewBalanceRequest {
String cmpCustcode;
String porOrgacode;
String mbmBkmsNumber;
}

@ -0,0 +1,86 @@
package com.mfsys.uco.response;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Map;
@Data
@RequiredArgsConstructor
@AllArgsConstructor
@Builder
public class AccountDetailResponse {
protected String porOrgacode;
protected String mbmBkmsnumber;
protected String mbmBkmstitle;
protected String dmpProddesc;
protected String plcLocadesc;
protected String pcrCurrcode;
protected String pcrCurrshort;
protected String mbmBkmsopendate;
protected String pcrCurrdesc;
protected String cmpCustcode;
protected boolean mbmBkmsclosed;
protected String pctCstycode;
protected BigDecimal mbmBkmsbalance;
protected Map<String, BigDecimal> charges = Map.of();
protected String dmpProdcode;
protected boolean cmpBlacklisted;
protected String plcLocacode;
protected boolean mbmNotificationService;
protected String dmpCredittype;
protected BigDecimal perEratrateact;
protected LocalDate kycRenewalDate;
protected String padAdrsmobphone;
protected boolean btaRolloverSpecialRate;
private String pasAcstcode;
private BigDecimal btaBookingamount;
private BigDecimal bdaDpacblockamt;
private boolean bdaDpacblocked;
private String pbdBankname;
private String pbbBranchname;
private String pbbBranchcountry;
private String pbbBranchcity;
private String pcaGlaccode;
private String accJointStatus;
private String accAttortype;
}

@ -0,0 +1,24 @@
package com.mfsys.uco.response;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AccountInquiryResponse {
private String mbmBkmstitle;
private String mbmBkmsnumber;
private String pcrCurrcode;
private String pcrCurrdesc;
private String pcrCurrshort;
}

@ -0,0 +1,33 @@
package com.mfsys.uco.response;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class BeneficiaryResponse {
private String porOrgacode;
private String email;
private String pcrCurrcode;
private String pcrCurrdesc;
private String pcrCurrshort;
private String mbmBkmstitleRef;
private String mbmBkmsnumberRef;
private String refPhoneNumber;
private String refEmail;
private String refNickName;
}

@ -0,0 +1,42 @@
package com.mfsys.uco.response;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.mfsys.uco.model.CustomerProfile;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class CustomerAccountActivityResponse {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String porOrgacode;
private String cmpCustcode;
private LocalDateTime date;
private String channal;
private String deviceName;
private String activity;
@JsonIgnore
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name = "POR_ORGACODE", referencedColumnName = "POR_ORGACODE", insertable = false, updatable = false),
@JoinColumn(name = "CMP_CUSTCODE", referencedColumnName = "CMP_CUSTCODE", insertable = false, updatable = false)})
private CustomerProfile customer;
}

@ -0,0 +1,47 @@
package com.mfsys.uco.response;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDate;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class CustomerProfileResponse {
protected String porOrgacode;
protected String cmpCustcode;
protected String pitIdenvalue;
protected String pitIdencode;
protected String padAdrsmobphone;
protected LocalDate kycRenewalDate;
protected boolean cmpIsKycVerified = false;
protected String cmpTranpin;
protected String cmpUnverifiedTranpin;
protected boolean cmpTranpinVerfied = false;
private String cmpEmail;
private String cmpName;
private String cmpUserName;
private String cmpAddress;
private String cmpCustImage;
}

@ -0,0 +1,30 @@
package com.mfsys.uco.response;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class DepositAccountTransactionResponse {
private String tranID;
private String sgtGntrCreatedAt;
private String sgtGntrNarration;
private String sgtGntrvaluedate;
private String deposit;
private String withdrawal;
private String status;
private String sgtGntramt;
}

@ -0,0 +1,15 @@
package com.mfsys.uco.response;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ViewBalanceResponse {
private Double mbmBkmsbalance;
}

@ -0,0 +1,17 @@
package com.mfsys.uco.service;
import com.mfsys.uco.model.CustomerProfile;
import com.mfsys.uco.repository.CustomerProfileRepository;
public class CustomerProfileService {
private final CustomerProfileRepository customerProfileRepository;
public CustomerProfileService(CustomerProfileRepository customerProfileRepository) {
this.customerProfileRepository = customerProfileRepository;
}
public CustomerProfile fetchCustcodeBasedOnEmail(String porOrgacode, String email) {
return customerProfileRepository.findbyEmail(porOrgacode, email);
}
}

@ -0,0 +1,17 @@
package com.mfsys.uco.service;
import com.mfsys.uco.request.SignupStep3Request;
import org.springframework.stereotype.Service;
@Service
public class UcoAccountService {
public void onBoardCustomer(SignupStep3Request signupStep3Request) {
//check if user already present in db
//interservice call to crmService
//fetch AccountDetail
//create customer profile and save in CustomerProfile Table
//build UcoAccount and save in UcoAccount Table
//call updateCustomerApplication using arguments of map email and porOrgacode
}
}

@ -1,5 +1,5 @@
#application configuration #application configuration
spring.application.name=uco-bs-poc spring.application.name=uco
server.port=9090 server.port=9090
server.servlet.context-path=/uco server.servlet.context-path=/uco

@ -1,4 +1,4 @@
package com.mfsys.uco_bs_poc; package com.mfsys.uco;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
Loading…
Cancel
Save