update complaint

This commit is contained in:
Mohd-Arham
2025-12-08 10:05:29 +05:30
parent 1e38efe3c0
commit 7e7b8ae9cf
12 changed files with 92 additions and 29 deletions
@@ -2,13 +2,14 @@ package com.billpaymentservice.bbps.config;
import java.security.cert.X509Certificate; import java.security.cert.X509Certificate;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext; import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager; import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager; import javax.net.ssl.X509TrustManager;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestClient; import org.springframework.web.client.RestClient;
@Configuration @Configuration
@@ -16,24 +17,31 @@ public class RestClientConfig {
@Bean @Bean
public RestClient restClient() throws Exception { public RestClient restClient() throws Exception {
// ✅ Create trust all SSL context
SSLContext sslContext = SSLContext.getInstance("TLS"); // Create Trust-All SSL context
TrustManager[] trustAllCerts = new TrustManager[]{ TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() { new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() { public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0]; return new X509Certificate[0];
} }
public void checkClientTrusted(X509Certificate[] certs, String authType) { public void checkClientTrusted(X509Certificate[] certs, String authType) {}
} public void checkServerTrusted(X509Certificate[] certs, String authType) {}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
} }
}; };
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom()); sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
// ✅ Create RestClient with custom SSL context // Use JDK's Simple HTTP client with custom SSL context
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setBufferRequestBody(false);
// Apply SSL context to HttpsURLConnection globally
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier((hostname, session) -> true);
return RestClient.builder() return RestClient.builder()
.requestFactory(new HttpComponentsClientHttpRequestFactory()) .requestFactory(requestFactory)
.build(); .build();
} }
} }
@@ -1,10 +1,13 @@
package com.billpaymentservice.bbps.dto.request; package com.billpaymentservice.bbps.dto.request;
import jakarta.validation.constraints.NotBlank;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@Getter @Getter
@Setter @Setter
public class PollBackRequest extends BaseClass{ public class PollBackRequest extends BaseClass {
private String orderId;
@NotBlank(message = "order Id not be null")
private String orderId;
} }
@@ -17,7 +17,7 @@ import lombok.Setter;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@Entity @Entity
@Table(name = "Bharat_connect_master") @Table(name = "bharat_connect_master")
public class BharatConnectMaster extends Auditable<String> { public class BharatConnectMaster extends Auditable<String> {
@Id @Id
@@ -7,6 +7,8 @@ import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue; import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType; import jakarta.persistence.GenerationType;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -71,4 +73,8 @@ public class ComplainStatus extends Auditable<String> {
@Column(name = "user_id") @Column(name = "user_id")
private String userId; private String userId;
@ManyToOne
@JoinColumn(name = "complaint_response_id")
private ComplaintResponseEntity complaintResponse;
} }
@@ -7,6 +7,8 @@ import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue; import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType; import jakarta.persistence.GenerationType;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
@@ -46,4 +48,8 @@ public class ComplaintHistory extends Auditable<String> {
@Column(name = "user_id") @Column(name = "user_id")
private String userId; private String userId;
@ManyToOne
@JoinColumn(name = "complaint_response_id")
private ComplaintResponseEntity complaintResponse;
} }
@@ -1,12 +1,16 @@
package com.billpaymentservice.bbps.entites; package com.billpaymentservice.bbps.entites;
import java.util.List;
import com.billpaymentservice.bbps.audit.Auditable; import com.billpaymentservice.bbps.audit.Auditable;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue; import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType; import jakarta.persistence.GenerationType;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -68,4 +72,16 @@ public class ComplaintResponseEntity extends Auditable<String> {
@Column(name = "user_id") @Column(name = "user_id")
private String userId; private String userId;
@OneToMany(mappedBy = "complaintResponse", cascade = CascadeType.ALL, orphanRemoval = false)
private List<ComplainStatus> complaintStatusList;
@OneToMany(mappedBy = "complaintResponse", cascade = CascadeType.ALL, orphanRemoval = false)
private List<ComplaintHistory> historyList;
@OneToMany(mappedBy = "complaintResponse", cascade = CascadeType.ALL, orphanRemoval = false)
private List<ComplaintStatusDetails> statusDetailsList;
@OneToMany(mappedBy = "complaintResponse", cascade = CascadeType.ALL, orphanRemoval = false)
private List<ViewAllComplaintTicketStatusDetails> viewAllList;
} }
@@ -7,6 +7,8 @@ import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue; import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType; import jakarta.persistence.GenerationType;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -87,4 +89,8 @@ public class ComplaintStatusDetails extends Auditable<String> {
@Column(name = "biller_name") @Column(name = "biller_name")
private String billerName; private String billerName;
@ManyToOne
@JoinColumn(name = "complaint_response_id")
private ComplaintResponseEntity complaintResponse;
} }
@@ -7,6 +7,8 @@ import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue; import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType; import jakarta.persistence.GenerationType;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -86,4 +88,8 @@ public class ViewAllComplaintTicketStatusDetails extends Auditable<String> {
@Column(name = "biller_name") @Column(name = "biller_name")
private String billerName; private String billerName;
@ManyToOne
@JoinColumn(name = "complaint_response_id")
private ComplaintResponseEntity complaintResponse;
} }
@@ -9,6 +9,11 @@ import com.billpaymentservice.bbps.entites.BBPSMastersData;
@Repository @Repository
public interface BBPSMasterDataRepo extends JpaRepository<BBPSMastersData, Long> { public interface BBPSMasterDataRepo extends JpaRepository<BBPSMastersData, Long> {
@Query("from BBPSMastersData where mid = ?1 and isDeleted = false") // @Query("from BBPSMastersData where mid = ?1 and isDeleted = false")
public BBPSMastersData findByMid(String mid); // public BBPSMastersData findByMid(String mid);
@Query(value = "SELECT * FROM bbps_master_data WHERE mid = ?1 AND is_deleted = false",
nativeQuery = true)
BBPSMastersData findByMid(String mid);
} }
@@ -1,12 +1,17 @@
package com.billpaymentservice.bbps.repository; package com.billpaymentservice.bbps.repository;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.billpaymentservice.bbps.entites.BharatConnectMaster; import com.billpaymentservice.bbps.entites.BharatConnectMaster;
@Repository @Repository
public interface BharatConnectMasterRepository extends JpaRepository<BharatConnectMaster,String> public interface BharatConnectMasterRepository extends JpaRepository<BharatConnectMaster, String> {
{ // public BharatConnectMaster findByOrgId(String orgId);
public BharatConnectMaster findByOrgId(String orgId);
@Query(value = "SELECT * FROM bharat_connect_master WHERE org_id = :orgId", nativeQuery = true)
BharatConnectMaster findByOrgId(@Param("orgId") String orgId);
} }
@@ -5,6 +5,7 @@ import java.time.LocalDateTime;
import java.util.Date; import java.util.Date;
import java.util.Random; import java.util.Random;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
@@ -71,19 +72,20 @@ public class Helper {
BBPSMastersData merchantValidation = bbpsMasterDataRepo.findByMid(mid); BBPSMastersData merchantValidation = bbpsMasterDataRepo.findByMid(mid);
if (merchantValidation == null) { if (merchantValidation == null) {
LOGGER.warn("Merchant not found for MID: {}", mid); LOGGER.warn("Merchant not found for MID: {}", mid);
throw new CustomException("Merchant not found by id", "FAILED", BBPSConstant.BADREQUEST, null); throw new CustomException("Merchant not found by id", "FAILED", BBPSConstant.BADREQUEST, null);
} }
if (merchantValidation.getApiKey() == null && merchantValidation.getSecreteKey() == null) { if (StringUtils.isBlank(merchantValidation.getApiKey())
LOGGER.warn("Merchant BBPS service is not active MID: {}", mid); && StringUtils.isBlank(merchantValidation.getSecreteKey())) {
throw new CustomException("Merchant BBPS Service is not active by mid", "FAILED", BBPSConstant.BADREQUEST,
null);
}
LOGGER.warn("Merchant BBPS service is not active MID: {}", mid);
throw new CustomException("Merchant BBPS Service is not active by mid",
"FAILED", BBPSConstant.BADREQUEST, null);
}
if (!Boolean.TRUE.equals(merchantValidation.getIsActive())) { if (!Boolean.TRUE.equals(merchantValidation.getIsActive())) {
LOGGER.warn("Merchant inactive for MID: {}", mid); LOGGER.warn("Merchant inactive for MID: {}", mid);
throw new CustomException("Merchant is inactive", "FAILED", BBPSConstant.BADREQUEST, null); throw new CustomException("Merchant is inactive", "FAILED", BBPSConstant.BADREQUEST, null);
} }
LOGGER.info("Merchant is valid and active for MID: {}", mid); LOGGER.info("Merchant is valid and active for MID: {}", mid);
@@ -20,9 +20,9 @@ swagger.server.description=Local Development Server
# DataSource # DataSource
spring.datasource.url=jdbc:postgresql://localhost:5432/BBPS spring.datasource.url=jdbc:postgresql://localhost:5432/BBPS
spring.datasource.username=postgres 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.driver-class-name=org.postgresql.Driver
spring.datasource.type=com.zaxxer.hikari.HikariDataSource spring.datasource.type=com.zaxxer.hikari.HikariDataSource