Przeglądaj źródła

缓存失败,后重新查询

helixiao 1 rok temu
rodzic
commit
79b79a4433
15 zmienionych plików z 417 dodań i 78 usunięć
  1. 8 8
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/component/RequestComponent.java
  2. 2 0
      tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/build/ZhongAnCrawlerQuoteResultsVoBuild.java
  3. 18 19
      tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/component/ZhongAnCrawlerRequestComponent.java
  4. 7 3
      tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/constant/enums/RequestUrl.java
  5. 3 3
      tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/entity/request/ZhongAnCrawlerCacheCarQueryRequest.java
  6. 98 21
      tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/entity/request/ZhongAnCrawlerConfirmOrderRequest.java
  7. 17 4
      tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/entity/request/ZhongAnCrawlerConfirmQuoteRequest.java
  8. 18 5
      tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/entity/request/ZhongAnCrawlerGetOrderRequest.java
  9. 2 0
      tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/entity/request/ZhongAnCrawlerJyxUnderwritingRequest.java
  10. 55 0
      tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/entity/request/ZhongAnCrawlerQueryDetailQueryRequest.java
  11. 13 1
      tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/entity/request/ZhongAnCrawlerQuoteRequest.java
  12. 3 2
      tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/entity/response/ZhongAnCrawlerCacheCarQueryResponse.java
  13. 138 0
      tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/entity/response/ZhongAnCrawlerQueryDetailQueryResponse.java
  14. 8 8
      tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/entity/response/ZhongAnCrawlerQuoteResponse.java
  15. 27 4
      tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/service/Impl/ZhongAnCrawlerRequestImpl.java

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

