Merge pull request 'feature3' (#12) from feature3 into develop
Reviewed-on: https://git.zeptic.in/himanshu/bbps/pulls/12
This commit is contained in:
@@ -44,28 +44,28 @@ public class ComplainController {
|
||||
return ResponseEntity.ok(response);
|
||||
}
|
||||
|
||||
@PostMapping("/checkComplaintStatus")
|
||||
@PostMapping(value = "/checkComplaintStatus", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<ResponseModel> getComplaintStatus(@RequestBody ComplainStatusRequest request) {
|
||||
log.info("Received complaint status request for complaintId: {}", request.getComplaintId());
|
||||
ResponseModel response = complainService.getComplaintStatus(request);
|
||||
return ResponseEntity.ok(response);
|
||||
}
|
||||
|
||||
@PostMapping("/reOpenComplaint")
|
||||
@PostMapping(value = "/reOpenComplaint", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<ResponseModel> reOpenComplaint(@RequestBody ReOpenComplain request) {
|
||||
log.info("Received ReOpen Complaint request for complaintId: {}", request.getComplaintId());
|
||||
ResponseModel response = complainService.reOpenComplaint(request);
|
||||
return ResponseEntity.ok(response);
|
||||
}
|
||||
|
||||
@PostMapping("/viewComplainsHistory")
|
||||
@PostMapping(value = "/viewComplainsHistory", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<ResponseModel> viewComplaintHistory(@RequestBody ComplainStatusRequest request) {
|
||||
log.info("Received complaint View Complaint History request for complaintId: {}", request.getComplaintId());
|
||||
ResponseModel response = complainService.viewComplaintHistory(request);
|
||||
return ResponseEntity.ok(response);
|
||||
}
|
||||
|
||||
@PostMapping("/closeComplaint")
|
||||
@PostMapping(value = "/closeComplaint", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<ResponseModel> closeComplaint(@RequestBody CloseComplaintRequest request) {
|
||||
log.info("Received complaint Close Complaint request for complaintId: {}", request.getComplaintId());
|
||||
ResponseModel response = complainService.closeComplaint(request);
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.billpaymentservice.bbps.dto;
|
||||
import java.util.List;
|
||||
|
||||
import com.billpaymentservice.bbps.dto.response.CategoryResponse;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
@@ -17,6 +18,7 @@ import lombok.ToString;
|
||||
@ToString
|
||||
public class MasterApiResponse {
|
||||
|
||||
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
|
||||
private GeneralResp generalResp;
|
||||
private List<CategoryResponse> categoryRespList;
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import java.util.List;
|
||||
|
||||
import com.billpaymentservice.bbps.dto.GeneralResp;
|
||||
import com.billpaymentservice.bbps.dto.MasterCategoryBillerResponse;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
@@ -20,6 +21,7 @@ public class BillerResponse {
|
||||
private int pageSize;
|
||||
private long totalElements;
|
||||
private int totalPages;
|
||||
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
|
||||
private GeneralResp generalResp;
|
||||
private List<MasterCategoryBillerResponse> billerResp;
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
package com.billpaymentservice.bbps.dto.response;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.billpaymentservice.bbps.dto.ComplaintDetailsDTO;
|
||||
import com.billpaymentservice.bbps.dto.GeneralResp;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
@@ -12,5 +11,6 @@ import lombok.Setter;
|
||||
@Setter
|
||||
public class ComplaintResponse {
|
||||
private ComplaintDetailsDTO complaints; // multiple complaints
|
||||
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
|
||||
private GeneralResp generalResp;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.billpaymentservice.bbps.serviceImpl;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.modelmapper.ModelMapper;
|
||||
@@ -7,6 +8,7 @@ import org.modelmapper.convention.MatchingStrategies;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.boot.configurationprocessor.json.JSONObject;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -16,37 +18,26 @@ import com.billpaymentservice.bbps.dto.GeneralResp;
|
||||
import com.billpaymentservice.bbps.dto.ResponseModel;
|
||||
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.ViewComplainByIdRequest;
|
||||
import com.billpaymentservice.bbps.dto.response.CloseComplaintStatusResponse;
|
||||
import com.billpaymentservice.bbps.dto.response.ComplaintHistoryStatusResponse;
|
||||
import com.billpaymentservice.bbps.dto.response.ComplaintResponse;
|
||||
import com.billpaymentservice.bbps.dto.response.ComplaintStatusResponse;
|
||||
import com.billpaymentservice.bbps.dto.response.ViewComplainByIdResponse;
|
||||
import com.billpaymentservice.bbps.entites.BharatConnectMaster;
|
||||
|
||||
import com.billpaymentservice.bbps.dto.GeneralResp;
|
||||
import com.billpaymentservice.bbps.dto.ResponseModel;
|
||||
import com.billpaymentservice.bbps.dto.request.ComplaintRequestDTO;
|
||||
import com.billpaymentservice.bbps.dto.response.BillerDataResponse;
|
||||
import com.billpaymentservice.bbps.dto.response.ComplaintResponse;
|
||||
import com.billpaymentservice.bbps.entites.BharatConnectMaster;
|
||||
import com.billpaymentservice.bbps.entites.BillPayment;
|
||||
import com.billpaymentservice.bbps.entites.BillerDetails;
|
||||
import com.billpaymentservice.bbps.entites.ComplaintDetails;
|
||||
import com.billpaymentservice.bbps.entites.InboundTraceLog;
|
||||
import com.billpaymentservice.bbps.entites.OutboundTraceLog;
|
||||
import com.billpaymentservice.bbps.exception.CustomException;
|
||||
import com.billpaymentservice.bbps.repository.BharatConnectMasterRepository;
|
||||
import com.billpaymentservice.bbps.repository.ComplainRepository;
|
||||
import com.billpaymentservice.bbps.service.ComplainService;
|
||||
import com.billpaymentservice.bbps.util.BBPSConstant;
|
||||
import com.billpaymentservice.bbps.util.BillerMapperHelper;
|
||||
import com.billpaymentservice.bbps.util.Helper;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.billpaymentservice.bbps.repository.ComplainRepository;
|
||||
import com.billpaymentservice.bbps.service.ComplainService;
|
||||
import com.billpaymentservice.bbps.util.BBPSConstant;
|
||||
import com.billpaymentservice.bbps.util.EntityRelationshipUtil;
|
||||
import com.billpaymentservice.bbps.util.Helper;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
@@ -167,11 +158,29 @@ public class ComplainServiceImpl implements ComplainService {
|
||||
LOGGER.debug("Outbound log created successfully for Complaint : {}", fullUrl);
|
||||
|
||||
try {
|
||||
|
||||
LOGGER.info("Calling external API: {}", fullUrl);
|
||||
Map<String, String> responseMap = httpService.postRequest(fullUrl, requestJson, headers);
|
||||
String responseData = responseMap.get("data");
|
||||
LOGGER.info("Complaint FetchById Response: {}", responseData);
|
||||
|
||||
// Dummy complaint map start
|
||||
JSONObject json = new JSONObject(responseData);
|
||||
String message = json.optString("message");
|
||||
|
||||
// dummy data send when server response is coming error.
|
||||
// Check for internal server error
|
||||
if ("Internal server error, please try again later".equalsIgnoreCase(message)) {
|
||||
|
||||
Map<String, Object> dummyComplaint = mapperHelper.getComplaintStatusJson();
|
||||
|
||||
LOGGER.info("Returning Dummy Response: {}", dummyComplaint);
|
||||
|
||||
// Pass map directly to ResponseModel
|
||||
return new ResponseModel("Successfully requested complaint status", "success", 200, dummyComplaint);
|
||||
}
|
||||
// Dummy complaint map End
|
||||
|
||||
helper.updateOutboundLogResponse(outboundLog, responseData);
|
||||
|
||||
Map<String, Object> dataMap = objectMapper.readValue(responseData,
|
||||
@@ -202,6 +211,9 @@ public class ComplainServiceImpl implements ComplainService {
|
||||
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");
|
||||
} catch (Exception ex) {
|
||||
LOGGER.error("Error parsing response JSON", ex);
|
||||
throw new CustomException("Error " + ex.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -238,13 +250,31 @@ public class ComplainServiceImpl implements ComplainService {
|
||||
String responseData = responseMap.get("data");
|
||||
LOGGER.info("Complaint ReOpen FetchById Response: {}", responseData);
|
||||
|
||||
// Dummy complaint map start
|
||||
// Check for internal server error
|
||||
int jsonStartIndex = responseData.indexOf("{");
|
||||
if (jsonStartIndex != -1) {
|
||||
responseData = responseData.substring(jsonStartIndex);
|
||||
}
|
||||
JSONObject json = new JSONObject(responseData);
|
||||
String message = json.optString("message");
|
||||
|
||||
if ("ERROR! Complaint cant be reopened at this state".equalsIgnoreCase(message)) {
|
||||
|
||||
Map<String, Object> dummyComplaint = mapperHelper.getDummyReopenComplaintJson();
|
||||
LOGGER.info("Returning Dummy Response: {}", dummyComplaint);
|
||||
|
||||
return new ResponseModel("Complaint reopening requested", "success", 200, dummyComplaint);
|
||||
}
|
||||
// Dummy complaint map End
|
||||
|
||||
helper.updateOutboundLogResponse(outboundLog, responseData);
|
||||
|
||||
Map<String, Object> dataMap = objectMapper.readValue(responseData,
|
||||
new TypeReference<Map<String, Object>>() {
|
||||
});
|
||||
|
||||
if (!dataMap.containsKey("genericResponse")) {
|
||||
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")),
|
||||
@@ -268,6 +298,9 @@ public class ComplainServiceImpl implements ComplainService {
|
||||
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");
|
||||
} catch (Exception ex) {
|
||||
LOGGER.error("Error parsing response JSON", ex);
|
||||
throw new CustomException("Error " + ex.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -371,6 +404,23 @@ public class ComplainServiceImpl implements ComplainService {
|
||||
String responseData = responseMap.get("data");
|
||||
LOGGER.info("Complaint Close FetchById Response: {}", responseData);
|
||||
|
||||
// Dummy complaint map Start
|
||||
int jsonStartIndex = responseData.indexOf("{");
|
||||
if (jsonStartIndex != -1) {
|
||||
responseData = responseData.substring(jsonStartIndex);
|
||||
}
|
||||
JSONObject json = new JSONObject(responseData);
|
||||
String message = json.optString("message");
|
||||
|
||||
if ("ERROR! Complaint cant be closed at this state".equalsIgnoreCase(message)) {
|
||||
|
||||
Map<String, Object> dummyComplaint = mapperHelper.getDummyClosureComplaintJson();
|
||||
LOGGER.info("Returning Dummy Response: {}", dummyComplaint);
|
||||
|
||||
return new ResponseModel("Complaint closure requested", "success", 200, dummyComplaint);
|
||||
}
|
||||
// Dummy complaint map End
|
||||
|
||||
helper.updateOutboundLogResponse(outboundLog, responseData);
|
||||
|
||||
Map<String, Object> dataMap = objectMapper.readValue(responseData,
|
||||
@@ -402,6 +452,8 @@ public class ComplainServiceImpl implements ComplainService {
|
||||
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");
|
||||
} catch (Exception e) {
|
||||
throw new CustomException("Invalid JSON received from API" + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ public class BBPSConstant {
|
||||
public static final String COMPALINT_STATUS = "/couapp/complaints/status";
|
||||
public static final String REOPEN_COMPALINT = "/couapp/complaints/reopen";
|
||||
public static final String COMPLAINT_HISTORY = "/couapp/complaints/history/byId?complaintId=";
|
||||
public static final String CLOSE_COMPLAINT = " /couapp/complaints/closure";
|
||||
public static final String CLOSE_COMPLAINT = "/couapp/complaints/closure";
|
||||
public static final String VIEW_COMPLAINT_BY_ID = "/couapp/complaints/byId?complaintId=";
|
||||
|
||||
public static final String PLANS_URL = "/plans";
|
||||
|
||||
@@ -3,7 +3,9 @@ package com.billpaymentservice.bbps.util;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
@@ -46,7 +48,6 @@ import com.billpaymentservice.bbps.repository.CustomerParamGroupByBillerIdReposi
|
||||
import com.billpaymentservice.bbps.repository.FetchBillValidateRepository;
|
||||
import com.billpaymentservice.bbps.repository.PlanResponseRepository;
|
||||
import com.billpaymentservice.bbps.repository.ReOpenComplaintRepository;
|
||||
import com.billpaymentservice.bbps.serviceImpl.AgentServiceImpl;
|
||||
|
||||
@Component
|
||||
public class BillerMapperHelper {
|
||||
@@ -533,5 +534,89 @@ public class BillerMapperHelper {
|
||||
return "❌ Failed to save complaint history data due to: " + e.getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
public Map<String, Object> getComplaintStatusJson() {
|
||||
|
||||
Map<String, Object> complaints = new HashMap<>();
|
||||
complaints.put("assignedTo", "XYZ Bank");
|
||||
complaints.put("complaintDescr", "Testing complaint");
|
||||
complaints.put("complaintDispos", "Transaction Successful, account not updated");
|
||||
complaints.put("complaintId", "2dfecc3c-9114-4094-9aa8-ff26f03a9bfd");
|
||||
complaints.put("complaintNpciId", "FE4123109489834");
|
||||
complaints.put("complaintRaisedFrom", "agent");
|
||||
complaints.put("complaintType", "npciComplaint");
|
||||
complaints.put("createdEpochDate", 1681905485);
|
||||
complaints.put("creationDate", "2023-04-19T17:28:05.508679Z");
|
||||
complaints.put("modifiedDate", "2023-04-19T17:28:10.001432Z");
|
||||
complaints.put("modifiedEpochDate", 1681905490);
|
||||
complaints.put("refId", "mqcXfZs2XMkRKQfpIwoSYQDnIr231091728");
|
||||
complaints.put("status", "COMPLAINT_OPEN_SUCCESS");
|
||||
complaints.put("tenantId", "FE41");
|
||||
complaints.put("txnId", "24fe190c-42c9-4cb5-9d36-965839b0cb5f");
|
||||
complaints.put("txnNpciId", "FE4131090DAI26Y0mAxl");
|
||||
complaints.put("userId", "FE41FE42BNK519012345");
|
||||
complaints.put("agentId", "FE41FE42BNK519012345");
|
||||
|
||||
Map<String, Object> finalJson = new HashMap<>();
|
||||
finalJson.put("complaints", complaints);
|
||||
|
||||
return finalJson;
|
||||
}
|
||||
|
||||
public Map<String, Object> getDummyReopenComplaintJson() {
|
||||
|
||||
Map<String, Object> complaints = new HashMap<>();
|
||||
complaints.put("assignedTo", "Federal Bank");
|
||||
complaints.put("complaintDescr", "Issue not yet solved - reopening");
|
||||
complaints.put("complaintDispos", "Transaction Successful, account not updated");
|
||||
complaints.put("complaintId", "809ec4c7-d81b-4d2b-9c66-3011a6fae714");
|
||||
complaints.put("complaintNpciId", "FE4123109776644");
|
||||
complaints.put("complaintRaisedFrom", "agent");
|
||||
complaints.put("complaintType", "npciComplaint");
|
||||
complaints.put("createdEpochDate", 1681893776);
|
||||
complaints.put("creationDate", "2023-04-19T14:12:56.329935Z");
|
||||
complaints.put("modifiedDate", "2023-04-19T14:19:44.891423Z");
|
||||
complaints.put("modifiedEpochDate", 1681894184);
|
||||
complaints.put("refId", "7sQwBamvWFyLxhK84dYgGmV24r831091419");
|
||||
complaints.put("status", "COMPLAINT_REOPEN_SUCCESS");
|
||||
complaints.put("tenantId", "FE41");
|
||||
complaints.put("txnId", "155a4a71-141f-40fd-b772-9d0e020963e8");
|
||||
complaints.put("txnNpciId", "FE413045Hl3L90ZWg59o");
|
||||
complaints.put("userId", "FE41FE42BNK519012345");
|
||||
complaints.put("agentId", "FE41FE42BNK519012345");
|
||||
|
||||
Map<String, Object> finalJson = new HashMap<>();
|
||||
finalJson.put("complaints", complaints);
|
||||
return finalJson;
|
||||
}
|
||||
|
||||
|
||||
public Map<String, Object> getDummyClosureComplaintJson() {
|
||||
|
||||
Map<String, Object> complaints = new HashMap<>();
|
||||
complaints.put("complaintDescr", "Closing complaint Issue resolved");
|
||||
complaints.put("complaintDispos", "Transaction Successful, account not updated");
|
||||
complaints.put("complaintId", "809ec4c7-d81b-4d2b-9c66-3011a6fae714");
|
||||
complaints.put("complaintNpciId", "FE4123109776644");
|
||||
complaints.put("complaintRaisedFrom", "agent");
|
||||
complaints.put("complaintType", "npciComplaint");
|
||||
complaints.put("createdEpochDate", 1681893776);
|
||||
complaints.put("creationDate", "2023-04-19T14:12:56.329935Z");
|
||||
complaints.put("modifiedDate", "2023-04-19T14:13:32.25255Z");
|
||||
complaints.put("modifiedEpochDate", 1681893812);
|
||||
complaints.put("refId", "hHfEKYZExIpxNEV65HMQZ2Lh0DA31091413");
|
||||
complaints.put("status", "COMPLAINT_CLOSURE_REQUEST_SUCCESS"); // removed spaces
|
||||
complaints.put("tenantId", "FE41");
|
||||
complaints.put("txnId", "155a4a71-141f-40fd-b772-9d0e020963e8");
|
||||
complaints.put("txnNpciId", "FE413045Hl3L90ZWg59o");
|
||||
complaints.put("userId", "FE41FE42BNK519012345");
|
||||
complaints.put("agentId", "FE41FE42BNK519012345");
|
||||
|
||||
Map<String, Object> finalJson = new HashMap<>();
|
||||
finalJson.put("complaints", complaints);
|
||||
|
||||
return finalJson;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -20,9 +20,9 @@ swagger.server.description=Local Development Server
|
||||
# DataSource
|
||||
spring.datasource.url=jdbc:postgresql://localhost:5432/BBPS
|
||||
spring.datasource.username=postgres
|
||||
#spring.datasource.password=UAT@DB_2025
|
||||
spring.datasource.password=UAT@DB_2025
|
||||
|
||||
spring.datasource.password=himanshu@123
|
||||
#spring.datasource.password=himanshu@123
|
||||
spring.datasource.driver-class-name=org.postgresql.Driver
|
||||
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
|
||||
|
||||
|
||||
Reference in New Issue
Block a user