From 86b6c1f25f2053876a38d0f4f95a39b94bcd5b84 Mon Sep 17 00:00:00 2001 From: Lincpay Tech Date: Wed, 24 Dec 2025 13:41:37 +0530 Subject: [PATCH] added db optimization for the get master data and get billerdetails --- .../bbps/dto/AdditionalInfoDTO.java | 2 + .../bbps/dto/AmountOptionDTO.java | 2 + .../bbps/dto/BillerAdditonalInfoDTO.java | 2 + .../bbps/dto/BillerDTO.java | 3 +- .../bbps/dto/BillerPlanResponseParamsDTO.java | 2 + .../bbps/dto/BillerResponseParamsDTO.java | 2 + .../bbps/dto/CustomerParamDTO.java | 2 + .../bbps/dto/FaqDetailsResponse.java | 2 + .../billpaymentservice/bbps/dto/GroupDTO.java | 2 + .../bbps/dto/InterchangeFeeConfDTO.java | 2 + .../bbps/dto/InterchangeFeeDTO.java | 2 + .../bbps/dto/InterchangeFeeDetailDTO.java | 2 + .../bbps/dto/PaymentChannelDTO.java | 2 + .../bbps/dto/PaymentModeDTO.java | 2 + .../bbps/dto/response/CategoryResponse.java | 2 + .../bbps/entites/CategoryMaster.java | 22 +++ .../repository/CategoryMasterRepository.java | 11 ++ .../serviceImpl/MasterDataServiceImpl.java | 130 ++++++++++++++++-- .../bbps/util/BBPSConstant.java | 1 + 19 files changed, 183 insertions(+), 12 deletions(-) create mode 100644 src/main/java/com/billpaymentservice/bbps/entites/CategoryMaster.java create mode 100644 src/main/java/com/billpaymentservice/bbps/repository/CategoryMasterRepository.java diff --git a/src/main/java/com/billpaymentservice/bbps/dto/AdditionalInfoDTO.java b/src/main/java/com/billpaymentservice/bbps/dto/AdditionalInfoDTO.java index de80cae..56f5c9d 100644 --- a/src/main/java/com/billpaymentservice/bbps/dto/AdditionalInfoDTO.java +++ b/src/main/java/com/billpaymentservice/bbps/dto/AdditionalInfoDTO.java @@ -2,9 +2,11 @@ package com.billpaymentservice.bbps.dto; import jakarta.validation.constraints.NotBlank; import lombok.Getter; import lombok.Setter; +import lombok.ToString; @Getter @Setter +@ToString public class AdditionalInfoDTO { @NotBlank(message = "Param Config ID cannot be blank") private String paramConfigId; diff --git a/src/main/java/com/billpaymentservice/bbps/dto/AmountOptionDTO.java b/src/main/java/com/billpaymentservice/bbps/dto/AmountOptionDTO.java index 29be206..3eab9d1 100644 --- a/src/main/java/com/billpaymentservice/bbps/dto/AmountOptionDTO.java +++ b/src/main/java/com/billpaymentservice/bbps/dto/AmountOptionDTO.java @@ -3,9 +3,11 @@ import java.util.List; import lombok.Getter; import lombok.Setter; +import lombok.ToString; @Getter @Setter +@ToString public class AmountOptionDTO{ private String amountOptionId; // Matches "amountOptionId" from JSON private List amountBreakupSets; // Reference to BillerResponseParams (only ID, not full entity) diff --git a/src/main/java/com/billpaymentservice/bbps/dto/BillerAdditonalInfoDTO.java b/src/main/java/com/billpaymentservice/bbps/dto/BillerAdditonalInfoDTO.java index 0cc657c..c9426e9 100644 --- a/src/main/java/com/billpaymentservice/bbps/dto/BillerAdditonalInfoDTO.java +++ b/src/main/java/com/billpaymentservice/bbps/dto/BillerAdditonalInfoDTO.java @@ -2,9 +2,11 @@ package com.billpaymentservice.bbps.dto; import lombok.Getter; import lombok.Setter; +import lombok.ToString; @Getter @Setter +@ToString public class BillerAdditonalInfoDTO { private String paramConfigId; private String paramName; diff --git a/src/main/java/com/billpaymentservice/bbps/dto/BillerDTO.java b/src/main/java/com/billpaymentservice/bbps/dto/BillerDTO.java index 99af937..bd2c68b 100644 --- a/src/main/java/com/billpaymentservice/bbps/dto/BillerDTO.java +++ b/src/main/java/com/billpaymentservice/bbps/dto/BillerDTO.java @@ -2,17 +2,18 @@ package com.billpaymentservice.bbps.dto; import java.util.List; -import com.billpaymentservice.bbps.entites.AdditionalInfoBillValidate; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; import lombok.Getter; import lombok.Setter; +import lombok.ToString; @Getter @Setter @JsonIgnoreProperties(ignoreUnknown = true) +@ToString public class BillerDTO { @NotBlank(message = "Biller ID is mandatory") diff --git a/src/main/java/com/billpaymentservice/bbps/dto/BillerPlanResponseParamsDTO.java b/src/main/java/com/billpaymentservice/bbps/dto/BillerPlanResponseParamsDTO.java index 69c369a..367b3ce 100644 --- a/src/main/java/com/billpaymentservice/bbps/dto/BillerPlanResponseParamsDTO.java +++ b/src/main/java/com/billpaymentservice/bbps/dto/BillerPlanResponseParamsDTO.java @@ -3,10 +3,12 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.Getter; import lombok.Setter; +import lombok.ToString; @Getter @Setter @JsonIgnoreProperties(ignoreUnknown = true) +@ToString public class BillerPlanResponseParamsDTO { private String billerPlanResponseId; private String paramsJson; diff --git a/src/main/java/com/billpaymentservice/bbps/dto/BillerResponseParamsDTO.java b/src/main/java/com/billpaymentservice/bbps/dto/BillerResponseParamsDTO.java index e6881b7..103c866 100644 --- a/src/main/java/com/billpaymentservice/bbps/dto/BillerResponseParamsDTO.java +++ b/src/main/java/com/billpaymentservice/bbps/dto/BillerResponseParamsDTO.java @@ -4,9 +4,11 @@ import java.util.List; import lombok.Getter; import lombok.Setter; +import lombok.ToString; @Getter @Setter +@ToString public class BillerResponseParamsDTO { private String billerResponseId; diff --git a/src/main/java/com/billpaymentservice/bbps/dto/CustomerParamDTO.java b/src/main/java/com/billpaymentservice/bbps/dto/CustomerParamDTO.java index 07ce7d1..94d3f2b 100644 --- a/src/main/java/com/billpaymentservice/bbps/dto/CustomerParamDTO.java +++ b/src/main/java/com/billpaymentservice/bbps/dto/CustomerParamDTO.java @@ -5,9 +5,11 @@ import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotBlank; import lombok.Getter; import lombok.Setter; +import lombok.ToString; @Getter @Setter +@ToString public class CustomerParamDTO { private String paramConfigId; @NotBlank(message = "Parameter name is required") diff --git a/src/main/java/com/billpaymentservice/bbps/dto/FaqDetailsResponse.java b/src/main/java/com/billpaymentservice/bbps/dto/FaqDetailsResponse.java index fdec361..bb48714 100644 --- a/src/main/java/com/billpaymentservice/bbps/dto/FaqDetailsResponse.java +++ b/src/main/java/com/billpaymentservice/bbps/dto/FaqDetailsResponse.java @@ -2,9 +2,11 @@ package com.billpaymentservice.bbps.dto; import lombok.Getter; import lombok.Setter; +import lombok.ToString; @Setter @Getter +@ToString public class FaqDetailsResponse { private String name; diff --git a/src/main/java/com/billpaymentservice/bbps/dto/GroupDTO.java b/src/main/java/com/billpaymentservice/bbps/dto/GroupDTO.java index 5a80d65..3b4ab53 100644 --- a/src/main/java/com/billpaymentservice/bbps/dto/GroupDTO.java +++ b/src/main/java/com/billpaymentservice/bbps/dto/GroupDTO.java @@ -4,9 +4,11 @@ import java.util.List; import lombok.Getter; import lombok.Setter; +import lombok.ToString; @Getter @Setter +@ToString public class GroupDTO { private String groupId; diff --git a/src/main/java/com/billpaymentservice/bbps/dto/InterchangeFeeConfDTO.java b/src/main/java/com/billpaymentservice/bbps/dto/InterchangeFeeConfDTO.java index 9093011..5fd296b 100644 --- a/src/main/java/com/billpaymentservice/bbps/dto/InterchangeFeeConfDTO.java +++ b/src/main/java/com/billpaymentservice/bbps/dto/InterchangeFeeConfDTO.java @@ -6,10 +6,12 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import jakarta.validation.constraints.NotBlank; import lombok.Getter; import lombok.Setter; +import lombok.ToString; @Getter @Setter @JsonIgnoreProperties(ignoreUnknown = true) +@ToString public class InterchangeFeeConfDTO { @NotBlank(message = "Interchange Fee Config ID cannot be blank") private String interChangeFeeConfId; diff --git a/src/main/java/com/billpaymentservice/bbps/dto/InterchangeFeeDTO.java b/src/main/java/com/billpaymentservice/bbps/dto/InterchangeFeeDTO.java index 548b95e..bbaa7ec 100644 --- a/src/main/java/com/billpaymentservice/bbps/dto/InterchangeFeeDTO.java +++ b/src/main/java/com/billpaymentservice/bbps/dto/InterchangeFeeDTO.java @@ -6,10 +6,12 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import jakarta.validation.constraints.NotBlank; import lombok.Getter; import lombok.Setter; +import lombok.ToString; @Getter @Setter @JsonIgnoreProperties(ignoreUnknown = true) +@ToString public class InterchangeFeeDTO { @NotBlank(message = "Interchange Fee ID cannot be blank") private String interchangeFeeId; diff --git a/src/main/java/com/billpaymentservice/bbps/dto/InterchangeFeeDetailDTO.java b/src/main/java/com/billpaymentservice/bbps/dto/InterchangeFeeDetailDTO.java index 18efe56..fc0a79c 100644 --- a/src/main/java/com/billpaymentservice/bbps/dto/InterchangeFeeDetailDTO.java +++ b/src/main/java/com/billpaymentservice/bbps/dto/InterchangeFeeDetailDTO.java @@ -3,9 +3,11 @@ package com.billpaymentservice.bbps.dto; import lombok.Getter; import lombok.Setter; +import lombok.ToString; @Getter @Setter +@ToString public class InterchangeFeeDetailDTO { private String interchangeFeeDetId; diff --git a/src/main/java/com/billpaymentservice/bbps/dto/PaymentChannelDTO.java b/src/main/java/com/billpaymentservice/bbps/dto/PaymentChannelDTO.java index 1c6ebd2..a843947 100644 --- a/src/main/java/com/billpaymentservice/bbps/dto/PaymentChannelDTO.java +++ b/src/main/java/com/billpaymentservice/bbps/dto/PaymentChannelDTO.java @@ -4,9 +4,11 @@ import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotBlank; import lombok.Getter; import lombok.Setter; +import lombok.ToString; @Getter @Setter +@ToString public class PaymentChannelDTO { private String paymentChannelLimitId; diff --git a/src/main/java/com/billpaymentservice/bbps/dto/PaymentModeDTO.java b/src/main/java/com/billpaymentservice/bbps/dto/PaymentModeDTO.java index 9ffaea5..558fd9a 100644 --- a/src/main/java/com/billpaymentservice/bbps/dto/PaymentModeDTO.java +++ b/src/main/java/com/billpaymentservice/bbps/dto/PaymentModeDTO.java @@ -7,10 +7,12 @@ import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.PositiveOrZero; import lombok.Getter; import lombok.Setter; +import lombok.ToString; @Getter @Setter @JsonIgnoreProperties(ignoreUnknown = true) +@ToString public class PaymentModeDTO { @NotBlank(message = "Payment model limit ID cannot be blank") private String paymentModelLimitId; diff --git a/src/main/java/com/billpaymentservice/bbps/dto/response/CategoryResponse.java b/src/main/java/com/billpaymentservice/bbps/dto/response/CategoryResponse.java index e243500..c4c4a36 100644 --- a/src/main/java/com/billpaymentservice/bbps/dto/response/CategoryResponse.java +++ b/src/main/java/com/billpaymentservice/bbps/dto/response/CategoryResponse.java @@ -9,12 +9,14 @@ import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import lombok.ToString; @Getter @Setter @Builder @NoArgsConstructor @AllArgsConstructor +@ToString public class CategoryResponse { private String categoryId; diff --git a/src/main/java/com/billpaymentservice/bbps/entites/CategoryMaster.java b/src/main/java/com/billpaymentservice/bbps/entites/CategoryMaster.java new file mode 100644 index 0000000..72c9cfa --- /dev/null +++ b/src/main/java/com/billpaymentservice/bbps/entites/CategoryMaster.java @@ -0,0 +1,22 @@ +package com.billpaymentservice.bbps.entites; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import lombok.Getter; +import lombok.Setter; + +@Entity(name = "bbps_category_master") +@Getter +@Setter + +public class CategoryMaster extends Auditable { + + @Id + private Long categoryId; + + @Column(name = "category_data", columnDefinition = "TEXT") + private String categoryData; +} diff --git a/src/main/java/com/billpaymentservice/bbps/repository/CategoryMasterRepository.java b/src/main/java/com/billpaymentservice/bbps/repository/CategoryMasterRepository.java new file mode 100644 index 0000000..0efe5b2 --- /dev/null +++ b/src/main/java/com/billpaymentservice/bbps/repository/CategoryMasterRepository.java @@ -0,0 +1,11 @@ +package com.billpaymentservice.bbps.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.billpaymentservice.bbps.entites.CategoryMaster; + +@Repository +public interface CategoryMasterRepository extends JpaRepository { + +} diff --git a/src/main/java/com/billpaymentservice/bbps/serviceImpl/MasterDataServiceImpl.java b/src/main/java/com/billpaymentservice/bbps/serviceImpl/MasterDataServiceImpl.java index 9b85106..ddb8c61 100644 --- a/src/main/java/com/billpaymentservice/bbps/serviceImpl/MasterDataServiceImpl.java +++ b/src/main/java/com/billpaymentservice/bbps/serviceImpl/MasterDataServiceImpl.java @@ -1,5 +1,6 @@ package com.billpaymentservice.bbps.serviceImpl; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; @@ -34,6 +35,7 @@ import com.billpaymentservice.bbps.dto.response.AmountOptionsResponse; import com.billpaymentservice.bbps.dto.response.AuthResponses; import com.billpaymentservice.bbps.dto.response.BillerDataResponse; import com.billpaymentservice.bbps.dto.response.BillerResponse; +import com.billpaymentservice.bbps.dto.response.CategoryResponse; import com.billpaymentservice.bbps.dto.response.ChannelsListResponse; import com.billpaymentservice.bbps.dto.response.ContactMasterResponse; import com.billpaymentservice.bbps.dto.response.CustomParamResp; @@ -45,6 +47,7 @@ import com.billpaymentservice.bbps.dto.response.TicketDispositionResponse; import com.billpaymentservice.bbps.entites.BharatConnectMaster; import com.billpaymentservice.bbps.entites.BillerCategoryWise; import com.billpaymentservice.bbps.entites.BillerDetails; +import com.billpaymentservice.bbps.entites.CategoryMaster; import com.billpaymentservice.bbps.entites.CustomParam; import com.billpaymentservice.bbps.entites.DispositionDetails; import com.billpaymentservice.bbps.entites.InboundTraceLog; @@ -53,6 +56,8 @@ import com.billpaymentservice.bbps.entites.PlanResponses; import com.billpaymentservice.bbps.exception.CustomException; import com.billpaymentservice.bbps.repository.BharatConnectMasterRepository; import com.billpaymentservice.bbps.repository.BillerDataRepository; +import com.billpaymentservice.bbps.repository.CategoryMasterRepository; +import com.billpaymentservice.bbps.repository.ContactMasterDataRepository; import com.billpaymentservice.bbps.repository.CustomParamRepository; import com.billpaymentservice.bbps.repository.DispositionRepository; import com.billpaymentservice.bbps.repository.InboundTraceLogRepository; @@ -78,6 +83,8 @@ public class MasterDataServiceImpl implements MasterDataService { private final BharatConnectMasterRepository beneficiaryDetailsRepository; private final BillerMapperHelper mapperHelper; private MerchantRepository merchantRegisterRepo; + private final ContactMasterDataRepository contactMasterDataRepository; + private HttpClientApi httpClientApi; private final DispositionRepository dispositionRepository; @@ -88,12 +95,13 @@ public class MasterDataServiceImpl implements MasterDataService { private final InboundTraceLogRepository inboundTraceLogRepository; private final OutboundTraceLogRepository outboundTraceLogRepository; private final CustomParamRepository customParamReposiotory; + private final CategoryMasterRepository categoryMasterRepository; public MasterDataServiceImpl(MerchantRepository merchantRegisterRepo, HttpService httpService, HttpClientApi httpClientApi, Helper helper, BillerDataRepository billerDataRespository, DispositionRepository dispositionRepository, BharatConnectMasterRepository beneficiaryDetailsRepository, InboundTraceLogRepository inboundTraceLogRepository, OutboundTraceLogRepository outboundTraceLogRepository, - BillerMapperHelper mapperHelper, CustomParamRepository customParamReposiotory) { + BillerMapperHelper mapperHelper, CustomParamRepository customParamReposiotory,ContactMasterDataRepository contactMasterDataRepository,CategoryMasterRepository categoryMasterRepository) { this.merchantRegisterRepo = merchantRegisterRepo; this.httpService = httpService; this.httpClientApi = httpClientApi; @@ -105,6 +113,8 @@ public class MasterDataServiceImpl implements MasterDataService { this.outboundTraceLogRepository = outboundTraceLogRepository; this.mapperHelper = mapperHelper; this.customParamReposiotory = customParamReposiotory; + this.contactMasterDataRepository=contactMasterDataRepository; + this.categoryMasterRepository=categoryMasterRepository; this.objectMapper = new ObjectMapper(); this.objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); @@ -118,7 +128,6 @@ public class MasterDataServiceImpl implements MasterDataService { LOGGER.info("[{}] START | reqId={} | mid={}", apiName, requestId, mid); String txnID = helper.generateTxnId(15); String requestJson = helper.convertObjectToJson(masterRequest); - InboundTraceLog inboundLog = helper.createInboundLog(requestId, txnID, apiName, masterRequest.getMid(), BBPSConstant.HTTP_POST, requestJson); helper.validateMerchant(mid); @@ -137,14 +146,17 @@ public class MasterDataServiceImpl implements MasterDataService { HttpHeaders headers = helper.buildHeaders(headersData); Map responseMap = httpService.getRequest(fullUrl, headers); String responseData = responseMap.get(BBPSConstant.RESPONSE_DATA_KEY); - - helper.updateOutboundLogResponse(outboundLog, responseData); Map dataMap = objectMapper.readValue(responseData, new TypeReference>() { }); if (!dataMap.containsKey(BBPSConstant.RESPONSE_GENERAL_RESP)) { - + + if(categoryMasterRepository.findById(BBPSConstant.CATEGORY_MASTER_SEARCH_ID).isPresent()) { + CategoryMaster existingCategoryMaster = categoryMasterRepository.findById(BBPSConstant.CATEGORY_MASTER_SEARCH_ID).get(); + LOGGER.info("sending category master details from database"); + return buildCategoryResponseFromDB(existingCategoryMaster); + } helper.updateInboundLogFailure(inboundLog, responseData, String.valueOf(dataMap.get(BBPSConstant.RESPONSE_STATUS_KEY))); @@ -157,7 +169,18 @@ public class MasterDataServiceImpl implements MasterDataService { MasterApiResponse responseWrapper = objectMapper.convertValue(dataMap, MasterApiResponse.class); GeneralResp generalResp = responseWrapper.getGeneralResp(); - + + + String result = objectMapper.writeValueAsString( + responseWrapper.getCategoryRespList() + ); + + if(!categoryMasterRepository.findById(BBPSConstant.CATEGORY_MASTER_SEARCH_ID).isPresent()) { + CategoryMaster categoryMaster= new CategoryMaster(); + categoryMaster.setCategoryId(BBPSConstant.CATEGORY_MASTER_SEARCH_ID); + categoryMaster.setCategoryData(result); + categoryMasterRepository.save(categoryMaster); + } ResponseModel responseModel = new ResponseModel(generalResp.getMessage(), generalResp.getStatus(), Integer.parseInt(generalResp.getStatusCode()), responseWrapper); @@ -165,7 +188,13 @@ public class MasterDataServiceImpl implements MasterDataService { LOGGER.info("[{}] END | reqId={} | status={}", apiName, requestId, generalResp.getStatus()); return responseModel; - } catch (JsonProcessingException e) { + } catch (JsonProcessingException e) { + if(categoryMasterRepository.findById(BBPSConstant.CATEGORY_MASTER_SEARCH_ID).isPresent()) { + CategoryMaster existingCategoryMaster = categoryMasterRepository.findById(BBPSConstant.CATEGORY_MASTER_SEARCH_ID).get(); + LOGGER.info("sending category master details from database"); + return buildCategoryResponseFromDB(existingCategoryMaster); + + } LOGGER.error("Error parsing responseData JSON: {}", e.getMessage()); helper.updateInboundLogFailure(inboundLog, e.getMessage(), BBPSConstant.JSON_ERROR); // Use user-friendly message constant and keep internal details in remarks @@ -229,10 +258,14 @@ public class MasterDataServiceImpl implements MasterDataService { // Mapping to Model BillerDataResponse responseWrapper = objectMapper.convertValue(dataMap, BillerDataResponse.class); GeneralResp generalResp = responseWrapper.getGeneralResp(); - BillerDTO billerDto = responseWrapper.getBillerDAO(); + String result = objectMapper.writeValueAsString( + responseWrapper.getBillerDAO() + ); BillerDetails billerDetails=new BillerDetails(); billerDetails.setBillerId(billerDetailRequest.getBillerId()); - billerDetails.setBillerDetailsJson(billerDto.toString()); + billerDetails.setBillerDetailsJson(result); + + billerDataRespository.save(billerDetails); ResponseModel responseModel = new ResponseModel(generalResp.getMessage(), generalResp.getStatus(), Integer.parseInt(generalResp.getStatusCode()), responseWrapper); @@ -241,6 +274,16 @@ public class MasterDataServiceImpl implements MasterDataService { return responseModel; } catch (JsonProcessingException e) { + Optional optional = + billerDataRespository.findByBillerId(billerId); + + if (optional.isPresent()) { + LOGGER.info("sending biller details from database for the billerid:{}", billerId); + + return buildBillerResponseFromDB(optional.get()); + } + + LOGGER.error("Error parsing responseData JSON: {}", e.getMessage()); helper.updateInboundLogFailure(inboundLog, e.getMessage(), BBPSConstant.JSON_ERROR); // Unified constant for invalid JSON @@ -339,7 +382,6 @@ public class MasterDataServiceImpl implements MasterDataService { BBPSConstant.HTTP_POST, requestJson); helper.validateMerchant(mid); try { - LOGGER.info("Contact Master Full URL-:" + fullUrl); OutboundTraceLog outboundLog = helper.createOutboundLog(txnID, requestId, apiName, fullUrl, BBPSConstant.HTTP_GET, null); @@ -354,7 +396,7 @@ public class MasterDataServiceImpl implements MasterDataService { new TypeReference>() { }); - if (!dataMap.containsKey(BBPSConstant.RESPONSE_GENERAL_RESP)) { + if (!dataMap.containsKey(BBPSConstant.RESPONSE_GENERAL_RESP)) { helper.updateInboundLogFailure(inboundLog, responseData, String.valueOf(dataMap.get(BBPSConstant.RESPONSE_STATUS_KEY))); throw new CustomException(String.valueOf(dataMap.get(BBPSConstant.RESPONSE_MESSAGE_KEY)), // message @@ -907,5 +949,71 @@ public class MasterDataServiceImpl implements MasterDataService { throw new CustomException(BBPSConstant.MSG_INVALID_JSON_FROM_UPSTREAM,BBPSConstant.FAILED_STATUS, BBPSConstant.INVALID_JSON_STATUS_CODE, e.getMessage()); } } + + + private ResponseModel buildCategoryResponseFromDB(CategoryMaster categoryMaster) { + try { + // DB me jo JSON string hai usko wapas object banao + List categoryRespList = + objectMapper.readValue( + categoryMaster.getCategoryData(), + new TypeReference>() {} + ); + + MasterApiResponse responseWrapper = new MasterApiResponse(); + responseWrapper.setCategoryRespList(categoryRespList); + + GeneralResp generalResp = new GeneralResp(); + generalResp.setMessage("Data retrieved successfully"); + generalResp.setStatus(BBPSConstant.SUCCESS_RESPONSE); + generalResp.setStatusCode(String.valueOf(BBPSConstant.HTTP_OK_INT)); + + responseWrapper.setGeneralResp(generalResp); + + return new ResponseModel( + generalResp.getMessage(), + generalResp.getStatus(), + Integer.parseInt(generalResp.getStatusCode()), + responseWrapper + ); + + } catch (Exception e) { + throw new CustomException( + "Corrupted cached category master data", + BBPSConstant.FAILED_STATUS, + 500, + e.getMessage() + ); + } + } + + + private ResponseModel buildBillerResponseFromDB(BillerDetails billerDetails) { + try { + // DB me stored JSON ko wapas object banao + BillerDTO billerDAO = objectMapper.readValue( + billerDetails.getBillerDetailsJson(), + BillerDTO.class + ); + + Map data = new HashMap<>(); + data.put("billerDAO", billerDAO); + + return new ResponseModel( + "Biller details retrieved successfully", + BBPSConstant.SUCCESS_RESPONSE, + BBPSConstant.HTTP_OK_INT, + data + ); + + } catch (Exception e) { + throw new CustomException( + "Corrupted cached biller data", + BBPSConstant.FAILED_STATUS, + 500, + e.getMessage() + ); + } + } } diff --git a/src/main/java/com/billpaymentservice/bbps/util/BBPSConstant.java b/src/main/java/com/billpaymentservice/bbps/util/BBPSConstant.java index 96441fa..05ee003 100644 --- a/src/main/java/com/billpaymentservice/bbps/util/BBPSConstant.java +++ b/src/main/java/com/billpaymentservice/bbps/util/BBPSConstant.java @@ -225,6 +225,7 @@ public class BBPSConstant extends BBPS_RESPONSE_COD_CONSTANT { public static final String RESPONSE_TYPE_INTENT = "INTENT"; public static final String RESPONSE_TYPE_WEB = "WEB"; public static final String DATA_RETRIVE_DATABASE = "Data retrieved successfully"; + public static final Long CATEGORY_MASTER_SEARCH_ID = 1L; // Newly added constant for invalid JSON status code