diff --git a/src/main/java/com/billpaymentservice/bbps/controller/ComplainController.java b/src/main/java/com/billpaymentservice/bbps/controller/ComplainController.java index 0c901f9..0c374c7 100644 --- a/src/main/java/com/billpaymentservice/bbps/controller/ComplainController.java +++ b/src/main/java/com/billpaymentservice/bbps/controller/ComplainController.java @@ -19,6 +19,7 @@ import com.billpaymentservice.bbps.dto.request.CloseComplaintRequest; import com.billpaymentservice.bbps.dto.request.ComplainStatusRequest; import com.billpaymentservice.bbps.dto.request.ComplaintRequestDTO; import com.billpaymentservice.bbps.dto.request.ReOpenComplain; +import com.billpaymentservice.bbps.dto.request.ViewAllComplaintsRequest; import com.billpaymentservice.bbps.dto.request.ViewComplainByIdRequest; import com.billpaymentservice.bbps.service.ComplainService; @@ -79,5 +80,12 @@ public class ComplainController { return ResponseEntity.ok(response); } + @PostMapping("/viewAllComplaints") + public ResponseEntity viewAllComplaints(@RequestBody ViewAllComplaintsRequest request) { + log.info("Received request complaint View All Complaints for Status Type={}", request.getStatusType()); + ResponseModel response = complainService.ViewAllComplaints(request); + return ResponseEntity.ok(response); + } + } diff --git a/src/main/java/com/billpaymentservice/bbps/dto/ComplainDetailsDto.java b/src/main/java/com/billpaymentservice/bbps/dto/ComplainDetailsDto.java index f9ff26f..504ef8f 100644 --- a/src/main/java/com/billpaymentservice/bbps/dto/ComplainDetailsDto.java +++ b/src/main/java/com/billpaymentservice/bbps/dto/ComplainDetailsDto.java @@ -1,10 +1,13 @@ package com.billpaymentservice.bbps.dto; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + import lombok.Getter; import lombok.Setter; @Setter @Getter +@JsonIgnoreProperties(ignoreUnknown = true) public class ComplainDetailsDto { private String complaintId; diff --git a/src/main/java/com/billpaymentservice/bbps/dto/request/ViewAllComplaintsRequest.java b/src/main/java/com/billpaymentservice/bbps/dto/request/ViewAllComplaintsRequest.java new file mode 100644 index 0000000..d7f8cb3 --- /dev/null +++ b/src/main/java/com/billpaymentservice/bbps/dto/request/ViewAllComplaintsRequest.java @@ -0,0 +1,14 @@ +package com.billpaymentservice.bbps.dto.request; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class ViewAllComplaintsRequest extends BaseClass{ + + private String statusType; // e.g. COMPLAINT_OPEN_SUCCESS + private Integer pageNo; // default 0 + private Integer pageSize; // default 10 + +} diff --git a/src/main/java/com/billpaymentservice/bbps/dto/response/ViewAllComplaintsResponse.java b/src/main/java/com/billpaymentservice/bbps/dto/response/ViewAllComplaintsResponse.java new file mode 100644 index 0000000..edc6dcb --- /dev/null +++ b/src/main/java/com/billpaymentservice/bbps/dto/response/ViewAllComplaintsResponse.java @@ -0,0 +1,22 @@ +package com.billpaymentservice.bbps.dto.response; + +import java.util.List; + +import com.billpaymentservice.bbps.dto.ComplainDetailsDto; +import com.billpaymentservice.bbps.dto.GeneralResp; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@JsonIgnoreProperties(ignoreUnknown = true) +public class ViewAllComplaintsResponse { + private List complaintsList; + private GeneralResp generalResp; + private Integer pageNo; + private Integer pageSize; + private Integer totalPages; + private Long totalElements; +} diff --git a/src/main/java/com/billpaymentservice/bbps/dto/response/ViewComplainByIdResponse.java b/src/main/java/com/billpaymentservice/bbps/dto/response/ViewComplainByIdResponse.java index c04a820..e981cb7 100644 --- a/src/main/java/com/billpaymentservice/bbps/dto/response/ViewComplainByIdResponse.java +++ b/src/main/java/com/billpaymentservice/bbps/dto/response/ViewComplainByIdResponse.java @@ -4,12 +4,14 @@ import java.util.List; import com.billpaymentservice.bbps.dto.GeneralResp; import com.billpaymentservice.bbps.dto.ViewComplaintDTO; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.Getter; import lombok.Setter; @Getter @Setter +@JsonIgnoreProperties(ignoreUnknown = true) public class ViewComplainByIdResponse { private List complaintsList; private GeneralResp generalResp; diff --git a/src/main/java/com/billpaymentservice/bbps/entites/BillerDetails.java b/src/main/java/com/billpaymentservice/bbps/entites/BillerDetails.java index 8849cfc..55014dd 100644 --- a/src/main/java/com/billpaymentservice/bbps/entites/BillerDetails.java +++ b/src/main/java/com/billpaymentservice/bbps/entites/BillerDetails.java @@ -20,7 +20,18 @@ import lombok.ToString; @Getter @Setter @Entity -@ToString +@ToString(exclude = { + "billerPaymentModes", + "billerPaymentChannels", + "billerCustomerParams", + "customerParamGroups", + "billerResponseParams", + "billerAdditionalInfos", + "interchangeFeeConves", + "interchangeFees", + "billerPlanResponseParams" + }) + @Table(name = "biller_details") @JsonIgnoreProperties(ignoreUnknown = true) public class BillerDetails { diff --git a/src/main/java/com/billpaymentservice/bbps/entites/ComplaintStatusDetails.java b/src/main/java/com/billpaymentservice/bbps/entites/ComplaintStatusDetails.java index 052e134..966c3be 100644 --- a/src/main/java/com/billpaymentservice/bbps/entites/ComplaintStatusDetails.java +++ b/src/main/java/com/billpaymentservice/bbps/entites/ComplaintStatusDetails.java @@ -11,16 +11,17 @@ import lombok.Setter; @Setter @Table(name = "complaint_status_details") public class ComplaintStatusDetails { - - - @Id + + @Id + @Column(name = "complaint_id") + private String complaintId; + @Column(name = "req_id") private String reqId; @Column(name = "txn_id") private String txnId; - private String complaintId; @Column(name = "assigned_to") private String assignedTo; diff --git a/src/main/java/com/billpaymentservice/bbps/service/ComplainService.java b/src/main/java/com/billpaymentservice/bbps/service/ComplainService.java index def76b4..4a6ad50 100644 --- a/src/main/java/com/billpaymentservice/bbps/service/ComplainService.java +++ b/src/main/java/com/billpaymentservice/bbps/service/ComplainService.java @@ -5,6 +5,7 @@ import com.billpaymentservice.bbps.dto.request.CloseComplaintRequest; import com.billpaymentservice.bbps.dto.request.ComplainStatusRequest; import com.billpaymentservice.bbps.dto.request.ReOpenComplain; import com.billpaymentservice.bbps.dto.request.TxnStatusRequest; +import com.billpaymentservice.bbps.dto.request.ViewAllComplaintsRequest; import com.billpaymentservice.bbps.dto.request.ViewComplainByIdRequest; import com.billpaymentservice.bbps.dto.request.ComplaintRequestDTO; @@ -23,5 +24,7 @@ public interface ComplainService { ResponseModel viewComplaintById(ViewComplainByIdRequest request); ResponseModel checkTxnStatus(TxnStatusRequest request); + + ResponseModel ViewAllComplaints(ViewAllComplaintsRequest request); } diff --git a/src/main/java/com/billpaymentservice/bbps/serviceImpl/ComplainServiceImpl.java b/src/main/java/com/billpaymentservice/bbps/serviceImpl/ComplainServiceImpl.java index 1759b93..c0efa0e 100644 --- a/src/main/java/com/billpaymentservice/bbps/serviceImpl/ComplainServiceImpl.java +++ b/src/main/java/com/billpaymentservice/bbps/serviceImpl/ComplainServiceImpl.java @@ -18,11 +18,13 @@ import com.billpaymentservice.bbps.dto.request.CloseComplaintRequest; import com.billpaymentservice.bbps.dto.request.ComplainStatusRequest; import com.billpaymentservice.bbps.dto.request.ReOpenComplain; import com.billpaymentservice.bbps.dto.request.TxnStatusRequest; +import com.billpaymentservice.bbps.dto.request.ViewAllComplaintsRequest; import com.billpaymentservice.bbps.dto.request.ViewComplainByIdRequest; import com.billpaymentservice.bbps.dto.response.CloseComplaintStatusResponse; import com.billpaymentservice.bbps.dto.response.ComplaintHistoryStatusResponse; import com.billpaymentservice.bbps.dto.response.ComplaintStatusResponse; import com.billpaymentservice.bbps.dto.response.TxnStatusResponse; +import com.billpaymentservice.bbps.dto.response.ViewAllComplaintsResponse; import com.billpaymentservice.bbps.dto.response.ViewComplainByIdResponse; import com.billpaymentservice.bbps.entites.BharatConnectMaster; @@ -54,7 +56,7 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; @Service -public class ComplainServiceImpl implements ComplainService { +public class ComplainServiceImpl implements ComplainService { @Value("${agent.data.url}") private String agentDtaUrl; @@ -543,4 +545,76 @@ public class ComplainServiceImpl implements ComplainService { } + @Override + public ResponseModel ViewAllComplaints(ViewAllComplaintsRequest request) { + + LOGGER.info("Fetching All Complaint for status Type={} and reqId={} ", request.getStatusType(), + request.getReqId()); + String apiName = "View All Complaint By Status Type"; + String txnId = helper.generateTxnId(15); + String reqId = request.getReqId(); + String fullUrl = complainDataUrl+ BBPSConstant.VIEW_ALL_COMPLAINTS_BASE + + "?pageNo=" + request.getPageNo() + + "&pageSize=" + request.getPageSize() + + "&statusType=" + request.getStatusType(); + + helper.validateMerchant(request.getMid()); + + BharatConnectMaster headersData = beneficiaryDetailsRepository.findByOrgId("ORG001"); + HttpHeaders headers = new HttpHeaders(); + headers.set("x-digiledge-key", headersData.getXDigiledgeKey()); + headers.set("agentId", headersData.getAgentId()); + headers.set("tenantId", headersData.getTenantId()); + headers.setContentType(MediaType.APPLICATION_JSON); + + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); + String requestJson = helper.convertObjectToJson(request); + + InboundTraceLog inboundLog = helper.createInboundLog(reqId, txnId, apiName, request.getMid(), "POST", + requestJson); + OutboundTraceLog outboundLog = helper.createOutboundLog(txnId, reqId, apiName, fullUrl, "GET", request.getStatusType()); + LOGGER.debug("Outbound log created successfully for Complaint : {}", fullUrl); + + try { + LOGGER.info("Calling external API: {}", fullUrl); + Map responseMap = httpService.getRequest(fullUrl, headers); + String responseData = responseMap.get("data"); + LOGGER.info("Response: {}", responseData); + + helper.updateOutboundLogResponse(outboundLog, responseData); + + Map dataMap = objectMapper.readValue(responseData, + new TypeReference>() { + }); + + if (!dataMap.containsKey("generalResp")) { + helper.updateInboundLogFailure(inboundLog, responseData, "INVALID_RESPONSE"); + LOGGER.warn("Invalid response structure for txnId: {}", txnId); + throw new CustomException(String.valueOf(dataMap.get("message")), String.valueOf(dataMap.get("status")), + Integer.parseInt(String.valueOf(dataMap.get("statusCode"))), String.valueOf("")); + } + + ViewAllComplaintsResponse responseWrapper = objectMapper.convertValue(dataMap, + ViewAllComplaintsResponse.class); + GeneralResp generalResp = responseWrapper.getGeneralResp(); + + String status = generalResp.getStatus(); + LOGGER.info("Current Complaint ReOpen Status: {}", status); + + helper.updateInboundLogSuccess(inboundLog, responseData, generalResp.getStatus()); + String saveComplaint = mapperHelper.saveAllComplaints(responseWrapper, reqId, txnId); + //LOGGER.info("Complaint ReOpen data saved successfully for Count History: {}", saveComplaintHistory); + + return new ResponseModel(generalResp.getMessage(), generalResp.getStatus(), + Integer.parseInt(generalResp.getStatusCode()), responseWrapper); + } catch (JsonProcessingException e) { + LOGGER.error("Error parsing Complaint Id JSON: {}", e.getMessage(), e); + helper.updateInboundLogFailure(inboundLog, e.getMessage(), "JSON_ERROR"); + throw new CustomException("Invalid JSON received from API"); + } + } + + + } diff --git a/src/main/java/com/billpaymentservice/bbps/serviceImpl/MasterDataServiceImpl.java b/src/main/java/com/billpaymentservice/bbps/serviceImpl/MasterDataServiceImpl.java index c00a6d5..04154b0 100644 --- a/src/main/java/com/billpaymentservice/bbps/serviceImpl/MasterDataServiceImpl.java +++ b/src/main/java/com/billpaymentservice/bbps/serviceImpl/MasterDataServiceImpl.java @@ -169,6 +169,8 @@ public class MasterDataServiceImpl implements MasterDataService { String requestJson = helper.convertObjectToJson(billerDetailRequest); InboundTraceLog inboundLog = helper.createInboundLog(requestId, txnID, apiName, billerDetailRequest.getMid(), "POST", requestJson); + + System.out.println( billerDataRespository.findByBillerId(billerId)); OutboundTraceLog outboundLog = helper.createOutboundLog(txnID, requestId, apiName, fullUrl, "GET", null); LOGGER.info("Calling external API: {}", fullUrl); diff --git a/src/main/java/com/billpaymentservice/bbps/util/BBPSConstant.java b/src/main/java/com/billpaymentservice/bbps/util/BBPSConstant.java index 87948db..98744dd 100644 --- a/src/main/java/com/billpaymentservice/bbps/util/BBPSConstant.java +++ b/src/main/java/com/billpaymentservice/bbps/util/BBPSConstant.java @@ -50,5 +50,7 @@ public class BBPSConstant { public static final String PLANS_URL = "/plans"; public static final String ADD_COMPLAIN_ENDPOINT = "/couapp/complaints"; + public static final String VIEW_ALL_COMPLAINTS_BASE = "/couapp/complaints/all"; + } diff --git a/src/main/java/com/billpaymentservice/bbps/util/BillerMapperHelper.java b/src/main/java/com/billpaymentservice/bbps/util/BillerMapperHelper.java index be5d136..51525df 100644 --- a/src/main/java/com/billpaymentservice/bbps/util/BillerMapperHelper.java +++ b/src/main/java/com/billpaymentservice/bbps/util/BillerMapperHelper.java @@ -24,6 +24,7 @@ import com.billpaymentservice.bbps.dto.response.AmountOptionsResponse; import com.billpaymentservice.bbps.dto.response.ComplaintHistoryStatusResponse; import com.billpaymentservice.bbps.dto.response.ComplaintStatusResponse; import com.billpaymentservice.bbps.dto.response.PlanResponse; +import com.billpaymentservice.bbps.dto.response.ViewAllComplaintsResponse; import com.billpaymentservice.bbps.dto.response.ViewComplainByIdResponse; import com.billpaymentservice.bbps.entites.AdditionalInfoPlans; import com.billpaymentservice.bbps.entites.AmountOptionByBillerId; @@ -567,6 +568,29 @@ public class BillerMapperHelper { return "SUCCESS"; } + public String saveAllComplaints(ViewAllComplaintsResponse responseWrapper, String reqId, String txnId) { + + ModelMapper mapper = new ModelMapper(); + mapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT); + + // Map list → ComplaintStatusDetails list + List entityList = responseWrapper.getComplaintsList() + .stream() + .map(c -> mapper.map(c, ComplaintStatusDetails.class)) + .collect(Collectors.toList()); + + // Set extra fields + for (ComplaintStatusDetails entity : entityList) { + entity.setReqId(reqId); + entity.setTxnId(txnId); + } + + // Save to repository + complainDetailRepository.saveAll(entityList); + + return "SUCCESS"; + } +