From 680d05b5bdd01627a08dd85561f1dc03bed5990f Mon Sep 17 00:00:00 2001 From: himanshu Date: Mon, 3 Nov 2025 10:49:04 +0530 Subject: [PATCH] merging code arham1 --- pom.xml | 157 +++++++++--------- .../bbps/serviceImpl/AgentServiceImpl.java | 1 - .../serviceImpl/MasterDataServiceImpl.java | 60 +------ .../bbps/serviceImpl/PaymentServiceImpl.java | 3 +- .../bbps/util/EntityRelationshipUtil.java | 66 ++++++++ .../bbps/BbpsApplicationTests.java | 9 +- .../controller/TestHttpControllerTest.java | 28 ---- 7 files changed, 150 insertions(+), 174 deletions(-) create mode 100644 src/main/java/com/billpaymentservice/bbps/util/EntityRelationshipUtil.java rename src/test/java/com/{lincpay => billpaymentservice}/bbps/BbpsApplicationTests.java (64%) delete mode 100644 src/test/java/com/billpaymentservice/bbps/controller/TestHttpControllerTest.java diff --git a/pom.xml b/pom.xml index c73831f..19bf1de 100644 --- a/pom.xml +++ b/pom.xml @@ -2,55 +2,38 @@ + 4.0.0 + org.springframework.boot spring-boot-starter-parent - 3.2.5 - + 3.2.7 + + com.billpaymentservice.bbps bbps 0.0.1-SNAPSHOT war bbps This is the bbps switch project - - - - - - - - - - - - - + 17 + - - io.github.resilience4j - resilience4j-spring-boot3 - 2.2.0 - + org.springframework.boot - spring-boot-starter-aop + spring-boot-starter - - org.springframework.boot - spring-boot-starter-data-jpa - org.springframework.boot spring-boot-starter-web - org.apache.httpcomponents httpclient @@ -58,59 +41,51 @@ - - com.fasterxml.jackson.dataformat - jackson-dataformat-xml - 2.13.3 - org.springframework.boot - spring-boot-devtools - runtime - true - - - org.postgresql - postgresql - runtime - - - org.projectlombok - lombok - 1.18.30 - provided + spring-boot-starter-data-jpa - com.nimbusds - nimbus-jose-jwt - 9.37 + org.springframework.boot + spring-boot-starter-aop + + org.springframework.boot spring-boot-starter-tomcat provided - - org.springframework.boot - spring-boot-starter - - - org.modelmapper - modelmapper - 3.2.0 - + - org.springframework.boot - spring-boot-starter-test - test + org.postgresql + postgresql + runtime + + - org.springdoc - springdoc-openapi-starter-webmvc-ui - 2.5.0 + io.github.resilience4j + resilience4j-spring-boot3 + 2.2.0 + + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + + + + + com.nimbusds + nimbus-jose-jwt + 9.37 + + + org.apache.httpcomponents.client5 httpclient5 @@ -121,32 +96,56 @@ httpcore5 5.2.5 - org.apache.httpcomponents.core5 httpcore5-h2 5.2.5 + + + org.modelmapper + modelmapper + 3.2.0 + - + - org.apache.httpcomponents.client5 - httpclient5-fluent - 5.3.1 + org.projectlombok + lombok + 1.18.30 + provided + + + + + org.springframework.boot + spring-boot-devtools runtime + true + + + + org.springdoc + springdoc-openapi-starter-webmvc-ui + 2.5.0 + + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.boot spring-boot-configuration-processor true - - org.springframework.boot - spring-boot-configuration-processor - true - + @@ -159,7 +158,7 @@ org.projectlombok lombok - 1.18.42 + 1.18.30 @@ -168,14 +167,6 @@ org.springframework.boot spring-boot-maven-plugin - - - - org.projectlombok - lombok - - - diff --git a/src/main/java/com/billpaymentservice/bbps/serviceImpl/AgentServiceImpl.java b/src/main/java/com/billpaymentservice/bbps/serviceImpl/AgentServiceImpl.java index 9324377..aceaffd 100644 --- a/src/main/java/com/billpaymentservice/bbps/serviceImpl/AgentServiceImpl.java +++ b/src/main/java/com/billpaymentservice/bbps/serviceImpl/AgentServiceImpl.java @@ -61,7 +61,6 @@ public class AgentServiceImpl implements AgentService { headers.set("agentId", headersData.getAgentId()); headers.set("tenantId", headersData.getTenantId()); headers.setContentType(MediaType.APPLICATION_JSON); - ResponseModel responseModel = new ResponseModel(); try { diff --git a/src/main/java/com/billpaymentservice/bbps/serviceImpl/MasterDataServiceImpl.java b/src/main/java/com/billpaymentservice/bbps/serviceImpl/MasterDataServiceImpl.java index f33fdf5..0142d2c 100644 --- a/src/main/java/com/billpaymentservice/bbps/serviceImpl/MasterDataServiceImpl.java +++ b/src/main/java/com/billpaymentservice/bbps/serviceImpl/MasterDataServiceImpl.java @@ -44,6 +44,7 @@ import com.billpaymentservice.bbps.repository.DispositionRepository; import com.billpaymentservice.bbps.repository.MerchantRepository; import com.billpaymentservice.bbps.service.MasterDataService; 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; @@ -62,10 +63,8 @@ public class MasterDataServiceImpl implements MasterDataService { private MerchantRepository merchantRegisterRepo; private HttpClientApi httpClientApi; private final DispositionRepository dispositionRepository; - private Helper helper; + private final Helper helper; private final BillerDataRepository billerDataRespository; - - private static final Logger log = LoggerFactory.getLogger(MasterDataServiceImpl.class); private final HttpService httpService; private final ObjectMapper objectMapper = new ObjectMapper(); @@ -109,69 +108,19 @@ public class MasterDataServiceImpl implements MasterDataService { Integer.parseInt(String.valueOf(dataMap.get("statusCode"))), // statusCode (int) String.valueOf(dataMap.get("remarks")) ); } - BillerDataResponse responseWrapper = objectMapper.convertValue(dataMap, BillerDataResponse.class); GeneralResp generalResp = responseWrapper.getGeneralResp(); ModelMapper mapper = new ModelMapper(); mapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT); BillerDetails entity = mapper.map(responseWrapper.getBillerDAO(), BillerDetails.class); - - // Manually set parent reference - if (entity.getBillerPaymentModes() != null) { - entity.getBillerPaymentModes().forEach(m -> m.setBiller(entity)); - } - if (entity.getBillerPaymentChannels() != null) { - entity.getBillerPaymentChannels().forEach(c -> c.setBiller(entity)); - } - if (entity.getBillerCustomerParams() != null) { - entity.getBillerCustomerParams().forEach(p -> p.setBiller(entity)); - } - if (entity.getBillerAdditionalInfos() != null) { - entity.getBillerAdditionalInfos().forEach(a -> a.setBiller(entity)); - } - if (entity.getInterchangeFees() != null) { - for (InterchangeFee fee : entity.getInterchangeFees()) { - fee.setBiller(entity); // link InterchangeFee → BillerDetails - - if (fee.getInterchangeFeeDetails() != null) { - for (InterchangeFeeDetail detail : fee.getInterchangeFeeDetails()) { - detail.setInterchangeFee(fee); // link InterchangeFeeDetail → InterchangeFee - } - } - } - } - - if (entity.getInterchangeFeeConves() != null) { - entity.getInterchangeFeeConves().forEach(fc -> fc.setBiller(entity)); - } - - // For OneToOne relationships - if (entity.getCustomerParamGroups() != null) - entity.getCustomerParamGroups().setBiller(entity); - - if (entity.getBillerPlanResponseParams() != null) - entity.getBillerPlanResponseParams().setBiller(entity); - - // 🔥🔥🔥 YEH MISSING CODE ADD KARO 🔥🔥🔥 - if (entity.getBillerResponseParams() != null) { - BillerResponseParams responseParams = entity.getBillerResponseParams(); - responseParams.setBiller(entity); // Parent reference - - // 🔥 AMOUNT OPTIONS KE RELATIONSHIPS SET KARO - if (responseParams.getAmountOptions() != null) { - for (AmountOption option : responseParams.getAmountOptions()) { - option.setBillerResponseParams(responseParams); // YEH MISSING THA - } - } - } - billerDataRespository.save(entity); + EntityRelationshipUtil.linkBillerRelationships(entity); + // billerDataRespository.save(entity); ResponseModel responseModel = new ResponseModel( generalResp.getMessage(), generalResp.getStatus(), Integer.parseInt(generalResp.getStatusCode()), responseWrapper ); - return responseModel; } catch (JsonProcessingException e) { @@ -216,7 +165,6 @@ public class MasterDataServiceImpl implements MasterDataService { Integer.parseInt(generalResp.getStatusCode()), responseWrapper ); - return responseModel; } catch (JsonProcessingException e) { diff --git a/src/main/java/com/billpaymentservice/bbps/serviceImpl/PaymentServiceImpl.java b/src/main/java/com/billpaymentservice/bbps/serviceImpl/PaymentServiceImpl.java index 89c2dd8..c98fe39 100644 --- a/src/main/java/com/billpaymentservice/bbps/serviceImpl/PaymentServiceImpl.java +++ b/src/main/java/com/billpaymentservice/bbps/serviceImpl/PaymentServiceImpl.java @@ -59,7 +59,7 @@ public class PaymentServiceImpl implements PaymentService { public ResponseModel initiatePayment(BillPaymentRequest billPaymentRequest) { String url = paymentUrl + BBPSConstant.PAYMENT_URL; - System.out.println(url); + System.out.println(url); BharatConnectMaster headersData = beneficiaryDetailsRepository.findByOrgId("ORG001"); @@ -102,6 +102,7 @@ public class PaymentServiceImpl implements PaymentService { BillPaymentResponse billPaymentResponse = objectMapper.convertValue(dataMap, BillPaymentResponse.class); System.out.print(billPaymentResponse); GeneralResp generalResponse = billPaymentResponse.getGenericResponse(); + // // start a new thread here /* diff --git a/src/main/java/com/billpaymentservice/bbps/util/EntityRelationshipUtil.java b/src/main/java/com/billpaymentservice/bbps/util/EntityRelationshipUtil.java new file mode 100644 index 0000000..86048d1 --- /dev/null +++ b/src/main/java/com/billpaymentservice/bbps/util/EntityRelationshipUtil.java @@ -0,0 +1,66 @@ +package com.billpaymentservice.bbps.util; + +import com.billpaymentservice.bbps.entites.*; + +public class EntityRelationshipUtil { + + private EntityRelationshipUtil() { + // prevent instantiation + } + + /** + * Links all parent-child relationships for BillerDetails and nested entities. + * Ensures bidirectional JPA relationships are correctly set before saving. + */ + public static void linkBillerRelationships(BillerDetails entity) { + + if (entity == null) return; + + if (entity.getBillerPaymentModes() != null) { + entity.getBillerPaymentModes().forEach(m -> m.setBiller(entity)); + } + + if (entity.getBillerPaymentChannels() != null) { + entity.getBillerPaymentChannels().forEach(c -> c.setBiller(entity)); + } + + if (entity.getBillerCustomerParams() != null) { + entity.getBillerCustomerParams().forEach(p -> p.setBiller(entity)); + } + + if (entity.getBillerAdditionalInfos() != null) { + entity.getBillerAdditionalInfos().forEach(a -> a.setBiller(entity)); + } + + if (entity.getInterchangeFees() != null) { + for (InterchangeFee fee : entity.getInterchangeFees()) { + fee.setBiller(entity); + + if (fee.getInterchangeFeeDetails() != null) { + fee.getInterchangeFeeDetails().forEach(detail -> detail.setInterchangeFee(fee)); + } + } + } + + if (entity.getInterchangeFeeConves() != null) { + entity.getInterchangeFeeConves().forEach(fc -> fc.setBiller(entity)); + } + + if (entity.getCustomerParamGroups() != null) + entity.getCustomerParamGroups().setBiller(entity); + + if (entity.getBillerPlanResponseParams() != null) + entity.getBillerPlanResponseParams().setBiller(entity); + + if (entity.getBillerResponseParams() != null) { + BillerResponseParams responseParams = entity.getBillerResponseParams(); + responseParams.setBiller(entity); + + if (responseParams.getAmountOptions() != null) { + responseParams.getAmountOptions() + .forEach(option -> option.setBillerResponseParams(responseParams)); + } + } + } +} + diff --git a/src/test/java/com/lincpay/bbps/BbpsApplicationTests.java b/src/test/java/com/billpaymentservice/bbps/BbpsApplicationTests.java similarity index 64% rename from src/test/java/com/lincpay/bbps/BbpsApplicationTests.java rename to src/test/java/com/billpaymentservice/bbps/BbpsApplicationTests.java index 2068271..4d08e97 100644 --- a/src/test/java/com/lincpay/bbps/BbpsApplicationTests.java +++ b/src/test/java/com/billpaymentservice/bbps/BbpsApplicationTests.java @@ -1,4 +1,4 @@ -package com.lincpay.bbps; +package com.billpaymentservice.bbps; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @@ -6,8 +6,7 @@ import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class BbpsApplicationTests { - @Test - void contextLoads() { - } - + @Test + void contextLoads() { + } } diff --git a/src/test/java/com/billpaymentservice/bbps/controller/TestHttpControllerTest.java b/src/test/java/com/billpaymentservice/bbps/controller/TestHttpControllerTest.java deleted file mode 100644 index 625d96d..0000000 --- a/src/test/java/com/billpaymentservice/bbps/controller/TestHttpControllerTest.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.billpaymentservice.bbps.controller; - -import com.billpaymentservice.bbps.serviceImpl.HttpService; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; - -import java.util.HashMap; - -import static org.junit.jupiter.api.Assertions.*; - -@SpringBootTest -public class TestHttpControllerTest { - - @Autowired - private HttpService httpService; - - @Test - void testGetRequest() { - String url = "https://bbps-staging.digiledge.in/agent/cou-master/masters/billersById?billerId=ADAN00000HAR02"; // Dummy public GET API - HashMap response = httpService.getRequest(url); - System.out.println("✅ GET Response: " + response); - - System.out.println(response); - } - - -}