Jelajahi Sumber

安盛报价

xuqiang 5 bulan lalu
induk
melakukan
b74f78ad09

+ 46 - 6
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/config/WebClientConfig.java

@@ -7,13 +7,11 @@ import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
 import io.netty.handler.timeout.ReadTimeoutHandler;
 import io.netty.handler.timeout.WriteTimeoutHandler;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.http.ssl.SSLContextBuilder;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
 import org.springframework.http.client.reactive.ReactorClientHttpConnector;
-import org.springframework.util.ResourceUtils;
 import org.springframework.web.reactive.function.client.ExchangeFilterFunction;
 import org.springframework.web.reactive.function.client.ExchangeStrategies;
 import org.springframework.web.reactive.function.client.WebClient;
@@ -21,16 +19,13 @@ import org.springframework.web.util.DefaultUriBuilderFactory;
 import reactor.core.publisher.Mono;
 import reactor.netty.http.client.HttpClient;
 import reactor.netty.resources.ConnectionProvider;
-import reactor.netty.tcp.SslProvider;
 
-import javax.net.ssl.SSLContext;
 import javax.net.ssl.TrustManager;
 import javax.net.ssl.X509TrustManager;
-import java.security.SecureRandom;
 import java.security.cert.X509Certificate;
 import java.time.Duration;
-import java.util.concurrent.ConcurrentHashMap;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * @description: WebClientCon 配置类
@@ -137,6 +132,51 @@ public class WebClientConfig {
         })).build();
     }
 
+
+    public WebClient createSecureWebClientAs(String domain) throws Exception {
+        // 配置HTTP连接池
+        ConnectionProvider connectionProvider = ConnectionProvider.builder("secure-" + domain)
+                .maxConnections(CONNECTION_PROVIDER_MAX_CONNECTIONS)
+                .maxIdleTime(CONNECTION_PROVIDER_MAX_IDLE_TIME)
+                .build();
+
+        SslContext sslContext = SslContextBuilder.forClient()
+                .trustManager(InsecureTrustManagerFactory.INSTANCE)
+                .build();
+
+        // 配置带SSL的HTTP客户端
+        HttpClient httpClient = HttpClient.create(connectionProvider)
+                .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, HTTPCLIENT_CONNECT_TIMEOUT_MILLIS)
+                .responseTimeout(HTTPCLIENT_RESPONSE_TIMEOUT)
+                .secure(spec -> spec.sslContext(sslContext))
+                .doOnConnected(conn -> conn
+                        .addHandlerLast(new ReadTimeoutHandler(READ_TIMEOUT))
+                        .addHandlerLast(new WriteTimeoutHandler(WRITE_TIMEOUT))
+                );
+
+        // 构建WebClient实例(后续代码无修改)
+        DefaultUriBuilderFactory factory = new DefaultUriBuilderFactory();
+        factory.setEncodingMode(DefaultUriBuilderFactory.EncodingMode.VALUES_ONLY);
+        return WebClient.builder()
+                .exchangeStrategies(ExchangeStrategies.builder()
+                        .codecs(clientCodecConfigurer -> clientCodecConfigurer.defaultCodecs()
+                                .maxInMemorySize(MAX_IN_MEMORY_SIZE))
+                        .build())
+                .uriBuilderFactory(factory)
+                .clientConnector(new ReactorClientHttpConnector(httpClient))
+                .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
+                .defaultHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE)
+                .filter(ExchangeFilterFunction.ofRequestProcessor(clientRequest -> {
+                    log.info("Secure client request: {}", clientRequest.url());
+                    clientRequest.headers().forEach((key, values) -> {
+                        log.info("请求头: {}: {}", key, values);
+                    });
+                    return Mono.just(clientRequest);
+                }))
+                .build();
+    }
+
+
     /**
      * 根据域名获取对应的SSL上下文
      *

+ 1 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/async/AnShengAsyncPayLink.java → tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/async/AsyncGetPayLink.java

@@ -20,7 +20,7 @@ import java.util.concurrent.CompletableFuture;
 
 @Component
 @Slf4j
-public class AnShengAsyncPayLink {
+public class AsyncGetPayLink {
 
     @Autowired
     InsOrdersQrcodeService insOrdersQrcodeService;

+ 6 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java

@@ -37,6 +37,7 @@ import com.jzg.quotation.commons.utils.SnowFlakeUtil;
 import com.jzg.quotation.summary.aop.AuditVerification;
 import com.jzg.quotation.summary.aop.OrderOperationLog;
 import com.jzg.quotation.summary.aop.QuoteVerification;
+import com.jzg.quotation.summary.async.AsyncGetPayLink;
 import com.jzg.quotation.summary.classifier.QuoteInfoParameterFilling;
 import com.jzg.quotation.summary.constants.QuoteNumberConstant;
 import com.jzg.quotation.summary.converter.QuoteInfoConverter;
@@ -141,6 +142,9 @@ public class UnifyOrderManager {
     @Autowired
     private InsOrdersAccidentalDrivingService insOrdersAccidentalDrivingService;
 
+    @Autowired
+    private AsyncGetPayLink asyncGetPayLink;
+
     private String getSystemCode() {
         //如果是APP登录的话 则传递SystemCode的头部字段
         if (baseController.getUserSystemCode().equals("APP")) {
@@ -372,6 +376,7 @@ public class UnifyOrderManager {
                     insOrderRightsInfoService.saveInsOrderRightsInfo(underwritingVo.getInsOrderRightsInfoDto(), underwritingVo.getOrder().getOrdersNo());
                 }
             }
+            asyncGetPayLink.paymentLink(quoteService,underwritingVo.getOrder(),esmInsCompanyHttpResult.getData().getCompanyCode());
             return HttpResult.ok("核保成功");
         } else {
             if (underwritingResultsVo.getUnderwritingStatus().equals(InsOrderStatusEnum.AUDIT_FAIL)) {
@@ -388,6 +393,7 @@ public class UnifyOrderManager {
         }
     }
 
+
     /**
      * 获取支付连接
      *