Merge pull request 'feature3-userId-added' (#33) from feature3-userId-added into develop

Reviewed-on: https://git.zeptic.in/himanshu/bbps/pulls/33
This commit is contained in:
Mohd_Arham
2025-12-12 15:11:02 +05:30
4 changed files with 35 additions and 19 deletions
@@ -44,7 +44,7 @@ public class SecurityConfig {
"/webjars/**", "/webjars/**",
"/error") "/error")
.permitAll() .permitAll()
.requestMatchers("/payment/callback/startPayment") .requestMatchers("/payment/callback/startPayment","/checkTicketStatus/complaints/")
.permitAll().requestMatchers(HttpMethod.OPTIONS, "/**").permitAll() .permitAll().requestMatchers(HttpMethod.OPTIONS, "/**").permitAll()
.anyRequest().authenticated()) .anyRequest().authenticated())
.exceptionHandling(ex -> ex.authenticationEntryPoint(jwtAuthenticationEntryPoint)) .exceptionHandling(ex -> ex.authenticationEntryPoint(jwtAuthenticationEntryPoint))
@@ -2,7 +2,6 @@ package com.billpaymentservice.bbps.entites;
import java.util.List; import java.util.List;
import jakarta.persistence.CascadeType; import jakarta.persistence.CascadeType;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
@@ -30,6 +29,9 @@ public class ComplaintResponseEntity extends Auditable {
@Column(name = "ref_id") @Column(name = "ref_id")
private String refId; private String refId;
@Column(name = "request_txn_id")
private String requestTxnId;
@Column(name = "txn_npci_id") @Column(name = "txn_npci_id")
private String txnNpciId; private String txnNpciId;
@@ -85,4 +87,3 @@ public class ComplaintResponseEntity extends Auditable {
private List<ViewAllComplaintTicketStatusDetails> viewAllList; private List<ViewAllComplaintTicketStatusDetails> viewAllList;
} }
@@ -103,6 +103,7 @@ public class ComplainServiceImpl implements ComplainService {
String requestId = complainRequestDTO.getReqId(); String requestId = complainRequestDTO.getReqId();
String mid = complainRequestDTO.getMid(); String mid = complainRequestDTO.getMid();
String userId = complainRequestDTO.getClientUserId(); String userId = complainRequestDTO.getClientUserId();
String requestTxnId=complainRequestDTO.getTxnId();
LOGGER.info("[{}] START | reqId={} | mid={} | clientUserId={}", apiName, requestId, mid, userId); LOGGER.info("[{}] START | reqId={} | mid={} | clientUserId={}", apiName, requestId, mid, userId);
String txnId = helper.generateTxnId(15); String txnId = helper.generateTxnId(15);
@@ -195,7 +196,7 @@ public class ComplainServiceImpl implements ComplainService {
ComplaintResponse responseWrapper = objectMapper.convertValue(dataMap, ComplaintResponse.class); ComplaintResponse responseWrapper = objectMapper.convertValue(dataMap, ComplaintResponse.class);
String saveComplaintResponseEntity = mapperHelper.saveComplaintResponseEntity(responseWrapper, requestId, String saveComplaintResponseEntity = mapperHelper.saveComplaintResponseEntity(responseWrapper, requestId,
txnId, userId); txnId, userId,requestTxnId);
LOGGER.info("Save Complaint Response Count" + saveComplaintResponseEntity); LOGGER.info("Save Complaint Response Count" + saveComplaintResponseEntity);
ResponseModel responseModel = new ResponseModel(responseWrapper.getMessage(), responseWrapper.getStatus(), ResponseModel responseModel = new ResponseModel(responseWrapper.getMessage(), responseWrapper.getStatus(),
Integer.parseInt(responseWrapper.getStatusCode()), responseWrapper); Integer.parseInt(responseWrapper.getStatusCode()), responseWrapper);
@@ -720,6 +720,7 @@ public class BillerMapperHelper {
parent.setUserId(responseWrapper.getUserId()); parent.setUserId(responseWrapper.getUserId());
// Map incoming DTO date strings into Auditable LocalDateTime fields // Map incoming DTO date strings into Auditable LocalDateTime fields
LocalDateTime parentCreatedOn = parseToLocalDateTime(responseWrapper.getCreationDate()); LocalDateTime parentCreatedOn = parseToLocalDateTime(responseWrapper.getCreationDate());
LocalDateTime parentUpdatedOn = parseToLocalDateTime(responseWrapper.getModifiedDate()); LocalDateTime parentUpdatedOn = parseToLocalDateTime(responseWrapper.getModifiedDate());
parent.setCreatedEpochDate(responseWrapper.getCreatedEpochDate()); parent.setCreatedEpochDate(responseWrapper.getCreatedEpochDate());
parent.setModifiedEpochDate(responseWrapper.getModifiedEpochDate()); parent.setModifiedEpochDate(responseWrapper.getModifiedEpochDate());
@@ -974,13 +975,15 @@ public class BillerMapperHelper {
billMasterRepository.save(billMaster); billMasterRepository.save(billMaster);
} }
// Helper to parse incoming ISO date/time strings (with optional offset) into LocalDateTime // Helper to parse incoming ISO date/time strings (with optional offset) into
// LocalDateTime
private LocalDateTime parseToLocalDateTime(String dateStr) { private LocalDateTime parseToLocalDateTime(String dateStr) {
if (dateStr == null || dateStr.isBlank()) { if (dateStr == null || dateStr.isBlank()) {
return null; return null;
} }
try { try {
// Try parsing with offset first (e.g., 2023-04-19T17:28:05.508679Z or with +05:30) // Try parsing with offset first (e.g., 2023-04-19T17:28:05.508679Z or with
// +05:30)
OffsetDateTime odt = OffsetDateTime.parse(dateStr); OffsetDateTime odt = OffsetDateTime.parse(dateStr);
return odt.toLocalDateTime(); return odt.toLocalDateTime();
} catch (Exception e) { } catch (Exception e) {
@@ -996,7 +999,8 @@ public class BillerMapperHelper {
// Convert TransactionMaster to master DTO // Convert TransactionMaster to master DTO
public TransactionHistoryMasterDTO toDTO(TransactionMaster transactionMaster) { public TransactionHistoryMasterDTO toDTO(TransactionMaster transactionMaster) {
if (transactionMaster == null) return null; if (transactionMaster == null)
return null;
TransactionHistoryMasterDTO dto = new TransactionHistoryMasterDTO(); TransactionHistoryMasterDTO dto = new TransactionHistoryMasterDTO();
dto.setBankTxnId(transactionMaster.getBankTxnId()); dto.setBankTxnId(transactionMaster.getBankTxnId());
dto.setTxnId(transactionMaster.getTxnId()); dto.setTxnId(transactionMaster.getTxnId());
@@ -1040,9 +1044,11 @@ public class BillerMapperHelper {
return dto; return dto;
} }
// Convert TransactionMaster to particular details DTO (used with method references) // Convert TransactionMaster to particular details DTO (used with method
// references)
public TransactionHistoryParticularDetailsDTO billerRemainingDetails(TransactionMaster transactionMaster) { public TransactionHistoryParticularDetailsDTO billerRemainingDetails(TransactionMaster transactionMaster) {
if (transactionMaster == null) return null; if (transactionMaster == null)
return null;
TransactionHistoryParticularDetailsDTO dto = new TransactionHistoryParticularDetailsDTO(); TransactionHistoryParticularDetailsDTO dto = new TransactionHistoryParticularDetailsDTO();
dto.setBankTxnId(transactionMaster.getBankTxnId()); dto.setBankTxnId(transactionMaster.getBankTxnId());
dto.setTxnId(transactionMaster.getTxnId()); dto.setTxnId(transactionMaster.getTxnId());
@@ -1078,7 +1084,8 @@ public class BillerMapperHelper {
return forward; return forward;
} }
// Map PaymentStartUserRequest + API response into PaymentStartRecord and persist // Map PaymentStartUserRequest + API response into PaymentStartRecord and
// persist
public void savePaymentStartRecord(PaymentStartUserRequest request, PaymentStartApiResponse apiResponse, public void savePaymentStartRecord(PaymentStartUserRequest request, PaymentStartApiResponse apiResponse,
String txnId, String orderNo, String requestJson, String rawResponse, String responseType) { String txnId, String orderNo, String requestJson, String rawResponse, String responseType) {
PaymentStartRecord record = new PaymentStartRecord(); PaymentStartRecord record = new PaymentStartRecord();
@@ -1129,9 +1136,11 @@ public class BillerMapperHelper {
return forward; return forward;
} }
// Check if complaint can be raised (true if within 24 hours of transactionCreatedDateString) // Check if complaint can be raised (true if within 24 hours of
// transactionCreatedDateString)
public static boolean isComplaintAllowed(String transactionCreatedDateString) { public static boolean isComplaintAllowed(String transactionCreatedDateString) {
if (transactionCreatedDateString == null || transactionCreatedDateString.isBlank()) return false; if (transactionCreatedDateString == null || transactionCreatedDateString.isBlank())
return false;
try { try {
OffsetDateTime transactionCreatedDate = OffsetDateTime.parse(transactionCreatedDateString); OffsetDateTime transactionCreatedDate = OffsetDateTime.parse(transactionCreatedDateString);
OffsetDateTime currentTime = OffsetDateTime.now(); OffsetDateTime currentTime = OffsetDateTime.now();
@@ -1146,7 +1155,7 @@ public class BillerMapperHelper {
// Persist complaint response entity // Persist complaint response entity
public String saveComplaintResponseEntity(ComplaintResponse responseWrapper, String requestId, String txnId, public String saveComplaintResponseEntity(ComplaintResponse responseWrapper, String requestId, String txnId,
String userId) { String userId, String requestTxnId) {
if (responseWrapper == null || responseWrapper.getTicketDetails() == null) { if (responseWrapper == null || responseWrapper.getTicketDetails() == null) {
return "No data"; return "No data";
} }
@@ -1158,6 +1167,7 @@ public class BillerMapperHelper {
complaintResponseEntity.setTicketNpciId(responseWrapper.getTicketDetails().getTicketNpciId()); complaintResponseEntity.setTicketNpciId(responseWrapper.getTicketDetails().getTicketNpciId());
complaintResponseEntity.setTicketDesp(responseWrapper.getTicketDetails().getTicketDesp()); complaintResponseEntity.setTicketDesp(responseWrapper.getTicketDetails().getTicketDesp());
complaintResponseEntity.setTicketDesr(responseWrapper.getTicketDetails().getTicketDesr()); complaintResponseEntity.setTicketDesr(responseWrapper.getTicketDetails().getTicketDesr());
complaintResponseEntity.setRequestTxnId(requestTxnId);
complaintResponseEntity.setMessage(responseWrapper.getMessage()); complaintResponseEntity.setMessage(responseWrapper.getMessage());
complaintResponseEntity.setRemarks(responseWrapper.getRemarks()); complaintResponseEntity.setRemarks(responseWrapper.getRemarks());
@@ -1183,7 +1193,8 @@ public class BillerMapperHelper {
// Minimal mapping helpers used by AgentServiceImpl // Minimal mapping helpers used by AgentServiceImpl
public com.billpaymentservice.bbps.dto.sentRequest.FetchBillForwardRequest fetchBillForwardRequestMap( public com.billpaymentservice.bbps.dto.sentRequest.FetchBillForwardRequest fetchBillForwardRequestMap(
com.billpaymentservice.bbps.dto.request.FetchBillRequest req) { com.billpaymentservice.bbps.dto.request.FetchBillRequest req) {
if (req == null) return null; if (req == null)
return null;
com.billpaymentservice.bbps.dto.sentRequest.FetchBillForwardRequest f = new com.billpaymentservice.bbps.dto.sentRequest.FetchBillForwardRequest(); com.billpaymentservice.bbps.dto.sentRequest.FetchBillForwardRequest f = new com.billpaymentservice.bbps.dto.sentRequest.FetchBillForwardRequest();
f.setBillerId(req.getBillerId()); f.setBillerId(req.getBillerId());
f.setBillerName(req.getBillerName()); f.setBillerName(req.getBillerName());
@@ -1201,7 +1212,8 @@ public class BillerMapperHelper {
public com.billpaymentservice.bbps.dto.sentRequest.FetchBillValidatestForwardRequest fetchBillValidatestForwardRequest( public com.billpaymentservice.bbps.dto.sentRequest.FetchBillValidatestForwardRequest fetchBillValidatestForwardRequest(
com.billpaymentservice.bbps.dto.request.FetchBillValidatestRequest req) { com.billpaymentservice.bbps.dto.request.FetchBillValidatestRequest req) {
if (req == null) return null; if (req == null)
return null;
com.billpaymentservice.bbps.dto.sentRequest.FetchBillValidatestForwardRequest f = new com.billpaymentservice.bbps.dto.sentRequest.FetchBillValidatestForwardRequest(); com.billpaymentservice.bbps.dto.sentRequest.FetchBillValidatestForwardRequest f = new com.billpaymentservice.bbps.dto.sentRequest.FetchBillValidatestForwardRequest();
f.setBillerId(req.getBillerId()); f.setBillerId(req.getBillerId());
f.setBillerName(req.getBillerName()); f.setBillerName(req.getBillerName());
@@ -1215,7 +1227,8 @@ public class BillerMapperHelper {
public void saveBillValidation(com.billpaymentservice.bbps.dto.response.FetchBillValidateResponse responseWrapper, public void saveBillValidation(com.billpaymentservice.bbps.dto.response.FetchBillValidateResponse responseWrapper,
com.billpaymentservice.bbps.dto.request.BillFetchByBillIdRequest billRequest, String txnId) { com.billpaymentservice.bbps.dto.request.BillFetchByBillIdRequest billRequest, String txnId) {
if (responseWrapper == null || billRequest == null) return; if (responseWrapper == null || billRequest == null)
return;
BillValidation entity = new BillValidation(); BillValidation entity = new BillValidation();
entity.setBillId(responseWrapper.getBillId()); entity.setBillId(responseWrapper.getBillId());
entity.setRefId(responseWrapper.getRefId()); entity.setRefId(responseWrapper.getRefId());
@@ -1230,7 +1243,8 @@ public class BillerMapperHelper {
// Map additionalInfo if present (minimal mapping) // Map additionalInfo if present (minimal mapping)
if (responseWrapper.getAdditionalInfo() != null) { if (responseWrapper.getAdditionalInfo() != null) {
List<AdditionalInfoBillValidate> addList = new ArrayList<>(); List<AdditionalInfoBillValidate> addList = new ArrayList<>();
for (com.billpaymentservice.bbps.dto.AdditionalInfoBillValidateDTO ai : responseWrapper.getAdditionalInfo()) { for (com.billpaymentservice.bbps.dto.AdditionalInfoBillValidateDTO ai : responseWrapper
.getAdditionalInfo()) {
AdditionalInfoBillValidate info = new AdditionalInfoBillValidate(); AdditionalInfoBillValidate info = new AdditionalInfoBillValidate();
// DTO only has name & value // DTO only has name & value
info.setName(ai.getName()); info.setName(ai.getName());