@@ -304,13 +304,13 @@ public class RequestComponent {
      * @return 响应
      */
     public <Response> ResponseEntity<Response> formData(String url, MultiValueMap<String, Object> parts, Class<Response> responseClass, HttpHeaders headers) {
-        String block = webClient.post()
-                .uri(url)
-                .headers(RequestComponent.setHeaders(headers))
-                .contentType(MediaType.APPLICATION_FORM_URLENCODED)
-                .body(BodyInserters.fromMultipartData(parts))
-                .retrieve().bodyToMono(String.class).doOnNext(responseBody -> System.out.println("响应内容: " + responseBody)) // 打印响应
-                .block();
+//        String block = webClient.post()
+//                .uri(url)
+//                .headers(RequestComponent.setHeaders(headers))
+//                .contentType(MediaType.APPLICATION_FORM_URLENCODED)
+//                .body(BodyInserters.fromMultipartData(parts))
+//                .retrieve().bodyToMono(String.class).doOnNext(responseBody -> System.out.println("响应内容: " + responseBody)) // 打印响应
+//                .block();
 
 
 
@@ -321,7 +321,7 @@ public class RequestComponent {
                 .contentType(MediaType.APPLICATION_FORM_URLENCODED)
                 .body(BodyInserters.fromMultipartData(parts))
                 .retrieve()
-                .toEntity(responseClass)
+                .toEntity(responseClass).doOnNext(responseBody -> System.out.println("响应内容: " + responseBody.getBody()))
                 .block();
     }
 

+ 2 - 0
tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/build/ZhongAnCrawlerQuoteResultsVoBuild.java

@@ -1,6 +1,7 @@
 package com.jzg.quotation.zhongan.crawler.build;
 
 import cn.hutool.core.date.DateUtil;
+import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.commons.entity.quote.vo.KindInfoVo;
 import com.jzg.commons.entity.quote.vo.RiskInfoVo;
 import com.jzg.commons.entity.quote.vo.aggregated.QuoteResultsVo;
@@ -33,6 +34,7 @@ public class ZhongAnCrawlerQuoteResultsVoBuild {
 
         // 交强保费 车船税 商业保费
         buildPremium(quoteResultsVo, dataDTO);
+        quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.WAIT_AUDIT);
         return quoteResultsVo;
     }
 

+ 18 - 19
tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/component/ZhongAnCrawlerRequestComponent.java

@@ -92,16 +92,11 @@ public class ZhongAnCrawlerRequestComponent {
     public List<ZhongAnCrawlerCarQueryResponse.ValueDTO.DataDTO.ResultDTO.VehicleDTO> carQuery(ZhongAnCrawlerCarQueryRequest carQueryRequest, HttpHeaders headers) {
 
         List<ZhongAnCrawlerCarQueryResponse.ValueDTO.DataDTO.ResultDTO.VehicleDTO> vehicleDTOList = new ArrayList<>();
-        Integer start = 0;
-        Integer pageTotal = 0;
-        do {
-            ZhongAnCrawlerCarQueryResponse carQueryResponse = requestComponent.formData(RequestUrl.CAR_QUERY.getRequestUrl(zhongAnCrawlerProperties.getBaseUrl()), carQueryRequest, ZhongAnCrawlerCarQueryResponse.class, headers).getBody();
-            List<ZhongAnCrawlerCarQueryResponse.ValueDTO.DataDTO.ResultDTO.VehicleDTO> vehicleList = carQueryResponse.getValue().getDatas().getResult().getVehicleList();
-            vehicleDTOList.addAll(vehicleList);
-            pageTotal = carQueryResponse.getValue().getDatas().getResult().getPageTotal();
-            start = carQueryRequest.getStart();
-            start = start + 12;
-        } while (start < pageTotal);
+
+        ZhongAnCrawlerCarQueryResponse carQueryResponse = requestComponent.formData(RequestUrl.CAR_QUERY.getRequestUrl(zhongAnCrawlerProperties.getBaseUrl()), carQueryRequest, ZhongAnCrawlerCarQueryResponse.class, headers).getBody();
+        List<ZhongAnCrawlerCarQueryResponse.ValueDTO.DataDTO.ResultDTO.VehicleDTO> vehicleList = carQueryResponse.getValue().getDatas().getResult().getVehicleList();
+        vehicleDTOList.addAll(vehicleList);
+
         return vehicleDTOList;
     }
 
@@ -122,8 +117,8 @@ public class ZhongAnCrawlerRequestComponent {
      * @param confirmQuoteRequest
      * @param headers
      */
-    public void confirmQuote(ZhongAnCrawlerConfirmQuoteRequest confirmQuoteRequest, HttpHeaders headers) {
-        requestComponent.objectPost(RequestUrl.CONFIRM_QUOTE.getRequestUrl(zhongAnCrawlerProperties.getBaseUrl()), confirmQuoteRequest, ZhongAnCrawlerQuoteResponse.class, headers);
+    public String confirmQuote(ZhongAnCrawlerConfirmQuoteRequest confirmQuoteRequest, HttpHeaders headers) {
+       return requestComponent.formDataString(RequestUrl.CONFIRM_QUOTE.getRequestUrl(zhongAnCrawlerProperties.getBaseUrl()), confirmQuoteRequest, headers);
     }
 
     /**
@@ -134,7 +129,7 @@ public class ZhongAnCrawlerRequestComponent {
      * @return
      */
     public ZhongAnCrawlerGetOrderResponse getOrder(ZhongAnCrawlerGetOrderRequest getOrderRequest, HttpHeaders headers) {
-        return requestComponent.objectPost(RequestUrl.GET_ORDER.getRequestUrl(zhongAnCrawlerProperties.getBaseUrl()), getOrderRequest, ZhongAnCrawlerGetOrderResponse.class, headers).getBody();
+        return requestComponent.formData(RequestUrl.GET_ORDER.getRequestUrl(zhongAnCrawlerProperties.getBaseUrl()), getOrderRequest, ZhongAnCrawlerGetOrderResponse.class, headers).getBody();
     }
 
     /**
@@ -145,7 +140,7 @@ public class ZhongAnCrawlerRequestComponent {
      * @return
      */
     public ZhongAnCrawlerConfirmOrderResponse confirmOrder(ZhongAnCrawlerConfirmOrderRequest confirmOrderRequest, HttpHeaders headers) {
-        return requestComponent.objectPost(RequestUrl.CONFIRM_ORDER.getRequestUrl(zhongAnCrawlerProperties.getBaseUrl()), confirmOrderRequest, ZhongAnCrawlerConfirmOrderResponse.class, headers).getBody();
+        return requestComponent.formData(RequestUrl.CONFIRM_ORDER.getRequestUrl(zhongAnCrawlerProperties.getBaseUrl()), confirmOrderRequest, ZhongAnCrawlerConfirmOrderResponse.class, headers).getBody();
     }
 
     /**
@@ -156,7 +151,7 @@ public class ZhongAnCrawlerRequestComponent {
      * @return
      */
     public ZhongAnCrawlerJyxUnderwritingResponse jyxUnderwriting(ZhongAnCrawlerJyxUnderwritingRequest jyxUnderwritingRequest, HttpHeaders headers) {
-        return requestComponent.objectPost(RequestUrl.JYX_UNDERWRITING.getRequestUrl(zhongAnCrawlerProperties.getBaseUrl()), jyxUnderwritingRequest, ZhongAnCrawlerJyxUnderwritingResponse.class, headers).getBody();
+        return requestComponent.formData(RequestUrl.JYX_UNDERWRITING.getRequestUrl(zhongAnCrawlerProperties.getBaseUrl()), jyxUnderwritingRequest, ZhongAnCrawlerJyxUnderwritingResponse.class, headers).getBody();
     }
 
     /**
@@ -167,7 +162,7 @@ public class ZhongAnCrawlerRequestComponent {
      * @return
      */
     public ZhongAnCrawlerUploadImageResponse uploadImage(ZhongAnCrawlerUploadImageRequest imageRequest, HttpHeaders headers) {
-        return requestComponent.objectPost(RequestUrl.UPLOAD_IMAGE.getRequestUrl(zhongAnCrawlerProperties.getBaseUrl()), imageRequest, ZhongAnCrawlerUploadImageResponse.class, headers).getBody();
+        return requestComponent.formData(RequestUrl.UPLOAD_IMAGE.getRequestUrl(zhongAnCrawlerProperties.getBaseUrl()), imageRequest, ZhongAnCrawlerUploadImageResponse.class, headers).getBody();
     }
 
     /**
@@ -178,7 +173,7 @@ public class ZhongAnCrawlerRequestComponent {
      * @return
      */
     public ZhongAnCrawlerPaymentResponse payment(ZhongAnCrawlerPaymentRequest paymentRequest, HttpHeaders headers) {
-        return requestComponent.objectPost(RequestUrl.PAYMENT_LINK.getRequestUrl(zhongAnCrawlerProperties.getBaseUrl()), paymentRequest, ZhongAnCrawlerPaymentResponse.class, headers).getBody();
+        return requestComponent.formData(RequestUrl.PAYMENT_LINK.getRequestUrl(zhongAnCrawlerProperties.getBaseUrl()), paymentRequest, ZhongAnCrawlerPaymentResponse.class, headers).getBody();
     }
 
     /**
@@ -192,8 +187,8 @@ public class ZhongAnCrawlerRequestComponent {
         return requestComponent.objectPost(RequestUrl.DOWNLOAD_POLICY.getRequestUrl(zhongAnCrawlerProperties.getBaseUrl()), downloadPolicyRequest, ZhongAnCrawlerDownloadPolicyResponse.class, headers).getBody();
     }
 
-    public String cacheCarInfo(ZhongAnCrawlerCacheCarQueryRequest cacheCarQueryRequest, HttpHeaders headers) {
-       return requestComponent.formDataString(RequestUrl.CACHE_CAR_QUERY.getRequestUrl(zhongAnCrawlerProperties.getBaseUrl()), cacheCarQueryRequest, headers);
+    public ZhongAnCrawlerCacheCarQueryResponse cacheCarInfo(ZhongAnCrawlerCacheCarQueryRequest cacheCarQueryRequest, HttpHeaders headers) {
+       return requestComponent.formData(RequestUrl.CACHE_CAR_QUERY.getRequestUrl(zhongAnCrawlerProperties.getBaseUrl()), cacheCarQueryRequest,ZhongAnCrawlerCacheCarQueryResponse.class, headers).getBody();
 
     }
 
@@ -224,4 +219,8 @@ public class ZhongAnCrawlerRequestComponent {
     public String initDataInfo(ZhongAnCrawlerInitDataRequest initDataRequest, HttpHeaders headers) {
         return requestComponent.baseGetString(RequestUrl.INIT_DATA_KEY.getRequestUrl(zhongAnCrawlerProperties.getBaseUrl()),initDataRequest,headers);
     }
+
+    public ZhongAnCrawlerQueryDetailQueryResponse detailQuery(ZhongAnCrawlerQueryDetailQueryRequest detailQueryRequest, HttpHeaders headers) {
+        return requestComponent.formData(RequestUrl.QUERY_DETAIL.getRequestUrl(zhongAnCrawlerProperties.getBaseUrl()), detailQueryRequest,ZhongAnCrawlerQueryDetailQueryResponse.class, headers).getBody();
+    }
 }

+ 7 - 3
tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/constant/enums/RequestUrl.java

@@ -26,15 +26,19 @@ public enum RequestUrl implements CrawlerRequestUrlStandard {
 
     CACHE_CAR_QUERY("/open/bmw/car_controller/cache_car_info.json", "缓存车辆信息"),
 
+    QUERY_DETAIL("/open/bmw/car_controller/query_detail_vehicle_model.json", "缓存车辆信息不正确时,调用"),
+
+
+
     QUOTE_BASE_QUERY("/open/bmw/n/quote_controller/query_quote_base_info.json", "报价前准备接口"),
 
     QUOTE("/open/bmw/n/quote_controller/premium_trial.json", "报价"),
     CONFIRM_QUOTE("/open/bmw/quote_controller/confirm_quote_plan.json", "确认报价"),
     GET_ORDER("/open/bmw/policy_controller/get_order_info.json", "获取订单信息"),
-    CONFIRM_ORDER("https://c.zhongan.com/open/bmw/policy_controller/confirm_order.json", "确认订单"),
-    JYX_UNDERWRITING("https://c.zhongan.com/open/jyx/jyx_insure_controller/jyx_underwriting.json", "非车险提交核保"),
+    CONFIRM_ORDER("/open/bmw/policy_controller/confirm_order.json", "确认订单"),
+    JYX_UNDERWRITING("/open/jyx/jyx_insure_controller/jyx_underwriting.json", "非车险提交核保"),
 
-    UPLOAD_IMAGE("https://c.zhongan.com/open/distribution/distribute_controller/upload_user_confirm_data.json", "正常流程上传影像"),
+    UPLOAD_IMAGE("/open/distribution/distribute_controller/upload_user_confirm_data.json", "正常流程上传影像"),
     /**
      * 通融申请的影像上传还需补充
      */

+ 3 - 3
tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/entity/request/ZhongAnCrawlerCacheCarQueryRequest.java

@@ -68,7 +68,7 @@ public class ZhongAnCrawlerCacheCarQueryRequest {
         this.vehicleModelName = vehicleDTO.getBrandName();
         this.vehicleModelCode = vehicleDTO.getVehicleCode();
         this.modelsJy = vehicleDTO.getVehicleCode();
-        this.vehicleCap = "";
+        this.vehicleCap = carInfoVo.getLimitLoad();
         this.curbWeight = vehicleDTO.getFullWeight();
         this.exhaustMeasure = vehicleDTO.getDisplacement();
         this.power = vehicleDTO.getPower();
@@ -77,8 +77,8 @@ public class ZhongAnCrawlerCacheCarQueryRequest {
         this.vehiclePassengerCap = vehicleDTO.getSeat();
         this.gearBoxType = vehicleDTO.getGearBoxType();
         this.configName = vehicleDTO.getConfigName();
-        this.taxType = "0";
-        this.syxClassid = "KB";
+        this.taxType = vehicleDTO.getHfCode();
+        this.syxClassid = vehicleDTO.getSyxClassid();
         this.vehicleType = "2";
         this.modelEnergyType = "0";
         this.fuelType = "D1";

+ 98 - 21
tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/entity/request/ZhongAnCrawlerConfirmOrderRequest.java

@@ -1,5 +1,6 @@
 package com.jzg.quotation.zhongan.crawler.entity.request;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.jzg.commons.entity.quote.vo.CustomerInfoVo;
 import com.jzg.commons.entity.quote.vo.RiskInfoVo;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
@@ -8,6 +9,7 @@ import com.jzg.quotation.zhongan.crawler.entity.ZhongAnCrawlerConfigureParameter
 import lombok.Data;
 
 import java.io.Serial;
+import java.util.Optional;
 
 /**
  * @description: 众安保险 确认订单 请求参数
@@ -15,15 +17,27 @@ import java.io.Serial;
  * @date: 2025/5/13 11:36
  **/
 @Data
-public class ZhongAnCrawlerConfirmOrderRequest extends ZhongAnCrawlerBaseRequest {
+public class ZhongAnCrawlerConfirmOrderRequest{
     @Serial
     private static final long serialVersionUID = -1296055575580182977L;
 
+    @JsonProperty("flowId")
+    private String flowId;
+
+    @JsonProperty("page")
+    private String page;
+
+    @JsonProperty("flag")
+    private String flag;
+
+    @JsonProperty("i")
+    private String i;
+
     public ZhongAnCrawlerConfirmOrderRequest(ZhongAnCrawlerConfigureParameters parameters, QuoteVo quoteVo) {
-        super.setFlowId(parameters.getFlowId());
-        super.setPage(ZhongAnRequestConstant.ORDER_PAGE);
-        super.setFlag(parameters.getFlag());
-        super.setI(ZhongAnRequestConstant.I_PARAM);
+        this.setFlowId(parameters.getFlowId());
+        this.setPage(ZhongAnRequestConstant.ORDER_PAGE);
+        this.setFlag(parameters.getFlag());
+        this.setI(ZhongAnRequestConstant.I_PARAM);
 
         RiskInfoVo biRiskInfoVo = quoteVo.getBiRiskInfoVo();
         if (biRiskInfoVo != null && biRiskInfoVo.getStartDate() != null) {
@@ -37,105 +51,168 @@ public class ZhongAnCrawlerConfirmOrderRequest extends ZhongAnCrawlerBaseRequest
         } else {
             this.compelElectronicPolicy = "0";
         }
+        this.setDesOwnerMobile("");
         //车主信息
         CustomerInfoVo ownersInfo = quoteVo.getOwnersInfo();
         this.ownerName = ownersInfo.getName();
         this.ownerMobile = ownersInfo.getMobile();
         this.ownerCertificateNo = ownersInfo.getIdentifyNumber();
-        this.ownerSex = ownersInfo.getGender();
+        this.ownerSex = (ownersInfo.getGender().equals("1")?"M":"W");
         this.ownerBirth = ownersInfo.getBirthday();
-        this.ownerEmail = ownersInfo.getEmail();
+        this.ownerEmail = Optional.ofNullable(ownersInfo.getEmail()).orElse("123456@qq.com");
         this.ownerProvinceCode = ownersInfo.getProvinceCode();
         this.ownerCityCode = ownersInfo.getCityCode();
         this.ownerAreaCode = ownersInfo.getCountyCode();
         this.ownerDetailAddress = ownersInfo.getAddr();
-        this.ownerCertificateType = ownersInfo.getDocumentsTypeCode();
+        this.ownerCertificateType = ownersInfo.getDocumentsTypeCode().equals("01") ? "I":"U";
+        this.ownerStreetCode="";
         //投保人信息
         CustomerInfoVo policyHolderInfo = quoteVo.getPolicyHolderInfo();
-        this.applicantCertificateType = policyHolderInfo.getDocumentsTypeCode();
+        this.applicantCertificateType = policyHolderInfo.getDocumentsTypeCode().equals("01") ? "I":"U";
         this.applicantName = policyHolderInfo.getName();
         this.applicantCertificateNo = policyHolderInfo.getIdentifyNumber();
         this.applicantMobile  = policyHolderInfo.getMobile();
-        this.applicantEmail = policyHolderInfo.getEmail();
+        this.applicantEmail = Optional.ofNullable(policyHolderInfo.getEmail()).orElse("123456@qq.com");
         this.applicantProvinceCode = policyHolderInfo.getProvinceCode();
         this.applicantCityCode = policyHolderInfo.getCityCode();
         this.applicantAreaCode = policyHolderInfo.getCountyCode();
         this.applicantDetailAddress = policyHolderInfo.getAddr();
-        this.applicantSex = policyHolderInfo.getGender();
+        this.applicantSex = policyHolderInfo.getGender().equals("1")?"M":"W";
         this.applicantBirth = policyHolderInfo.getBirthday();
         this.applicantCertiStartDate = policyHolderInfo.getIdentifyValidDate();
         this.applicantCertiEndDate = policyHolderInfo.getIdentifyValidEndDate();
         //被保人信息
         CustomerInfoVo insuredPersonInfo = quoteVo.getInsuredPersonInfo();
-        this.insureCertificateType = insuredPersonInfo.getDocumentsTypeCode();
+        this.insureCertificateType = insuredPersonInfo.getDocumentsTypeCode().equals("01") ? "I":"U";
         this.insureName = insuredPersonInfo.getName();
         this.insureCertificateNo = insuredPersonInfo.getIdentifyNumber();
         this.insureMobile = insuredPersonInfo.getMobile();
-        this.insureEmail = insuredPersonInfo.getEmail();
+        this.insureEmail = Optional.ofNullable(insuredPersonInfo.getEmail()).orElse("123456@qq.com");
         this.insureProvinceCode = insuredPersonInfo.getProvinceCode();
         this.insureCityCode = insuredPersonInfo.getCityCode();
         this.insureAreaCode = insuredPersonInfo.getCountyCode();
         this.insureDetailAddress = insuredPersonInfo.getAddr();
-        this.insureSex = insuredPersonInfo.getGender();
+        this.insureSex = insuredPersonInfo.getGender().equals("1")?"M":"W";
         this.insureBirth = insuredPersonInfo.getBirthday();
-        this.insureType = insuredPersonInfo.getPersonType();
-        this.insuredIsOwner = String.valueOf(insuredPersonInfo.getCarOwner());
+        //客户类型
+        this.insureType = insuredPersonInfo.getProperty();
+        int carOwner = insuredPersonInfo.getCarOwner();
+        //是否为车主,平台页面未传
+        this.insuredIsOwner = String.valueOf(Optional.ofNullable(carOwner).orElse(1));
+
+        this.setPayStyle("individual");
+        this.quoteGreenWay = "0";
+        this.id="";
+        this.setSpecialPromiseReqJsonStr(new String[0]);
     }
 
+    @JsonProperty("desOwnerMobile")
     private String desOwnerMobile;
-    private String compelElectronicPolicy;
-    private String bizElectronicPolicy;
     //车主信息
+    @JsonProperty("ownerName")
     private String ownerName;
+    @JsonProperty("ownerMobile")
     private String ownerMobile;
+    @JsonProperty("ownerCertificateNo")
     private String ownerCertificateNo;
+    @JsonProperty("ownerSex")
     private String ownerSex;
+    @JsonProperty("ownerBirth")
     private String ownerBirth;
+    @JsonProperty("ownerEmail")
     private String ownerEmail;
+    @JsonProperty("compelElectronicPolicy")
+    private String compelElectronicPolicy;
+    @JsonProperty("bizElectronicPolicy")
+    private String bizElectronicPolicy;
+    @JsonProperty("ownerProvinceCode")
     private String ownerProvinceCode;
+    @JsonProperty("ownerCityCode")
     private String ownerCityCode;
+    @JsonProperty("ownerAreaCode")
     private String ownerAreaCode;
+
+    @JsonProperty("ownerStreetCode")
     private String ownerStreetCode;
+    @JsonProperty("ownerDetailAddress")
     private String ownerDetailAddress;
+    @JsonProperty("ownerCertificateType")
     private String ownerCertificateType;
     //投保人信息
+    @JsonProperty("applicantCertificateType")
     private String applicantCertificateType;
+    @JsonProperty("applicantName")
     private String applicantName;
+    @JsonProperty("applicantCertificateNo")
     private String applicantCertificateNo;
+    @JsonProperty("applicantMobile")
     private String applicantMobile;
+    @JsonProperty("applicantEmail")
     private String applicantEmail;
+    @JsonProperty("applicantProvinceCode")
     private String applicantProvinceCode;
+    @JsonProperty("applicantCityCode")
     private String applicantCityCode;
+    @JsonProperty("applicantAreaCode")
     private String applicantAreaCode;
+
+    @JsonProperty("applicantStreetCode")
     private String applicantStreetCode;
+    @JsonProperty("applicantDetailAddress")
     private String applicantDetailAddress;
+    @JsonProperty("applicantSex")
     private String applicantSex;
+    @JsonProperty("applicantBirth")
     private String applicantBirth;
+    @JsonProperty("applicantCertiStartDate")
     private String applicantCertiStartDate;
+    @JsonProperty("applicantCertiEndDate")
     private String applicantCertiEndDate;
 
     //被保人信息
+    @JsonProperty("insureCertificateType")
     private String insureCertificateType;
+    @JsonProperty("insureName")
     private String insureName;
+    @JsonProperty("insureCertificateNo")
     private String insureCertificateNo;
+    @JsonProperty("insureMobile")
     private String insureMobile;
+    @JsonProperty("insureEmail")
     private String insureEmail;
+    @JsonProperty("insureProvinceCode")
     private String insureProvinceCode;
+    @JsonProperty("insureCityCode")
     private String insureCityCode;
+    @JsonProperty("insureAreaCode")
     private String insureAreaCode;
+
+    @JsonProperty("insureStreetCode")
     private String insureStreetCode;
+    @JsonProperty("insureDetailAddress")
     private String insureDetailAddress;
+    @JsonProperty("insureSex")
     private String insureSex;
+    @JsonProperty("insureBirth")
     private String insureBirth;
+    @JsonProperty("insureType")
     private String insureType;
+    @JsonProperty("insuredIsOwner")
     private String insuredIsOwner;
 
-
+    @JsonProperty("payStyle")
     private String payStyle;
-    private String individual;
+
+    @JsonProperty("quoteGreenWay")
     private String quoteGreenWay;
+
+    @JsonProperty("id")
     private String id;
+
+    @JsonProperty("specialPromiseCode")
     private String specialPromiseCode;
-    private String specialPromiseReqJsonStr;
+
+    @JsonProperty("specialPromiseReqJsonStr")
+    private String[] specialPromiseReqJsonStr;
 
 }

+ 17 - 4
tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/entity/request/ZhongAnCrawlerConfirmQuoteRequest.java

@@ -1,5 +1,6 @@
 package com.jzg.quotation.zhongan.crawler.entity.request;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.jzg.quotation.zhongan.crawler.constant.ZhongAnRequestConstant;
 import com.jzg.quotation.zhongan.crawler.entity.ZhongAnCrawlerConfigureParameters;
 import lombok.Data;
@@ -16,10 +17,22 @@ public class ZhongAnCrawlerConfirmQuoteRequest extends ZhongAnCrawlerBaseRequest
     @Serial
     private static final long serialVersionUID = -8327366400876679302L;
 
+    @JsonProperty("flowId")
+    private String flowId;
+
+    @JsonProperty("page")
+    private String page;
+
+    @JsonProperty("flag")
+    private String flag;
+
+    @JsonProperty("i")
+    private String i;
+
     public ZhongAnCrawlerConfirmQuoteRequest(ZhongAnCrawlerConfigureParameters parameters) {
-        super.setFlowId(parameters.getFlowId());
-        super.setPage(ZhongAnRequestConstant.ORDER_PAGE);
-        super.setFlag(parameters.getFlag());
-        super.setI(ZhongAnRequestConstant.I_PARAM);
+        this.setFlowId(parameters.getFlowId());
+        this.setPage(ZhongAnRequestConstant.QUOTE_PAGE);
+        this.setFlag(parameters.getFlag());
+        this.setI(ZhongAnRequestConstant.I_PARAM);
     }
 }

+ 18 - 5
tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/entity/request/ZhongAnCrawlerGetOrderRequest.java

@@ -1,5 +1,6 @@
 package com.jzg.quotation.zhongan.crawler.entity.request;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.jzg.quotation.zhongan.crawler.constant.ZhongAnRequestConstant;
 import com.jzg.quotation.zhongan.crawler.entity.ZhongAnCrawlerConfigureParameters;
 import lombok.Data;
@@ -12,14 +13,26 @@ import java.io.Serial;
  * @date: 2025/5/13 18:39
  **/
 @Data
-public class ZhongAnCrawlerGetOrderRequest extends ZhongAnCrawlerBaseRequest {
+public class ZhongAnCrawlerGetOrderRequest{
     @Serial
     private static final long serialVersionUID = 8308587186430537899L;
 
+    @JsonProperty("flowId")
+    private String flowId;
+
+    @JsonProperty("page")
+    private String page;
+
+    @JsonProperty("flag")
+    private String flag;
+
+    @JsonProperty("i")
+    private String i;
+
     public ZhongAnCrawlerGetOrderRequest(ZhongAnCrawlerConfigureParameters parameters) {
-        super.setFlowId(parameters.getFlowId());
-        super.setPage(ZhongAnRequestConstant.CAR_QUERY_PAGE);
-        super.setFlag(parameters.getFlag());
-        super.setI(ZhongAnRequestConstant.I_PARAM);
+        this.setFlowId(parameters.getFlowId());
+        this.setPage(ZhongAnRequestConstant.ORDER_PAGE);
+        this.setFlag(parameters.getFlag());
+        this.setI(ZhongAnRequestConstant.I_PARAM);
     }
 }

+ 2 - 0
tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/entity/request/ZhongAnCrawlerJyxUnderwritingRequest.java

@@ -1,5 +1,6 @@
 package com.jzg.quotation.zhongan.crawler.entity.request;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.jzg.quotation.zhongan.crawler.constant.ZhongAnRequestConstant;
 import com.jzg.quotation.zhongan.crawler.entity.ZhongAnCrawlerConfigureParameters;
 import lombok.Data;
@@ -23,5 +24,6 @@ public class ZhongAnCrawlerJyxUnderwritingRequest extends ZhongAnCrawlerBaseRequ
         super.setI(ZhongAnRequestConstant.I_PARAM);
         this.quoteId = quoteId;
     }
+    @JsonProperty("quoteId")
     private String quoteId;
 }

+ 55 - 0
tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/entity/request/ZhongAnCrawlerQueryDetailQueryRequest.java

@@ -0,0 +1,55 @@
+package com.jzg.quotation.zhongan.crawler.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.zhongan.crawler.constant.ZhongAnRequestConstant;
+import com.jzg.quotation.zhongan.crawler.entity.ZhongAnCrawlerConfigureParameters;
+import com.jzg.quotation.zhongan.crawler.entity.response.ZhongAnCrawlerCacheCarQueryResponse;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.util.List;
+
+
+@NoArgsConstructor
+@Data
+public class ZhongAnCrawlerQueryDetailQueryRequest {
+
+    @Serial
+    private static final long serialVersionUID = -1L;
+
+    @JsonProperty("flowId")
+    private String flowId;
+
+    @JsonProperty("page")
+    private String page;
+
+    @JsonProperty("flag")
+    private String flag;
+
+    @JsonProperty("i")
+    private String i;
+
+    @JsonProperty("vehicleCode")
+    private String vehicleCode;
+
+    @JsonProperty("vehicleCode")
+    private String callVehicleModelLibraryFlag;
+
+
+    public ZhongAnCrawlerQueryDetailQueryRequest(ZhongAnCrawlerCacheCarQueryResponse cacheCarQueryResponse, ZhongAnCrawlerConfigureParameters parameters){
+        this.setFlowId(parameters.getFlowId());
+        this.setPage(ZhongAnRequestConstant.CAR_QUERY_PAGE);
+        this.setFlag(parameters.getFlag());
+        this.setI(ZhongAnRequestConstant.I_PARAM);
+
+        ZhongAnCrawlerCacheCarQueryResponse.ValueDTO.DataDTO.PlatVehicleList platVehicleList = cacheCarQueryResponse.getValue().getDatas().getPlatVehicleList().get(0);
+
+        this.vehicleCode=platVehicleList.getVehicleCode();
+    }
+
+
+
+
+
+}

+ 13 - 1
tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/entity/request/ZhongAnCrawlerQuoteRequest.java

@@ -23,10 +23,22 @@ import java.util.List;
  * @date: 2025/5/12 15:26
  **/
 @Data
-public class ZhongAnCrawlerQuoteRequest extends ZhongAnCrawlerBaseRequest {
+public class ZhongAnCrawlerQuoteRequest{
     @Serial
     private static final long serialVersionUID = -5514389426425862446L;
 
+    @JsonProperty("flowId")
+    private String flowId;
+
+    @JsonProperty("page")
+    private String page;
+
+    @JsonProperty("flag")
+    private String flag;
+
+    @JsonProperty("i")
+    private String i;
+
     /**
      * 是否选择商业险(1,是;0,否)
      */

+ 3 - 2
tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/entity/response/ZhongAnCrawlerCacheCarQueryResponse.java

@@ -41,10 +41,11 @@ public class ZhongAnCrawlerCacheCarQueryResponse extends ZhongAnCrawlerBaseRespo
             private String modelEnergyType;
 
             @Data
-            private static class PlatVehicleList implements Serializable{
+            @NoArgsConstructor
+            public static class PlatVehicleList implements Serializable{
 
                 @Serial
-                private static final long serialVersionUID = -1L;
+                private static final long serialVersionUID = -11111L;
 
                 private String analogyVehiclePrice;
                 private String analogyVehiclePriceWithTax;

+ 138 - 0
tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/entity/response/ZhongAnCrawlerQueryDetailQueryResponse.java

@@ -0,0 +1,138 @@
+package com.jzg.quotation.zhongan.crawler.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@NoArgsConstructor
+@Data
+public class ZhongAnCrawlerQueryDetailQueryResponse {
+
+
+    @JsonProperty("errorMsg")
+    private String errorMsg;
+    @JsonProperty("ruleMsgTips")
+    private String ruleMsgTips;
+    @JsonProperty("errorCode")
+    private String errorCode;
+    @JsonProperty("value")
+    private ValueDTO value;
+    @JsonProperty("additionalInfo")
+    private AdditionalInfoDTO additionalInfo;
+    @JsonProperty("success")
+    private Boolean success;
+
+    @NoArgsConstructor
+    @Data
+    public static class ValueDTO {
+        @JsonProperty("datas")
+        private DatasDTO datas;
+
+        @NoArgsConstructor
+        @Data
+        public static class DatasDTO {
+            @JsonProperty("vehicleDetailInfo")
+            private VehicleDetailInfoDTO vehicleDetailInfo;
+
+            @NoArgsConstructor
+            @Data
+            public static class VehicleDetailInfoDTO {
+                @JsonProperty("vehicleCode")
+                private String vehicleCode;
+                @JsonProperty("vehicleName")
+                private String vehicleName;
+                @JsonProperty("companyName")
+                private String companyName;
+                @JsonProperty("companyCode")
+                private String companyCode;
+                @JsonProperty("brandName")
+                private String brandName;
+                @JsonProperty("brandCode")
+                private String brandCode;
+                @JsonProperty("familyName")
+                private String familyName;
+                @JsonProperty("familyCode")
+                private String familyCode;
+                @JsonProperty("remark")
+                private String remark;
+                @JsonProperty("vehicleClassCode")
+                private String vehicleClassCode;
+                @JsonProperty("vehicleClass")
+                private String vehicleClass;
+                @JsonProperty("vehicleImport")
+                private String vehicleImport;
+                @JsonProperty("purchasePrice")
+                private Integer purchasePrice;
+                @JsonProperty("purchasePriceTax")
+                private Integer purchasePriceTax;
+                @JsonProperty("kindredPrice")
+                private Integer kindredPrice;
+                @JsonProperty("kindredPriceTax")
+                private String kindredPriceTax;
+                @JsonProperty("jqxClassid")
+                private String jqxClassid;
+                @JsonProperty("jqxClassname")
+                private String jqxClassname;
+                @JsonProperty("syxClassid")
+                private String syxClassid;
+                @JsonProperty("syxClassname")
+                private String syxClassname;
+                @JsonProperty("seat")
+                private String seat;
+                @JsonProperty("fullWeight")
+                private String fullWeight;
+                @JsonProperty("fullWeightMax")
+                private Integer fullWeightMax;
+                @JsonProperty("fullWeightMin")
+                private Integer fullWeightMin;
+                @JsonProperty("displacement")
+                private Double displacement;
+                @JsonProperty("marketDate")
+                private String marketDate;
+                @JsonProperty("gearBoxType")
+                private String gearBoxType;
+                @JsonProperty("engineDesc")
+                private String engineDesc;
+                @JsonProperty("groupName")
+                private String groupName;
+                @JsonProperty("groupCode")
+                private String groupCode;
+                @JsonProperty("stopFlag")
+                private String stopFlag;
+                @JsonProperty("vehicleHyName")
+                private String vehicleHyName;
+                @JsonProperty("vehicleHyCode")
+                private String vehicleHyCode;
+                @JsonProperty("configName")
+                private String configName;
+                @JsonProperty("hfCode")
+                private String hfCode;
+                @JsonProperty("hfName")
+                private String hfName;
+                @JsonProperty("vehiclePubName")
+                private String vehiclePubName;
+                @JsonProperty("vehiclePubCode")
+                private String vehiclePubCode;
+                @JsonProperty("yearPattern")
+                private String yearPattern;
+                @JsonProperty("power")
+                private String power;
+                @JsonProperty("familyShortName")
+                private String familyShortName;
+                @JsonProperty("powerType")
+                private String powerType;
+                @JsonProperty("powerTypeCode")
+                private String powerTypeCode;
+                @JsonProperty("airBagNum")
+                private String airBagNum;
+                @JsonProperty("vehicleHyCCode")
+                private String vehicleHyCCode;
+            }
+        }
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class AdditionalInfoDTO {
+    }
+}

+ 8 - 8
tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/entity/response/ZhongAnCrawlerQuoteResponse.java

@@ -66,7 +66,7 @@ public class ZhongAnCrawlerQuoteResponse extends ZhongAnCrawlerBaseResponse {
 
             private String agentUserCode;
 
-            private Integer currentDateStr;
+            private Long currentDateStr;
 
             private Boolean isImportCar;
 
@@ -157,7 +157,7 @@ public class ZhongAnCrawlerQuoteResponse extends ZhongAnCrawlerBaseResponse {
             public static class LoanVehicleDTO implements Serializable {
                 @Serial
                 private static final long serialVersionUID = -9208226282120682664L;
-                private Integer instantEffectiveDate;
+                private Long instantEffectiveDate;
 
                 private String isShowDTPicker;
 
@@ -190,9 +190,9 @@ public class ZhongAnCrawlerQuoteResponse extends ZhongAnCrawlerBaseResponse {
 
                 private Double totalPremium;
 
-                private Integer compelPremium;
+                private Double compelPremium;
 
-                private Integer taxPremium;
+                private Double taxPremium;
 
                 private String taxCode;
 
@@ -204,7 +204,7 @@ public class ZhongAnCrawlerQuoteResponse extends ZhongAnCrawlerBaseResponse {
 
                 private String isPayTax;
 
-                private Integer nonTotalPremium;
+                private Double nonTotalPremium;
 
                 @Data
                 public static class VehicleCoverageListDTO implements Serializable {
@@ -216,11 +216,11 @@ public class ZhongAnCrawlerQuoteResponse extends ZhongAnCrawlerBaseResponse {
 
                     private String baseRiderType;
 
-                    private String premium;
+                    private Double premium;
 
                     private String amount;
 
-                    private Integer totalCoveragePremium;
+                    private Double totalCoveragePremium;
 
                     private String productDefName;
 
@@ -261,7 +261,7 @@ public class ZhongAnCrawlerQuoteResponse extends ZhongAnCrawlerBaseResponse {
 
                 private Integer jyxEnsureSeatNo;
 
-                private String jyxPremium;
+                private Double jyxPremium;
 
                 private String driverAccidentInsuranceFlag;
 

+ 27 - 4
tenant/insurance/quotation-zhongan/src/main/java/com/jzg/quotation/zhongan/crawler/service/Impl/ZhongAnCrawlerRequestImpl.java

@@ -1,5 +1,6 @@
 package com.jzg.quotation.zhongan.crawler.service.Impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.jzg.commons.entity.quote.vo.AttributionInformationVo;
 import com.jzg.commons.entity.quote.vo.CarInfoVo;
@@ -111,8 +112,27 @@ public class ZhongAnCrawlerRequestImpl implements ZhongAnCrawlerRequest {
 
 
         ZhongAnCrawlerCacheCarQueryRequest cacheCarQueryRequest = new ZhongAnCrawlerCacheCarQueryRequest(quoteVo,vehicleDTO,parameters);
-        String cacheCarQueryResponse = zhongAnCrawlerRequestComponent.cacheCarInfo(cacheCarQueryRequest,headers);
+//        String cacheCarQueryResponse = zhongAnCrawlerRequestComponent.cacheCarInfo(cacheCarQueryRequest,headers);
+        ZhongAnCrawlerCacheCarQueryResponse cacheCarQueryResponse = zhongAnCrawlerRequestComponent.cacheCarInfo(cacheCarQueryRequest,headers);
+        if (cacheCarQueryResponse != null && StringUtils.isNotEmpty(cacheCarQueryResponse.getErrorMsg())) {
+            if (cacheCarQueryResponse.getErrorCode().equals("A12512")) {
+                ZhongAnCrawlerQueryDetailQueryRequest detailQueryRequest = new ZhongAnCrawlerQueryDetailQueryRequest(cacheCarQueryResponse, parameters);
+                ZhongAnCrawlerQueryDetailQueryResponse queryDetailQueryResponse = zhongAnCrawlerRequestComponent.detailQuery(detailQueryRequest,headers);
+
+                ZhongAnCrawlerQueryDetailQueryResponse.ValueDTO.DatasDTO.VehicleDetailInfoDTO vehicleDetailInfo = queryDetailQueryResponse.getValue().getDatas().getVehicleDetailInfo();
+                ZhongAnCrawlerCarQueryResponse.ValueDTO.DataDTO.ResultDTO.VehicleDTO vehicleDTO1 = BeanUtil.copyProperties(vehicleDetailInfo, ZhongAnCrawlerCarQueryResponse.ValueDTO.DataDTO.ResultDTO.VehicleDTO.class);
+
+                ZhongAnCrawlerCacheCarQueryRequest zhongAnCrawlerCacheCarQueryRequest = new ZhongAnCrawlerCacheCarQueryRequest(quoteVo, vehicleDTO1, parameters);
+                ZhongAnCrawlerCacheCarQueryResponse cacheCarQueryResponse1 = zhongAnCrawlerRequestComponent.cacheCarInfo(zhongAnCrawlerCacheCarQueryRequest, headers);
+                if (cacheCarQueryResponse1 != null && StringUtils.isNotEmpty(cacheCarQueryResponse1.getErrorMsg())) {
+                    throw new SystemException(cacheCarQueryResponse1.getErrorMsg());
+                }
+
+            }else {
 
+                throw new SystemException(cacheCarQueryResponse.getErrorMsg());
+            }
+        }
 
         ZhongAnCrawlerQuoteBaseRequest quoteBaseRequest = new ZhongAnCrawlerQuoteBaseRequest(parameters);
         ZhongAnCrawlerQuoteBaseResponse quoteBaseResponse = zhongAnCrawlerRequestComponent.quoteBaseInfo(quoteBaseRequest, headers);
@@ -122,12 +142,12 @@ public class ZhongAnCrawlerRequestImpl implements ZhongAnCrawlerRequest {
         ZhongAnCrawlerQuoteRequest quoteRequest = new ZhongAnCrawlerQuoteRequest(quoteVo, parameters,quoteBaseResponse);
         ZhongAnCrawlerQuoteResponse quoteResponse = zhongAnCrawlerRequestComponent.quote(quoteRequest, headers);
         if (quoteResponse != null && StringUtils.isNotEmpty(quoteResponse.getErrorMsg())) {
-            throw new SystemException("众安财险登录失效,报价失败,联系管理员!");
+            throw new SystemException(quoteResponse.getErrorMsg());
         }
 
         //确认报价
         ZhongAnCrawlerConfirmQuoteRequest confirmQuoteRequest = new ZhongAnCrawlerConfirmQuoteRequest(parameters);
-        zhongAnCrawlerRequestComponent.confirmQuote(confirmQuoteRequest, headers);
+        String s = zhongAnCrawlerRequestComponent.confirmQuote(confirmQuoteRequest, headers);
 
         //获取订单信息,需要获取quoteId
         ZhongAnCrawlerGetOrderRequest getOrderRequest = new ZhongAnCrawlerGetOrderRequest(parameters);
@@ -226,6 +246,7 @@ public class ZhongAnCrawlerRequestImpl implements ZhongAnCrawlerRequest {
      */
     @Override
     public PaymentLinkResultsVo getPaymentLink(PaymentLinkVo paymentLinkVo) {
+        PaymentLinkResultsVo paymentLinkResultsVo = new PaymentLinkResultsVo();
         OrderBase orderBase = paymentLinkVo.getOrder();
         AttributionInformationVo attributionInformationVo = orderBase.getAttributionInformationVo();
         //获取配置信息
@@ -235,7 +256,9 @@ public class ZhongAnCrawlerRequestImpl implements ZhongAnCrawlerRequest {
 
         ZhongAnCrawlerPaymentRequest paymentRequest = new ZhongAnCrawlerPaymentRequest(zhongAnCrawlerOrder.getPolicyId());
         ZhongAnCrawlerPaymentResponse payment = zhongAnCrawlerRequestComponent.payment(paymentRequest, headers);
-        return null;
+        paymentLinkResultsVo.setPaymentLink(payment.getValue().getDatas().getShareShortUrl());
+
+        return paymentLinkResultsVo;
     }
 
     /**