jinshihui 10 месяцев назад
Родитель
Сommit
99b65945ae
17 измененных файлов с 487 добавлено и 76 удалено
  1. 216 13
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/component/RequestComponent.java
  2. 21 15
      tenant/insurance/quotation-summary/pom.xml
  3. 12 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java
  4. 7 7
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/service/Impl/ZiJinApiRequestImpl.java
  5. 2 2
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/service/Impl/ZiJinOrderServiceImpl.java
  6. 1 1
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/service/ZiJinOrderService.java
  7. 38 23
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/component/ZiJinCrawlerRequestComponent.java
  8. 49 8
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/ZiJinCrawlerTokenInfo.java
  9. 28 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/request/ZiJinCrawlerCommonLoginRequest.java
  10. 91 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/response/ZiJinCrawlerCommonLoginResponse.java
  11. 1 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/enums/RequestUrl.java
  12. 1 1
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/service/ZiJinCrawlerOrderService.java
  13. 1 1
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/service/ZiJinCrawlerRequest.java
  14. 18 3
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/service/impl/ZiJinCrawlerQuoteProcessServiceImpl.java
  15. 0 0
      tenant/insurance/quotation-zijin/src/main/resources/js/auto.js
  16. 1 1
      tenant/insurance/quotation-zijin/src/main/resources/js/content.js
  17. 0 0
      tenant/insurance/quotation-zijin/src/main/resources/js/tsssss.js

+ 216 - 13
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/component/RequestComponent.java

@@ -10,6 +10,7 @@ import org.springframework.core.ParameterizedTypeReference;
 import org.springframework.core.io.buffer.DataBuffer;
 import org.springframework.core.io.buffer.DataBufferUtils;
 import org.springframework.http.*;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
 import org.springframework.util.MultiValueMap;
 import org.springframework.web.reactive.function.BodyInserters;
@@ -24,9 +25,9 @@ import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.nio.file.StandardOpenOption;
-import java.util.Map;
-import java.util.Optional;
+import java.util.*;
 import java.util.function.Consumer;
+import java.util.regex.Pattern;
 
 
 /**
@@ -39,6 +40,34 @@ import java.util.function.Consumer;
 @RequiredArgsConstructor
 public class RequestComponent {
 
+    /**
+     * 过滤JSON字符串中的非法控制字符
+     * 只允许 \r, \n, \t 等标准空白字符
+     *
+     * @param jsonStr 原始JSON字符串
+     * @return String 过滤后的JSON字符串
+     */
+    private String filterIllegalCharacters(String jsonStr) {
+        if (jsonStr == null) {
+            return null;
+        }
+
+        // 正则表达式匹配非法控制字符(除了 \r, \n, \t 之外的所有控制字符)
+        // ASCII 0-31 除了 9(\t), 10(\n), 13(\r) 之外的所有控制字符
+        Pattern pattern = Pattern.compile("[\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]");
+        String filtered = pattern.matcher(jsonStr).replaceAll("");
+
+        if (!jsonStr.equals(filtered)) {
+            log.warn("过滤掉了 {} 个非法控制字符", jsonStr.length() - filtered.length());
+            log.debug("过滤前: {}", jsonStr);
+            log.debug("过滤后: {}", filtered);
+        }
+        return filtered;
+    }
+
+  
+    
+    
     private final WebClient webClient;
 
     private final WebClientConfig webClientConfig;
