From e66468f5752d2e8819fc7bbbc68e749d12c63c22 Mon Sep 17 00:00:00 2001 From: Omar Shahbaz Date: Tue, 24 Mar 2026 14:14:37 +0500 Subject: [PATCH] [UCOD][PRE-PROD][21]-Create Transaction Verify Otp api response --- .../mfsys/uco/controller/UserController.java | 5 ++-- .../mfsys/uco/dto/TransactionOtpResponse.java | 23 +++++++++++++++++++ .../TranVerificationPinException.java | 7 ++++++ .../mfsys/uco/repository/PinRepository.java | 3 +++ .../uco/service/TransactionPinService.java | 19 ++++++++++----- 5 files changed, 48 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/mfsys/uco/dto/TransactionOtpResponse.java create mode 100644 src/main/java/com/mfsys/uco/exception/TranVerificationPinException.java diff --git a/src/main/java/com/mfsys/uco/controller/UserController.java b/src/main/java/com/mfsys/uco/controller/UserController.java index 5452a4d..b459541 100644 --- a/src/main/java/com/mfsys/uco/controller/UserController.java +++ b/src/main/java/com/mfsys/uco/controller/UserController.java @@ -118,9 +118,8 @@ public class UserController { } @PostMapping(UCOURI.CREATE_TRAN_PIN) - public ResponseEntity createTransactionPin(@RequestBody CreateTransactionPinRequest request) { - transactionPinService.createTransactionPin(request); - return ResponseEntity.ok(HttpStatus.OK); + public ResponseEntity createTransactionPin(@RequestBody CreateTransactionPinRequest request) { + return ResponseEntity.ok(transactionPinService.createTransactionPin(request)); } @PostMapping(UCOURI.VERIFY_TRAN_PIN) diff --git a/src/main/java/com/mfsys/uco/dto/TransactionOtpResponse.java b/src/main/java/com/mfsys/uco/dto/TransactionOtpResponse.java new file mode 100644 index 0000000..ff02112 --- /dev/null +++ b/src/main/java/com/mfsys/uco/dto/TransactionOtpResponse.java @@ -0,0 +1,23 @@ +package com.mfsys.uco.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class TransactionOtpResponse { + + public Long pinserial; + + public String obpPincode; + + public LocalDateTime pinCreation; + + public LocalDateTime pinExpiry; + + +} diff --git a/src/main/java/com/mfsys/uco/exception/TranVerificationPinException.java b/src/main/java/com/mfsys/uco/exception/TranVerificationPinException.java new file mode 100644 index 0000000..13652ee --- /dev/null +++ b/src/main/java/com/mfsys/uco/exception/TranVerificationPinException.java @@ -0,0 +1,7 @@ +package com.mfsys.uco.exception; + +public class TranVerificationPinException extends RuntimeException { + public TranVerificationPinException(String message) { + super(message); + } +} diff --git a/src/main/java/com/mfsys/uco/repository/PinRepository.java b/src/main/java/com/mfsys/uco/repository/PinRepository.java index 20dfeef..15634d6 100644 --- a/src/main/java/com/mfsys/uco/repository/PinRepository.java +++ b/src/main/java/com/mfsys/uco/repository/PinRepository.java @@ -15,4 +15,7 @@ public interface PinRepository extends JpaRepository { @Query("SELECT p FROM DG_PN_PIN p WHERE p.pincode =:obpPincode AND p.pinstatus = 'Unverified' AND p.pinExpirydate > CURRENT_TIMESTAMP AND p.pintype=:pinType ORDER BY p.pinserial DESC LIMIT 1") Optional findsss( String pinType, String obpPincode); + @Query("select p FROM DG_PN_PIN p WHERE p.pinserial = :serial AND p.pinstatus = 'Unverified' AND p.pinExpirydate > CURRENT_TIMESTAMP") + Optional findLatestOtpBySerial(Long serial); + } diff --git a/src/main/java/com/mfsys/uco/service/TransactionPinService.java b/src/main/java/com/mfsys/uco/service/TransactionPinService.java index d12fc7a..b7313d5 100644 --- a/src/main/java/com/mfsys/uco/service/TransactionPinService.java +++ b/src/main/java/com/mfsys/uco/service/TransactionPinService.java @@ -1,14 +1,13 @@ package com.mfsys.uco.service; -import com.mfsys.uco.dto.ChangeTransactionPinRequest; -import com.mfsys.uco.dto.CreateTransactionPinRequest; -import com.mfsys.uco.dto.OTPRequest; -import com.mfsys.uco.dto.VerifyPinRequest; +import com.mfsys.uco.dto.*; import com.mfsys.uco.exception.OldPinIncorrectException; import com.mfsys.uco.exception.SameOldNewPinException; import com.mfsys.uco.model.CustomerProfile; import com.mfsys.uco.model.CustomerProfileId; +import com.mfsys.uco.model.Pin; import com.mfsys.uco.repository.CustomerProfileRepository; +import com.mfsys.uco.repository.PinRepository; import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -22,12 +21,20 @@ public class TransactionPinService { private final CustomerProfileRepository customerProfileRepository; private final NotificationService notificationService; + private final PinRepository pinRepository; - public void createTransactionPin(CreateTransactionPinRequest request) { + public TransactionOtpResponse createTransactionPin(CreateTransactionPinRequest request) { CustomerProfile profile = fetchCustomer(request.getPorOrgacode(), request.getCmpCustcode()); profile.setCmpTranpin(request.getNewTransPincode()); - sendOtp(profile, request.getChannelCode(), request.getPinType(), "Create Transaction Pin Verification OTP", request.isOtpRequired()); + Long serial = sendOtp(profile, request.getChannelCode(), request.getPinType(), "Create Transaction Pin Verification OTP", request.isOtpRequired()); + Pin pin = pinRepository.findLatestOtpBySerial(serial).get(); customerProfileRepository.save(profile); + return TransactionOtpResponse.builder() + .pinserial(pin.getPinserial()) + .obpPincode(pin.getPincode()) + .pinCreation(pin.getPinCreatedate()) + .pinExpiry(pin.getPinExpirydate()) + .build(); } -- 2.32.0