Merge pull request 'feature3-userId-added' (#39) from feature3-userId-added into develop
Reviewed-on: https://git.zeptic.in/himanshu/bbps/pulls/39
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
package com.billpaymentservice.bbps.entites;
|
package com.billpaymentservice.bbps.entites;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
import jakarta.persistence.Column;
|
import jakarta.persistence.Column;
|
||||||
@@ -11,33 +10,34 @@ import lombok.Getter;
|
|||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base mapped superclass for audit fields. All JPA entities should extend this to
|
* Base mapped superclass for audit fields. All JPA entities should extend this
|
||||||
* get automatic population of createdAt/updatedAt/isDeleted via AuditListener.
|
* to get automatic population of createdAt/updatedAt/isDeleted via
|
||||||
|
* AuditListener.
|
||||||
*/
|
*/
|
||||||
@MappedSuperclass
|
@MappedSuperclass
|
||||||
@EntityListeners(AuditListener.class)
|
@EntityListeners(AuditListener.class)
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
public abstract class Auditable implements Serializable {
|
public abstract class Auditable implements Serializable {
|
||||||
@Column(name = "create_date_time")
|
@Column(name = "create_date_time")
|
||||||
private Date createDateTime;
|
private Date createDateTime;
|
||||||
|
|
||||||
@Column(name = "updated_date_time")
|
@Column(name = "updated_date_time")
|
||||||
private Date updatedDateTime;
|
private Date updatedDateTime;
|
||||||
|
|
||||||
@Column(name = "create_by")
|
@Column(name = "create_by")
|
||||||
private String createdBy;
|
private String createdBy;
|
||||||
|
|
||||||
@Column(name = "updated_by")
|
@Column(name = "updated_by")
|
||||||
private String updatedBy;
|
private String updatedBy;
|
||||||
|
|
||||||
@Column(name = "created_epoch_date")
|
@Column(name = "created_epoch_date")
|
||||||
private Long createdEpochDate;
|
private Long createdEpochDate;
|
||||||
|
|
||||||
@Column(name = "modified_epoch_date")
|
@Column(name = "modified_epoch_date")
|
||||||
private Long modifiedEpochDate;
|
private Long modifiedEpochDate;
|
||||||
|
|
||||||
|
@Column(name = "is_deleted")
|
||||||
|
private Boolean isDeleted = Boolean.FALSE;
|
||||||
|
|
||||||
@Column(name = "is_deleted")
|
|
||||||
private Boolean isDeleted = Boolean.FALSE;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -77,6 +77,9 @@ public class ComplaintResponseEntity extends Auditable {
|
|||||||
@Column(name = "user_id")
|
@Column(name = "user_id")
|
||||||
private String userId;
|
private String userId;
|
||||||
|
|
||||||
|
@Column(name = "mid")
|
||||||
|
private String mid;
|
||||||
|
|
||||||
@OneToMany(fetch = FetchType.LAZY)
|
@OneToMany(fetch = FetchType.LAZY)
|
||||||
@JoinColumn(name = "ticket_id", referencedColumnName = "ticket_id", insertable = false, updatable = false)
|
@JoinColumn(name = "ticket_id", referencedColumnName = "ticket_id", insertable = false, updatable = false)
|
||||||
private Set<ComplainStatus> complaintStatusList = new HashSet<>();
|
private Set<ComplainStatus> complaintStatusList = new HashSet<>();
|
||||||
|
|||||||
@@ -197,7 +197,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, requestTxnId);
|
txnId, userId, requestTxnId, mid);
|
||||||
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);
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import java.time.format.DateTimeFormatter;
|
|||||||
import java.time.temporal.ChronoUnit;
|
import java.time.temporal.ChronoUnit;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -529,6 +530,7 @@ public class BillerMapperHelper {
|
|||||||
entity.setNpciTicketStatus(dto.getNpciTicketStatus());
|
entity.setNpciTicketStatus(dto.getNpciTicketStatus());
|
||||||
entity.setCreatedTime(dto.getCreatedTime());
|
entity.setCreatedTime(dto.getCreatedTime());
|
||||||
entity.setUserId(userId);
|
entity.setUserId(userId);
|
||||||
|
entity.setCreateDateTime(new Date());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ComplainStatus saved = complaintStatusRepository.save(entity);
|
ComplainStatus saved = complaintStatusRepository.save(entity);
|
||||||
@@ -559,7 +561,7 @@ public class BillerMapperHelper {
|
|||||||
entity.setReqId(reqId);
|
entity.setReqId(reqId);
|
||||||
entity.setTxnId(txnId);
|
entity.setTxnId(txnId);
|
||||||
entity.setUserId(userId);
|
entity.setUserId(userId);
|
||||||
|
entity.setCreateDateTime(new Date());
|
||||||
complaintHistoryRepository.save(entity);
|
complaintHistoryRepository.save(entity);
|
||||||
savedCount++;
|
savedCount++;
|
||||||
}
|
}
|
||||||
@@ -674,6 +676,7 @@ public class BillerMapperHelper {
|
|||||||
entity.setPage(String.valueOf(responseWrapper.getPage()));
|
entity.setPage(String.valueOf(responseWrapper.getPage()));
|
||||||
entity.setPageSize(String.valueOf(responseWrapper.getPageSize()));
|
entity.setPageSize(String.valueOf(responseWrapper.getPageSize()));
|
||||||
entity.setUserId(userId);
|
entity.setUserId(userId);
|
||||||
|
entity.setCreateDateTime(new Date());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -853,6 +856,7 @@ public class BillerMapperHelper {
|
|||||||
entity.setTotalPages(String.valueOf(responseWrapper.getTotalPages()));
|
entity.setTotalPages(String.valueOf(responseWrapper.getTotalPages()));
|
||||||
entity.setTotalElements(String.valueOf(responseWrapper.getTotalElements()));
|
entity.setTotalElements(String.valueOf(responseWrapper.getTotalElements()));
|
||||||
entity.setUserId(userId);
|
entity.setUserId(userId);
|
||||||
|
entity.setCreateDateTime(new Date());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -966,6 +970,7 @@ public class BillerMapperHelper {
|
|||||||
if (bmUpdatedOn != null) {
|
if (bmUpdatedOn != null) {
|
||||||
billMaster.setUpdatedDateTime(bmUpdatedOn);
|
billMaster.setUpdatedDateTime(bmUpdatedOn);
|
||||||
}
|
}
|
||||||
|
|
||||||
billMaster.setCreatedEpochDate(responseWrapper.getCreatedEpochDate());
|
billMaster.setCreatedEpochDate(responseWrapper.getCreatedEpochDate());
|
||||||
billMaster.setModifiedEpochDate(responseWrapper.getModifiedEpochDate());
|
billMaster.setModifiedEpochDate(responseWrapper.getModifiedEpochDate());
|
||||||
|
|
||||||
@@ -975,16 +980,15 @@ public class BillerMapperHelper {
|
|||||||
// Helper to parse incoming ISO date/time strings (with optional offset) into
|
// Helper to parse incoming ISO date/time strings (with optional offset) into
|
||||||
// LocalDateTime
|
// LocalDateTime
|
||||||
private Date parseToDate(String dateStr) {
|
private Date parseToDate(String dateStr) {
|
||||||
try {
|
try {
|
||||||
// example format: 2025-12-17T14:30:45
|
// example format: 2025-12-17T14:30:45
|
||||||
LocalDateTime ldt = LocalDateTime.parse(dateStr);
|
LocalDateTime ldt = LocalDateTime.parse(dateStr);
|
||||||
return Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant());
|
return Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Convert TransactionMaster to master DTO
|
// Convert TransactionMaster to master DTO
|
||||||
public TransactionHistoryMasterDTO toDTO(TransactionMaster transactionMaster) {
|
public TransactionHistoryMasterDTO toDTO(TransactionMaster transactionMaster) {
|
||||||
if (transactionMaster == null)
|
if (transactionMaster == null)
|
||||||
@@ -1074,76 +1078,55 @@ public class BillerMapperHelper {
|
|||||||
|
|
||||||
// Map PaymentStartUserRequest + API response into PaymentStartRecord and
|
// Map PaymentStartUserRequest + API response into PaymentStartRecord and
|
||||||
// persist
|
// persist
|
||||||
public PaymentStartRecord savePaymentStartRecord(
|
public PaymentStartRecord savePaymentStartRecord(PaymentStartUserRequest request,
|
||||||
PaymentStartUserRequest request,
|
PaymentStartApiResponse apiResponse, String txnId, String orderNo, String requestJson, String rawResponse,
|
||||||
PaymentStartApiResponse apiResponse,
|
String responseType) {
|
||||||
String txnId,
|
|
||||||
String orderNo,
|
|
||||||
String requestJson,
|
|
||||||
String rawResponse,
|
|
||||||
String responseType) {
|
|
||||||
|
|
||||||
PaymentStartRecord record;
|
PaymentStartRecord record;
|
||||||
|
|
||||||
boolean createNewRecord =
|
boolean createNewRecord = apiResponse == null && rawResponse == null && responseType == null;
|
||||||
apiResponse == null &&
|
|
||||||
rawResponse == null &&
|
|
||||||
responseType == null;
|
|
||||||
|
|
||||||
if (createNewRecord) {
|
if (createNewRecord) {
|
||||||
// 🔒 Duplicate check
|
// 🔒 Duplicate check
|
||||||
if (paymentStartRecordRepository.findByOrderNo(orderNo).isPresent()) {
|
if (paymentStartRecordRepository.findByOrderNo(orderNo).isPresent()) {
|
||||||
throw new CustomException(
|
throw new CustomException("Duplicate OrderNo found", "DUPLICATE_ORDERNO", 400,
|
||||||
"Duplicate OrderNo found",
|
"OrderNo already exists");
|
||||||
"DUPLICATE_ORDERNO",
|
}
|
||||||
400,
|
record = new PaymentStartRecord();
|
||||||
"OrderNo already exists"
|
} else {
|
||||||
);
|
record = paymentStartRecordRepository.findByOrderNo(orderNo)
|
||||||
}
|
.orElseThrow(() -> new CustomException("OrderNo not found", "ORDERNO_NOT_FOUND", 404,
|
||||||
record = new PaymentStartRecord();
|
"No record exists for given orderNo"));
|
||||||
} else {
|
}
|
||||||
record = paymentStartRecordRepository.findByOrderNo(orderNo)
|
|
||||||
.orElseThrow(() -> new CustomException(
|
|
||||||
"OrderNo not found",
|
|
||||||
"ORDERNO_NOT_FOUND",
|
|
||||||
404,
|
|
||||||
"No record exists for given orderNo"
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (orderNo != null) {
|
if (orderNo != null) {
|
||||||
record.setOrderNo(orderNo);
|
record.setOrderNo(orderNo);
|
||||||
record.setRequestId(request.getReqId());
|
record.setRequestId(request.getReqId());
|
||||||
record.setClientMid(request.getMid());
|
record.setClientMid(request.getMid());
|
||||||
record.setClientUserId(request.getClientUserId());
|
record.setClientUserId(request.getClientUserId());
|
||||||
record.setInternalTxnId(txnId);
|
record.setInternalTxnId(txnId);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (apiResponse != null && apiResponse.getResponseData() != null) {
|
if (apiResponse != null && apiResponse.getResponseData() != null) {
|
||||||
record.setAmount(Optional.ofNullable(
|
record.setAmount(Optional.ofNullable(apiResponse.getResponseData().getAmount()).orElse("0.00"));
|
||||||
apiResponse.getResponseData().getAmount()).orElse("0.00"));
|
|
||||||
|
|
||||||
record.setTxnId(Optional.ofNullable(
|
record.setTxnId(Optional.ofNullable(apiResponse.getResponseData().getTxnId()).orElse("DUMMY_TXN"));
|
||||||
apiResponse.getResponseData().getTxnId()).orElse("DUMMY_TXN"));
|
|
||||||
|
|
||||||
record.setQrString(Optional.ofNullable(
|
record.setQrString(Optional.ofNullable(apiResponse.getResponseData().getQrString()).orElse("NO_QR"));
|
||||||
apiResponse.getResponseData().getQrString()).orElse("NO_QR"));
|
|
||||||
|
|
||||||
Date createdOn = parseToDate(apiResponse.getResponseData().getCreatedOn());
|
Date createdOn = parseToDate(apiResponse.getResponseData().getCreatedOn());
|
||||||
|
|
||||||
record.setTxnStatus("PENDING");
|
record.setTxnStatus("PENDING");
|
||||||
} else {
|
} else {
|
||||||
record.setAmount("0.00");
|
record.setAmount("0.00");
|
||||||
record.setTxnStatus("PENDING");
|
record.setTxnStatus("PENDING");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
record.setResponseType(responseType);
|
||||||
|
|
||||||
record.setResponseType(responseType);
|
return paymentStartRecordRepository.save(record);
|
||||||
|
|
||||||
return paymentStartRecordRepository.save(record);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Map ComplaintRequestDTO to forward request for complaint API
|
// Map ComplaintRequestDTO to forward request for complaint API
|
||||||
public FetchComplaintForwardRequest fetchComplaintForwardRequestMap(ComplaintRequestDTO complainRequestDTO) {
|
public FetchComplaintForwardRequest fetchComplaintForwardRequestMap(ComplaintRequestDTO complainRequestDTO) {
|
||||||
FetchComplaintForwardRequest forward = new FetchComplaintForwardRequest();
|
FetchComplaintForwardRequest forward = new FetchComplaintForwardRequest();
|
||||||
@@ -1181,7 +1164,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 requestTxnId) {
|
String userId, String requestTxnId, String mid) {
|
||||||
if (responseWrapper == null || responseWrapper.getTicketDetails() == null) {
|
if (responseWrapper == null || responseWrapper.getTicketDetails() == null) {
|
||||||
return "No data";
|
return "No data";
|
||||||
}
|
}
|
||||||
@@ -1194,6 +1177,8 @@ public class BillerMapperHelper {
|
|||||||
complaintResponseEntity.setTicketDesp(responseWrapper.getTicketDetails().getTicketDesp());
|
complaintResponseEntity.setTicketDesp(responseWrapper.getTicketDetails().getTicketDesp());
|
||||||
complaintResponseEntity.setTicketDesr(responseWrapper.getTicketDetails().getTicketDesr());
|
complaintResponseEntity.setTicketDesr(responseWrapper.getTicketDetails().getTicketDesr());
|
||||||
complaintResponseEntity.setRequestTxnId(requestTxnId);
|
complaintResponseEntity.setRequestTxnId(requestTxnId);
|
||||||
|
complaintResponseEntity.setMid(mid);
|
||||||
|
complaintResponseEntity.setCreateDateTime(new Date());
|
||||||
|
|
||||||
complaintResponseEntity.setMessage(responseWrapper.getMessage());
|
complaintResponseEntity.setMessage(responseWrapper.getMessage());
|
||||||
complaintResponseEntity.setRemarks(responseWrapper.getRemarks());
|
complaintResponseEntity.setRemarks(responseWrapper.getRemarks());
|
||||||
@@ -1303,7 +1288,7 @@ public class BillerMapperHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ComplaintResponseDto toDto(ComplaintResponseEntity e) {
|
public ComplaintResponseDto toDto(ComplaintResponseEntity e) {
|
||||||
|
|
||||||
ComplaintResponseDto dto = new ComplaintResponseDto();
|
ComplaintResponseDto dto = new ComplaintResponseDto();
|
||||||
dto.setTicketId(e.getTicketId());
|
dto.setTicketId(e.getTicketId());
|
||||||
|
|||||||
Reference in New Issue
Block a user