@@ -272,22 +301,84 @@ public class RequestComponent {
      */
     public <Response> ResponseEntity<Response> post(String url, String body, Class<Response> responseClass, HttpHeaders headers) {
         body = Optional.ofNullable(body).orElse("");
-        log.info("URL的值:{}body的值:{}", url, body);
+        log.info("URL的值:{},body的值:{}", url, body);
         WebClient webClient = selectNoSSLWebClient();
         try {
-            return webClient.post()
+            // 创建一个不带Accept-Encoding的请求头,避免服务器返回压缩数据
+            HttpHeaders requestHeaders = new HttpHeaders();
+            if (headers != null) {
+                requestHeaders.addAll(headers);
+            }
+            // 移除Accept-Encoding头,让服务器返回未压缩的数据
+            requestHeaders.remove("Accept-Encoding");
+
+            // 一次性获取响应实体(包含状态码和响应体)
+            ResponseEntity<String> rawResponse = webClient.post()
                     .uri(url)
-                    .headers(setHeaders(headers))
+                    .headers(setHeaders(requestHeaders))
                     .header(HttpHeaders.ACCEPT, "application/json,text/html,text/json,*/*")
                     .header(HttpHeaders.ACCEPT_LANGUAGE, "zh-CN,zh;q=0.9")
                     .header(HttpHeaders.CACHE_CONTROL, "no-cache")
                     .body(BodyInserters.fromValue(body))
                     .retrieve()
-                    .toEntity(responseClass)
+                    .toEntity(String.class)
                     .block();
+
+            if (rawResponse == null) {
+                throw new WebClientResponseException(
+                    500,
+                    "No response received",
+                    HttpHeaders.EMPTY,
+                    "No response received".getBytes(StandardCharsets.UTF_8),
+                    null
+                );
+            }
+
+            String responseBody = rawResponse.getBody();
+            if (responseBody == null) {
+                responseBody = "";
+            }
+
+            // 处理响应:过滤非法字符并解析JSON
+            String filteredResponse = filterIllegalCharacters(responseBody);
+            Response result;
+            try {
+                // 使用FastJSON手动解析JSON
+                result = JSON.parseObject(filteredResponse, responseClass);
+            } catch (Exception e) {
+                log.error("JSON解析失败,过滤后的响应内容: {}", filteredResponse, e);
+                throw new WebClientResponseException(
+                    500,
+                    "JSON parsing failed after filtering: " + e.getMessage(),
+                    rawResponse.getHeaders(),
+                    filteredResponse.getBytes(StandardCharsets.UTF_8),
+                    null
+                );
+            }
+
+            // 构建返回的ResponseEntity
+            HttpHeaders responseHeaders = new HttpHeaders();
+            responseHeaders.setContentType(MediaType.APPLICATION_JSON);
+
+            return ResponseEntity.status(rawResponse.getStatusCode())
+                    .headers(responseHeaders)
+                    .body(result);
+
         } catch (WebClientResponseException e) {
-            e.printStackTrace();
+            // 如果是WebClientResponseException,记录详细信息
+            log.error("WebClient请求失败,状态码: {}, 响应头: {}",
+                    e.getStatusCode(), e.getHeaders(), e);
             throw e;
+        } catch (Exception e) {
+            // 处理其他异常
+            log.error("请求失败", e);
+            throw new WebClientResponseException(
+                500,
+                "Request failed: " + e.getMessage(),
+                HttpHeaders.EMPTY,
+                e.getMessage().getBytes(StandardCharsets.UTF_8),
+                null
+            );
         }
     }
 
@@ -306,16 +397,78 @@ public class RequestComponent {
         log.info("URL的值:{},body的值:{}", url, body);
         WebClient webClient = selectNoSSLWebClient2();
         try {
-            return webClient.post()
+            // 创建一个不带Accept-Encoding的请求头,避免服务器返回压缩数据
+            HttpHeaders requestHeaders = new HttpHeaders();
+            if (headers != null) {
+                requestHeaders.addAll(headers);
+            }
+            // 移除Accept-Encoding头,让服务器返回未压缩的数据
+            requestHeaders.remove("Accept-Encoding");
+
+            // 获取响应实体
+            ResponseEntity<String> rawResponse = webClient.post()
                     .uri(url)
-                    .headers(setHeaders(headers))
+                    .headers(setHeaders(requestHeaders))
                     .body(BodyInserters.fromValue(body))
                     .retrieve()
-                    .toEntity(responseClass)
+                    .toEntity(String.class)
                     .block();
+
+            if (rawResponse == null) {
+                throw new WebClientResponseException(
+                    500,
+                    "No response received",
+                    HttpHeaders.EMPTY,
+                    "No response received".getBytes(StandardCharsets.UTF_8),
+                    null
+                );
+            }
+
+            String responseBody = rawResponse.getBody();
+            if (responseBody == null) {
+                responseBody = "";
+            }
+
+            // 处理响应:过滤非法字符并解析JSON
+            String filteredResponse = filterIllegalCharacters(responseBody);
+            Response result;
+            try {
+                // 使用FastJSON手动解析JSON
+                result = JSON.parseObject(filteredResponse, responseClass);
+            } catch (Exception e) {
+                log.error("JSON解析失败,过滤后的响应内容: {}", filteredResponse, e);
+                throw new WebClientResponseException(
+                    500,
+                    "JSON parsing failed after filtering: " + e.getMessage(),
+                    rawResponse.getHeaders(),
+                    filteredResponse.getBytes(StandardCharsets.UTF_8),
+                    null
+                );
+            }
+
+            // 构建返回的ResponseEntity
+            HttpHeaders responseHeaders = new HttpHeaders();
+            responseHeaders.setContentType(MediaType.APPLICATION_JSON);
+
+            return ResponseEntity.status(rawResponse.getStatusCode())
+                    .headers(responseHeaders)
+                    .body(result);
+
         } catch (WebClientResponseException e) {
-            e.printStackTrace();
+            // 如果是WebClientResponseException,记录详细信息
+            log.error("WebClient请求失败,状态码: {}, 响应头: {}",
+                    e.getStatusCode(), e.getHeaders(), e);
             throw e;
+        } catch (Exception e) {
+            // 处理其他异常
+            log.error("请求失败", e);
+            throw new WebClientResponseException(
+                500,
+                "Request failed: " + e.getMessage(),
+                HttpHeaders.EMPTY,
+                e.getMessage().getBytes(StandardCharsets.UTF_8),
+                null
+            );
         }
     }
 
@@ -334,7 +487,8 @@ public class RequestComponent {
         log.info("URL的值:{},body的值:{}", url, body);
         WebClient webClient = selectNoSSLWebClient2();
         try {
-            return webClient.post()
+            // 先获取原始响应字符串
+            Mono<String> responseMono = webClient.post()
                     .uri(url)
                     .headers(setHeaders(headers))
                     .header(HttpHeaders.ACCEPT, "application/json,text/html,text/json,*/*")
@@ -342,11 +496,60 @@ public class RequestComponent {
                     .header(HttpHeaders.CACHE_CONTROL, "no-cache")
                     .body(BodyInserters.fromValue(body))
                     .retrieve()
-                    .toEntity(responseClass)
+                    .bodyToMono(String.class);
+
+            // 处理响应:过滤非法字符并解析JSON
+            Mono<Response> resultMono = responseMono.flatMap(rawResponse -> {
+                // 过滤非法字符
+                String filteredResponse = filterIllegalCharacters(rawResponse);
+                try {
+                    // 使用FastJSON手动解析JSON
+                    Response result = JSON.parseObject(filteredResponse, responseClass);
+                    return Mono.just(result);
+                } catch (Exception e) {
+                    // 如果JSON解析失败,抛出异常
+                    return Mono.error(new WebClientResponseException(
+                        500,
+                        "JSON parsing failed after filtering: " + e.getMessage(),
+                        HttpHeaders.EMPTY,
+                        filteredResponse.getBytes(StandardCharsets.UTF_8),
+                        null
+                    ));
+                }
+            });
+
+            // 等待结果并构建ResponseEntity
+            Response result = resultMono.block();
+            HttpHeaders responseHeaders = new HttpHeaders();
+            responseHeaders.setContentType(MediaType.APPLICATION_JSON);
+
+            // 获取原始响应状态码
+            ResponseEntity<String> rawResponse = webClient.post()
+                    .uri(url)
+                    .headers(setHeaders(headers))
+                    .header(HttpHeaders.ACCEPT, "application/json,text/html,text/json,*/*")
+                    .header(HttpHeaders.ACCEPT_LANGUAGE, "zh-CN,zh;q=0.9")
+                    .header(HttpHeaders.CACHE_CONTROL, "no-cache")
+                    .body(BodyInserters.fromValue(body))
+                    .retrieve()
+                    .toEntity(String.class)
                     .block();
+
+            int statusCode = rawResponse != null ? rawResponse.getStatusCode().value() : 200;
+            return ResponseEntity.status(statusCode).headers(responseHeaders).body(result);
+
         } catch (WebClientResponseException e) {
             e.printStackTrace();
             throw e;
+        } catch (Exception e) {
+            // 处理其他异常
+            throw new WebClientResponseException(
+                500,
+                "Request failed: " + e.getMessage(),
+                HttpHeaders.EMPTY,
+                e.getMessage().getBytes(StandardCharsets.UTF_8),
+                null
+            );
         }
     }
 

+ 21 - 15
tenant/insurance/quotation-summary/pom.xml

@@ -18,26 +18,32 @@
     </properties>
 
     <dependencies>
-<!--        <dependency>-->
-<!--            <groupId>com.jzg</groupId>-->
-<!--            <artifactId>quotation-dajia</artifactId>-->
-<!--            <version>1.0-SNAPSHOT</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>com.jzg</groupId>-->
-<!--            <artifactId>quotation-zhongmei</artifactId>-->
-<!--            <version>1.0-SNAPSHOT</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>com.jzg</groupId>-->
-<!--            <artifactId>quotation-zijin</artifactId>-->
-<!--            <version>1.0-SNAPSHOT</version>-->
-<!--        </dependency>-->
+        <!--        <dependency>-->
+        <!--            <groupId>com.jzg</groupId>-->
+        <!--            <artifactId>quotation-dajia</artifactId>-->
+        <!--            <version>1.0-SNAPSHOT</version>-->
+        <!--        </dependency>-->
+        <!--        <dependency>-->
+        <!--            <groupId>com.jzg</groupId>-->
+        <!--            <artifactId>quotation-zhongmei</artifactId>-->
+        <!--            <version>1.0-SNAPSHOT</version>-->
+        <!--        </dependency>-->
+        <!--        <dependency>-->
+        <!--            <groupId>com.jzg</groupId>-->
+        <!--            <artifactId>quotation-zijin</artifactId>-->
+        <!--            <version>1.0-SNAPSHOT</version>-->
+        <!--        </dependency>-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-redis</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.jzg</groupId>
+            <artifactId>quotation-zijin</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+
         <dependency>
             <groupId>com.jzg</groupId>
             <artifactId>quotation-zhongmei</artifactId>

+ 12 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java

@@ -46,6 +46,7 @@ import com.jzg.quotation.summary.mapper.SysUploadFilesMapper;
 import com.jzg.quotation.summary.service.*;
 import com.jzg.quotation.summary.state.listener.OrderStateListener;
 import com.jzg.quotation.zhongmei.crawler.service.ZhongMeiCrawlerRequest;
+import com.jzg.quotation.zijin.crawler.service.ZiJinCrawlerRequest;
 import io.minio.MinioClient;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -148,6 +149,9 @@ public class UnifyOrderManager {
     @Autowired
     private ZhongMeiCrawlerRequest zhongMeiCrawlerRequest;
 
+    @Autowired
+    private ZiJinCrawlerRequest ziJinCrawlerRequest;
+
 
     private String getSystemCode() {
         //如果是APP登录的话 则传递SystemCode的头部字段
@@ -572,10 +576,17 @@ public class UnifyOrderManager {
         return HttpResult.ok(insOrdersPdfUrl);
     }
 
+    /**
+     * 测试登录
+     * @param loginBase
+     * @return HttpResult
+     */
     @PostMapping("test")
     @Operation(summary = "测试")
     public HttpResult test(@RequestBody LoginBase loginBase) {
-        zhongMeiCrawlerRequest.login(loginBase);
+        /*zhongMeiCrawlerRequest.login(loginBase);
+        return HttpResult.ok();*/
+        ziJinCrawlerRequest.login(loginBase);
         return HttpResult.ok();
     }
 }

+ 7 - 7
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/service/Impl/ZiJinApiRequestImpl.java

@@ -23,7 +23,7 @@ import com.jzg.quotation.zijin.api.entity.po.ZiJinApiOrder;
 import com.jzg.quotation.zijin.api.entity.request.*;
 import com.jzg.quotation.zijin.api.entity.response.*;
 import com.jzg.quotation.zijin.api.service.ZiJinApiRequest;
-import com.jzg.quotation.zijin.api.service.ZiJinCrawlerOrderService;
+import com.jzg.quotation.zijin.api.service.ZiJinOrderService;
 import lombok.RequiredArgsConstructor;
 import org.jetbrains.annotations.NotNull;
 import org.springframework.http.HttpHeaders;
@@ -43,7 +43,7 @@ public class ZiJinApiRequestImpl implements ZiJinApiRequest {
 
     private final ZiJinApiRequestComponent ziJinApiRequestComponent;
 
-    private final ZiJinCrawlerOrderService ziJinCrawlerOrderService;
+    private final ZiJinOrderService ziJinOrderService;
 
     // 重复投保次数
     private static final int REPEAT_NUMBER = 3;
@@ -70,7 +70,7 @@ public class ZiJinApiRequestImpl implements ZiJinApiRequest {
         // 报价
         CalculatePremiumRequest calculatePremiumRequest = new CalculatePremiumRequest(quoteVo, vehicleModelInfosDTO, queryActualValueResponse.getActualValue(), parameters, modelQueryResponse);
         CalculatePremiumResponse calculatePremiumResponse = ziJinApiRequestComponent.calculatePremium(calculatePremiumRequest, httpHeaders,modelQueryRequest,queryActualValueRequest,REPEAT_NUMBER,RETRY_NUMBER);
-        ziJinCrawlerOrderService.saveOrderInfo(quoteVo, modelQueryResponse);
+        ziJinOrderService.saveOrderInfo(quoteVo, modelQueryResponse);
         return ZiJinAPIQuoteResultsVoBuild.buildQuoteResultsVo(order.getOrdersNo(), quoteVo, calculatePremiumResponse);
     }
 
@@ -78,7 +78,7 @@ public class ZiJinApiRequestImpl implements ZiJinApiRequest {
     public UnderwritingResultsVo underwriting(UnderwritingVo underwritingVo) {
         InsOrdersCosts insOrdersCosts = underwritingVo.getInsOrdersCosts();
         OrderBase orderBase = underwritingVo.getOrder();
-        ZiJinApiOrder ziJinApiOrder = ziJinCrawlerOrderService.getById(orderBase.getOrdersNo());
+        ZiJinApiOrder ziJinApiOrder = ziJinOrderService.getById(orderBase.getOrdersNo());
         // 配置信息
         ZiJinApiConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(ZiJinApiConfigureParameters.class, orderBase
                 .getAttributionInformationVo()
@@ -119,7 +119,7 @@ public class ZiJinApiRequestImpl implements ZiJinApiRequest {
 
     @Override
     public PaymentLinkResultsVo getPaymentLink(PaymentLinkVo paymentLinkVo) {
-        ZiJinApiOrder ziJinApiOrder = ziJinCrawlerOrderService.getById(paymentLinkVo.getOrder().getOrdersNo());
+        ZiJinApiOrder ziJinApiOrder = ziJinOrderService.getById(paymentLinkVo.getOrder().getOrdersNo());
         ZiJinApiConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(ZiJinApiConfigureParameters.class, paymentLinkVo.getOrder()
                 .getAttributionInformationVo()
                 .getConfigInfo());
@@ -135,7 +135,7 @@ public class ZiJinApiRequestImpl implements ZiJinApiRequest {
     public void uploadImage(InsuranceUploadImageVo insuranceUploadImageVo) {
         // 获取订单信息
         OrderBase orderBase = insuranceUploadImageVo.getOrder();
-        ZiJinApiOrder ziJinApiOrder = ziJinCrawlerOrderService.getById(orderBase.getOrdersNo());
+        ZiJinApiOrder ziJinApiOrder = ziJinOrderService.getById(orderBase.getOrdersNo());
         // 配置信息
         ZiJinApiConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(ZiJinApiConfigureParameters.class, orderBase
                 .getAttributionInformationVo()
@@ -173,7 +173,7 @@ public class ZiJinApiRequestImpl implements ZiJinApiRequest {
     @Override
     public DownloadPolicyResultVo downloadPolicy(DownloadPolicyVo downloadPolicyVo) {
         DownloadPolicyResultVo downloadPolicyResultVo = new DownloadPolicyResultVo();
-        ZiJinApiOrder ziJinApiOrder = ziJinCrawlerOrderService.getById(downloadPolicyVo.getOrder().getOrdersNo());
+        ZiJinApiOrder ziJinApiOrder = ziJinOrderService.getById(downloadPolicyVo.getOrder().getOrdersNo());
         // 配置信息
         ZiJinApiConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(ZiJinApiConfigureParameters.class, downloadPolicyVo.getOrder()
                 .getAttributionInformationVo()

+ 2 - 2
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/service/Impl/ZiJinCrawlerOrderServiceImpl.java → tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/service/Impl/ZiJinOrderServiceImpl.java

@@ -4,13 +4,13 @@ import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.quotation.zijin.api.entity.po.ZiJinApiOrder;
 import com.jzg.quotation.zijin.api.entity.response.ModelQueryResponse;
 import com.jzg.quotation.zijin.api.repository.ZiJinApiOrderRepository;
-import com.jzg.quotation.zijin.api.service.ZiJinCrawlerOrderService;
+import com.jzg.quotation.zijin.api.service.ZiJinOrderService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 @Service
 @RequiredArgsConstructor
-public class ZiJinCrawlerOrderServiceImpl implements ZiJinCrawlerOrderService {
+public class ZiJinOrderServiceImpl implements ZiJinOrderService {
 
     private final ZiJinApiOrderRepository ziJinApiOrderRepository;
 

+ 1 - 1
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/service/ZiJinCrawlerOrderService.java → tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/service/ZiJinOrderService.java

@@ -4,7 +4,7 @@ import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.quotation.zijin.api.entity.po.ZiJinApiOrder;
 import com.jzg.quotation.zijin.api.entity.response.ModelQueryResponse;
 
-public interface ZiJinCrawlerOrderService {
+public interface ZiJinOrderService {
 
     /**
      * 存储订单信息

+ 38 - 23
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/component/ZiJinCrawlerRequestComponent.java

@@ -1,6 +1,5 @@
 package com.jzg.quotation.zijin.crawler.component;
 
-import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson2.JSON;
 import com.google.zxing.NotFoundException;
 import com.jzg.commons.exception.SystemException;
@@ -10,8 +9,6 @@ import com.jzg.quotation.zijin.crawler.entity.response.*;
 import com.jzg.quotation.zijin.crawler.properties.ZiJinCrawlerProperties;
 import com.jzg.quotation.zijin.crawler.util.*;
 import com.jzg.quotation.commons.component.RequestComponent;
-import com.jzg.quotation.commons.service.ExteriorUtilsRequest;
-import com.jzg.quotation.commons.utils.RequestObjectConversion;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.jetbrains.annotations.NotNull;
@@ -38,12 +35,10 @@ public class ZiJinCrawlerRequestComponent {
     // 循环次数
     public static final int CIRCULATE_NUMBER = 3;
 
-    private final ZiJinCrawlerRequestComponent  ziJinCrawlerRequestComponent;
-
+    
     private final RequestComponent requestComponent;
 
-    private final ExteriorUtilsRequest exteriorUtilsRequest;
-
+    
     private final ZiJinCrawlerProperties ziJinCrawlerProperties;
 
     /**
@@ -56,16 +51,20 @@ public class ZiJinCrawlerRequestComponent {
         ZiJinCrawlerCaptchaResponse ziJinCrawlerCaptchaResponse = null;
         try {
             if (frequency <= 0) {
-                throw new SystemException("验证码请求频次异常");
+                //throw new SystemException("验证码请求频次异常");
+                ziJinCrawlerCaptchaResponse = new ZiJinCrawlerCaptchaResponse();
+                ziJinCrawlerCaptchaResponse.setRtnCode("500");
+                ziJinCrawlerCaptchaResponse.setRtnMsg("验证码请求频次异常");
+                return ziJinCrawlerCaptchaResponse;
             }
-
             HttpHeaders headers = setHttpHeaders();
 
             Map<String, String> requestBody = new HashMap<>();
             requestBody.put("expirationType", "H5");
             String requestUrl = RequestUrl.CAPTCHA.getRequestUrl(ziJinCrawlerProperties.getBaseUrl()) + "?expirationType=H5";
             // 请求
-            ResponseEntity<ZiJinCrawlerCaptchaResponse> responseEntity = requestComponent.post(requestUrl, requestBody, ZiJinCrawlerCaptchaResponse.class, headers);
+            String jsonString = JSON.toJSONString(requestBody);
+            ResponseEntity<ZiJinCrawlerCaptchaResponse> responseEntity = requestComponent.post(requestUrl, jsonString, ZiJinCrawlerCaptchaResponse.class, headers);
             ziJinCrawlerCaptchaResponse = responseEntity.getBody();
             log.info("获取验证码接口响应内容:{}", JSON.toJSONString(ziJinCrawlerCaptchaResponse));
             String captchaImg = ziJinCrawlerCaptchaResponse.getCaptchaImg();
@@ -75,13 +74,28 @@ public class ZiJinCrawlerRequestComponent {
             log.info("验证码内容:{}",captchaContent);
             ziJinCrawlerCaptchaResponse.setCaptchaContent(captchaContent);
         } catch (Exception e) {
-            frequency = frequency - 1;
-            return captcha(frequency);
+            e.printStackTrace();
+            /*frequency = frequency - 1;
+            return captcha(frequency);*/
         }
         return ziJinCrawlerCaptchaResponse;
     }
 
+    /**
+     * 公共登录
+     *
+     * @param ziJinCrawlerCommonLoginRequest
+     * @return ZiJinCrawlerCommonLoginResponse
+     */
+    public ZiJinCrawlerCommonLoginResponse commonLogin(ZiJinCrawlerCommonLoginRequest ziJinCrawlerCommonLoginRequest) throws IOException {
+        log.info("ziJinCrawlerCommonLoginRequest请求参数的值:{}",JSON.toJSONString(ziJinCrawlerCommonLoginRequest));
 
+        HttpHeaders httpHeaders = setHttpHeaders();
+        httpHeaders.setContentLength(144);
+        String jsonString = JSON.toJSONString(ziJinCrawlerCommonLoginRequest);
+        ResponseEntity<ZiJinCrawlerCommonLoginResponse> responseEntity = requestComponent.post(RequestUrl.COMMONLOGIN.getRequestUrl(ziJinCrawlerProperties.getBaseUrl()), jsonString, ZiJinCrawlerCommonLoginResponse.class, httpHeaders);
+        return responseEntity.getBody();
+    }
 
 
     /**
@@ -160,7 +174,7 @@ public class ZiJinCrawlerRequestComponent {
      */
     public ZiJinCrawlerCarResponse car(ZiJinCrawlerCarRequest ziJinCrawlerCarRequest, HttpHeaders headers) throws IOException {
         //设置headers
-        HttpHeaders httpHeaders = ziJinCrawlerRequestComponent.setHttpHeaders();
+        HttpHeaders httpHeaders = setHttpHeaders();
         String jsonString = JSON.toJSONString(ziJinCrawlerCarRequest);
         ResponseEntity<ZiJinCrawlerCarResponse> responseEntity = requestComponent.post(RequestUrl.CAR.getRequestUrl(ziJinCrawlerProperties.getBaseUrl()), jsonString, ZiJinCrawlerCarResponse.class, httpHeaders);
         return responseEntity.getBody();
@@ -175,7 +189,7 @@ public class ZiJinCrawlerRequestComponent {
      */
     public ZiJinCrawlerGetOrderNoResponse getOrderNo(ZiJinCrawlerGetOrderNoRequest ziJinCrawlerGetOrderNoRequest, HttpHeaders headers) throws IOException {
         //设置headers
-        HttpHeaders httpHeaders = ziJinCrawlerRequestComponent.setHttpHeaders();
+        HttpHeaders httpHeaders = setHttpHeaders();
         String jsonString = JSON.toJSONString(ziJinCrawlerGetOrderNoRequest);
         ResponseEntity<ZiJinCrawlerGetOrderNoResponse> responseEntity = requestComponent.post(RequestUrl.GET_ORDER_NUMBER.getRequestUrl(ziJinCrawlerProperties.getBaseUrl()), jsonString, ZiJinCrawlerGetOrderNoResponse.class, httpHeaders);
         return responseEntity.getBody();
@@ -190,7 +204,7 @@ public class ZiJinCrawlerRequestComponent {
      */
     public ZiJinCrawlerGetCarActualValueResponse getCarActualValue(ZiJinCrawlerGetCarActualValueRequest ziJinCrawlerGetCarActualValueRequest, HttpHeaders headers) throws IOException {
         //设置headers
-        HttpHeaders httpHeaders = ziJinCrawlerRequestComponent.setHttpHeaders();
+        HttpHeaders httpHeaders = setHttpHeaders();
         String jsonString = JSON.toJSONString(ziJinCrawlerGetCarActualValueRequest);
         ResponseEntity<ZiJinCrawlerGetCarActualValueResponse> responseEntity = requestComponent.post(RequestUrl.GET_ACTUAL_VALUE.getRequestUrl(ziJinCrawlerProperties.getBaseUrl()), jsonString, ZiJinCrawlerGetCarActualValueResponse.class, httpHeaders);
         return responseEntity.getBody();
@@ -205,7 +219,7 @@ public class ZiJinCrawlerRequestComponent {
      */
     public ZiJinCrawlerQuotationResponse quotation(ZiJinCrawlerQuotationRequest ziJinCrawlerQuotationRequest, HttpHeaders headers) throws IOException {
         //设置headers
-        HttpHeaders httpHeaders = ziJinCrawlerRequestComponent.setHttpHeaders();
+        HttpHeaders httpHeaders = setHttpHeaders();
         String jsonString = JSON.toJSONString(ziJinCrawlerQuotationRequest);
         ResponseEntity<ZiJinCrawlerQuotationResponse> post = requestComponent.post(RequestUrl.PRICE.getRequestUrl(ziJinCrawlerProperties.getBaseUrl()), jsonString, ZiJinCrawlerQuotationResponse.class, httpHeaders);
         return post.getBody();
@@ -220,7 +234,7 @@ public class ZiJinCrawlerRequestComponent {
      */
     public ZiJinCrawlerUnderwritingResponse underwriting(ZiJinCrawlerUnderwritingRequest ziJinCrawlerUnderwritingRequest, HttpHeaders headers) throws Exception {
         //设置headers
-        HttpHeaders httpHeaders = ziJinCrawlerRequestComponent.setHttpHeaders();
+        HttpHeaders httpHeaders = setHttpHeaders();
         String jsonString = JSON.toJSONString(ziJinCrawlerUnderwritingRequest);
         ResponseEntity<ZiJinCrawlerUnderwritingResponse> responseEntity = requestComponent.post(RequestUrl.UNDERWRITING.getRequestUrl(ziJinCrawlerProperties.getBaseUrl()), jsonString, ZiJinCrawlerUnderwritingResponse.class, httpHeaders);
         return  responseEntity.getBody();
@@ -236,7 +250,7 @@ public class ZiJinCrawlerRequestComponent {
      */
     public ZiJinCrawlerImageUploadResponse uploadImage(ZiJinCrawlerImageUploadRequest ziJinCrawlerImageUploadRequest, HttpHeaders headers) throws Exception {
         //设置headers
-        HttpHeaders httpHeaders = ziJinCrawlerRequestComponent.setHttpHeaders();
+        HttpHeaders httpHeaders = setHttpHeaders();
         String jsonString = JSON.toJSONString(ziJinCrawlerImageUploadRequest);
         ResponseEntity<ZiJinCrawlerImageUploadResponse> responseEntity = requestComponent.post(RequestUrl.UPLOAD_IMAGE.getRequestUrl(ziJinCrawlerProperties.getBaseUrl()), jsonString, ZiJinCrawlerImageUploadResponse.class, httpHeaders);
         return responseEntity.getBody();
@@ -253,7 +267,7 @@ public class ZiJinCrawlerRequestComponent {
      */
     public ZiJinCrawlerPaymentLinkResponse payment(ZiJinCrawlerPaymentLinkRequest ziJinCrawlerPaymentLinkRequest, HttpHeaders headers) throws NotFoundException, IOException {
         //设置headers
-        HttpHeaders httpHeaders = ziJinCrawlerRequestComponent.setHttpHeaders();
+        HttpHeaders httpHeaders = setHttpHeaders();
         String jsonString = JSON.toJSONString(ziJinCrawlerPaymentLinkRequest);
         ResponseEntity<ZiJinCrawlerPaymentLinkResponse> responseEntity = requestComponent.post(RequestUrl.QRCODE.getRequestUrl(ziJinCrawlerProperties.getBaseUrl()), ziJinCrawlerPaymentLinkRequest, ZiJinCrawlerPaymentLinkResponse.class, httpHeaders);
         return responseEntity.getBody();
@@ -268,7 +282,7 @@ public class ZiJinCrawlerRequestComponent {
      */
     public ZiJinCrawlerQueryOrderStatusResponse queryOrderStatus(ZiJinCrawlerQueryOrderStatusRequest ziJinCrawlerQueryOrderStatusRequest, HttpHeaders headers) throws IOException {
         //设置headers
-        HttpHeaders httpHeaders = ziJinCrawlerRequestComponent.setHttpHeaders();
+        HttpHeaders httpHeaders = setHttpHeaders();
         String jsonString = JSON.toJSONString(ziJinCrawlerQueryOrderStatusRequest);
         ResponseEntity<ZiJinCrawlerQueryOrderStatusResponse> responseEntity = requestComponent.post(RequestUrl.QUERY_ORDER_STATUS.getRequestUrl(ziJinCrawlerProperties.getBaseUrl()), ziJinCrawlerQueryOrderStatusRequest,
                 ZiJinCrawlerQueryOrderStatusResponse.class, httpHeaders);
@@ -338,7 +352,7 @@ public class ZiJinCrawlerRequestComponent {
      */
     public ZiJinCrawlerQueryCarPolicyListResponse queryCarPolicyList(ZiJinCrawlerQueryCarPolicyListRequest ziJinCrawlerQueryCarPolicyListRequest, HttpHeaders headers) throws IOException {
         //设置headers
-        HttpHeaders httpHeaders = ziJinCrawlerRequestComponent.setHttpHeaders();
+        HttpHeaders httpHeaders = setHttpHeaders();
         String jsonString = JSON.toJSONString(ziJinCrawlerQueryCarPolicyListRequest);
         ResponseEntity<ZiJinCrawlerQueryCarPolicyListResponse> responseEntity = requestComponent.post(RequestUrl.QUERY_CAR_POLICY_LIST.getRequestUrl(ziJinCrawlerProperties.getBaseUrl()), jsonString, ZiJinCrawlerQueryCarPolicyListResponse.class, httpHeaders);
         return responseEntity.getBody();
@@ -354,7 +368,7 @@ public class ZiJinCrawlerRequestComponent {
      */
     public ZiJinCrawlerDownloadPolicyResponse electronPolicyIODownload(ZiJinCrawlerDownloadPolicyRequest ziJinCrawlerDownloadPolicyRequest, HttpHeaders headers) throws IOException {
         //设置headers
-        HttpHeaders httpHeaders = ziJinCrawlerRequestComponent.setHttpHeaders();
+        HttpHeaders httpHeaders = setHttpHeaders();
         String jsonString = JSON.toJSONString(ziJinCrawlerDownloadPolicyRequest);
         ResponseEntity<ZiJinCrawlerDownloadPolicyResponse> responseEntity = requestComponent.post(RequestUrl.ELECTRON_POLICY_IO_DOWNLOAD.getRequestUrl(ziJinCrawlerProperties.getBaseUrl()), jsonString, ZiJinCrawlerDownloadPolicyResponse.class, httpHeaders);
         return responseEntity.getBody();
@@ -384,10 +398,11 @@ public class ZiJinCrawlerRequestComponent {
         headers.setContentType(MediaType.APPLICATION_JSON);
         //获取cookie的值
         String cookie = getCookie();
+        log.info("cookie的值:{}", cookie);
         headers.set("Cookie", cookie);
         // 设置请求头
         headers.set("Accept", "application/json, text/plain, */*, application/problem+json");
-        headers.set("Accept-Encoding", "gzip, deflate, br, zstd");
+        //headers.set("Accept-Encoding", "gzip, deflate, br, zstd");
         headers.set("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8");
         headers.set("Authorization", "1B0234C742C12BD632AA5027EB3A501A");
         headers.set("Cache-Control", "no-cache");

+ 49 - 8
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/ZiJinCrawlerTokenInfo.java

@@ -1,18 +1,59 @@
 package com.jzg.quotation.zijin.crawler.entity;
 
 import lombok.Data;
+import java.io.Serial;
+import java.io.Serializable;
 
+/**
+ * 紫金财险token信息
+ *
+ * @author:
+ * @date:
+ */
 @Data
-public class ZiJinCrawlerTokenInfo {
-    private String loginComCode;      // 登录公司编码
-    private String userCode;          // 用户编码
-    private Attach attach;            // 附加信息
+public class ZiJinCrawlerTokenInfo implements Serializable {
 
+    @Serial
+    private static final long serialVersionUID = -7659271927903452320L;
+
+    /**
+     * 登录公司编码
+     */
+    private String loginComCode;
+
+    /**
+     * 用户编码
+     */
+    private String userCode;
+
+    /**
+     * 附加信息
+     */
+    private Attach attach;
+
+    /**
+     * 附加信息内部类
+     */
     @Data
     public static class Attach {
-        private String loginComName;  // 登录公司名称
-        private String loginflag;     // 登录标识
-        private String userCode;      // 用户编码
-        private String accountType;   // 账号类型
+        /**
+         * 登录公司名称
+         */
+        private String loginComName;
+
+        /**
+         * 登录标识
+         */
+        private String loginflag;
+
+        /**
+         * 用户编码
+         */
+        private String userCode;
+
+        /**
+         * 账号类型
+         */
+        private String accountType;
     }
 }

+ 28 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/request/ZiJinCrawlerCommonLoginRequest.java

@@ -0,0 +1,28 @@
+package com.jzg.quotation.zijin.crawler.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 紫金财险公共登录请求参数
+ */
+@Data
+public class ZiJinCrawlerCommonLoginRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 3395900658342320845L;
+
+    /**
+     * 用户名
+     */
+    @JsonProperty("userCode")
+    private String userCode;
+
+    /**
+     * 密码
+     */
+    @JsonProperty("password")
+    private String password;
+}

+ 91 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/response/ZiJinCrawlerCommonLoginResponse.java

@@ -0,0 +1,91 @@
+package com.jzg.quotation.zijin.crawler.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @description: 紫金财险【爬虫】【公共登录】【响应体】
+ * @author:
+ * @date:
+ **/
+@Data
+public class ZiJinCrawlerCommonLoginResponse implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 返回码
+     */
+    @JsonProperty("rtnCode")
+    private String rtnCode;
+
+    /**
+     * 返回信息
+     */
+    @JsonProperty("rtnMsg")
+    private String rtnMsg;
+
+    /**
+     * 登录响应数据
+     */
+    private LoginData data;
+
+    /**
+     * 登录数据内部类
+     */
+    @Data
+    public static class LoginData implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        /**
+         * 登录token
+         */
+        private String token;
+
+        /**
+         * 登录返回信息
+         */
+        @JsonProperty("loginRtnMsg")
+        private String loginRtnMsg;
+
+        /**
+         * 公司信息列表
+         */
+        private List<CompanyInfo> data;
+    }
+
+    /**
+     * 公司信息内部类
+     */
+    @Data
+    public static class CompanyInfo implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        /**
+         * 公司代码
+         */
+        @JsonProperty("comCode")
+        private String comCode;
+
+        /**
+         * 公司名称
+         */
+        @JsonProperty("comName")
+        private String comName;
+
+        /**
+         * 用户代码
+         */
+        @JsonProperty("userCode")
+        private String userCode;
+    }
+}

+ 1 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/enums/RequestUrl.java

@@ -13,6 +13,7 @@ import lombok.AllArgsConstructor;
 public enum RequestUrl implements CrawlerRequestUrlStandard {
     // 登录
     CAPTCHA("/api/v1/insurance/public/captcha/genImg", "生成验证码"),
+    COMMONLOGIN("/kscd-frontend/login/commonLogin", "公共登录"),
     CHECKCAPTCHAANDGETTOKEN("/kscd-frontend/login/checkCaptchaAndGetToken", "校验验证码并获取token"),
     CHECK_TOKEN("/api_vhl_prod/api/checkToken", "校验token"),
     //归属信息

+ 1 - 1
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/service/ZiJinCrawlerOrderService.java

@@ -5,7 +5,7 @@ import com.jzg.quotation.zijin.crawler.entity.po.ZiJinCrawlerOrder;
 import com.jzg.quotation.zijin.crawler.entity.response.ZiJinCrawlerQuotationResponse;
 
 /**
- * @description: 渤海财险爬虫订单服务
+ * @description: 紫金财险爬虫订单服务
  * @author:
  * @date:
  **/

+ 1 - 1
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/service/ZiJinCrawlerRequest.java

@@ -3,7 +3,7 @@ package com.jzg.quotation.zijin.crawler.service;
 import com.jzg.quotation.commons.service.QuotationCrawlerBaseService;
 
 /**
- * @description: 紫金财险请求
+ * @description: 紫金财险爬虫请求
  * @author:
  * @date:
  **/

+ 18 - 3
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/service/impl/ZiJinCrawlerQuoteProcessServiceImpl.java

@@ -7,6 +7,7 @@ import com.jzg.quotation.zijin.crawler.component.ZiJinCrawlerRequestComponent;
 import com.jzg.quotation.zijin.crawler.entity.ZiJinCrawlerTokenInfo;
 import com.jzg.quotation.zijin.crawler.entity.request.ZiJinCrawlerCheckCaptchaRequest;
 import com.jzg.quotation.zijin.crawler.entity.request.ZiJinCrawlerCheckTokenRequest;
+import com.jzg.quotation.zijin.crawler.entity.request.ZiJinCrawlerCommonLoginRequest;
 import com.jzg.quotation.zijin.crawler.entity.response.*;
 import com.jzg.quotation.zijin.crawler.service.ZiJinCrawlerQuoteProcessService;
 import com.jzg.quotation.zijin.crawler.util.DESEncryption;
@@ -49,19 +50,32 @@ public class ZiJinCrawlerQuoteProcessServiceImpl implements ZiJinCrawlerQuotePro
             //1、获取验证码
             ZiJinCrawlerCaptchaResponse ziJinCrawlerCaptchaResponse = ziJinCrawlerRequestComponent.captcha(3);
 
-            //2、校验验证码
+            //2、公共登录
+            ZiJinCrawlerCommonLoginRequest ziJinCrawlerCommonLoginRequest = new ZiJinCrawlerCommonLoginRequest();
+            ziJinCrawlerCommonLoginRequest.setUserCode(username);
+            ziJinCrawlerCommonLoginRequest.setPassword(password);
+            // 发送公共登录请求
+            ZiJinCrawlerCommonLoginResponse ziJinCrawlerCommonLoginResponse = ziJinCrawlerRequestComponent.commonLogin(ziJinCrawlerCommonLoginRequest);
+            // 处理公共登录响应
+            if (ziJinCrawlerCommonLoginResponse == null || !"0000".equals(ziJinCrawlerCommonLoginResponse.getRtnCode())) {
+                throw new SystemException("公共登录失败");
+            }
+            log.info("公共登录响应:{}", JSON.toJSONString(ziJinCrawlerCommonLoginResponse));
+
+            //3、校验验证码
             ZiJinCrawlerCheckCaptchaRequest ziJinCrawlerCheckCaptchaRequest = new ZiJinCrawlerCheckCaptchaRequest();
-            // 设置验证码校验请求参数,保持与JSON字段顺序一致
+            // 设置验证码校验请求参数
             ziJinCrawlerCheckCaptchaRequest.setTokenInfo("{\"loginComCode\":\"2140000601\",\"userCode\":\"214000151\",\"attach\":{\"loginComName\":\"山西分公司直销业务一部\",\"loginflag\":\"common\",\"userCode\":\"214000151\",\"accountType\":\"9\"}}");
             ziJinCrawlerCheckCaptchaRequest.setCaptchaId(ziJinCrawlerCaptchaResponse.getCaptchaId());
             ziJinCrawlerCheckCaptchaRequest.setCaptchaVal(ziJinCrawlerCaptchaResponse.getCaptchaContent());
 
             ZiJinCrawlerCheckCaptchaResponse ziJinCrawlerCheckCaptchaResponse = ziJinCrawlerRequestComponent.checkCaptchaAndGetToken(ziJinCrawlerCheckCaptchaRequest);
+            log.info("校验验证码并且获取token响应:{}", JSON.toJSONString(ziJinCrawlerCheckCaptchaResponse));
             //成功
             if("0000".equals(ziJinCrawlerCheckCaptchaResponse.getRtnCode())){
                 //获取token
                 String token = ziJinCrawlerCheckCaptchaResponse.getData().getToken();
-                //3、校验token
+                //4、校验token
                 ZiJinCrawlerCheckTokenRequest ziJinCrawlerCheckTokenRequest = new ZiJinCrawlerCheckTokenRequest();
                 ziJinCrawlerCheckTokenRequest.setExpirationType("H5");
                 ziJinCrawlerCheckTokenRequest.setToken(token);
@@ -77,6 +91,7 @@ public class ZiJinCrawlerQuoteProcessServiceImpl implements ZiJinCrawlerQuotePro
                     return ziJinCrawlerCheckTokenResponse.getMsg();
                 }
             }else{
+                log.error("校验验证码失败,响应:{}", JSON.toJSONString(ziJinCrawlerCheckCaptchaResponse));
                 throw new SystemException("校验验证码失败");
             }
         } catch (IOException e) {

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
tenant/insurance/quotation-zijin/src/main/resources/js/auto.js


+ 1 - 1
tenant/insurance/quotation-zijin/src/main/resources/js/content.js

@@ -1 +1 @@
-___content ="865A6EA3dxk8T55PdWH08c5gg7oID5F86pmeqyWT.XwsA.OAoN72HzaeYBjea.nkKSIDPSY7SB5JwpAyi8_NSVygTcxW5L2EOV5jEEqO_QQcnj_spUQllFgP.6SHC1Z0WyR8f2eggbu0r8eIQJ8cjAq46LmcUJxx6It6hQptCR02lDOe5tiqVNS80fRjgWT9Fm_QsFwdhm9";
+___content ="YY56opjZZYpD6yKMLhYJcP809.vkKBnTsE.gn_po3nzpe7o1dAL4NpfvHR1sa5ClXPEqRkRXfD4NGtCbV9a39SQgY92EbmoMuVHmwva9SnubHt.t8jK8MMblrSCy58WZDEYw4ODa_s4hn2KDoyCJyC6xFpwSLa2UUGz942IbSSMDJHjj_mqH0AHpOPYS5eYYFs_.uAiO14V";

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
tenant/insurance/quotation-zijin/src/main/resources/js/tsssss.js


Некоторые файлы не были показаны из-за большого количества измененных файлов