Browse Source

紫金财险报价

wks 1 year ago
parent
commit
d364eeb2dc
58 changed files with 4600 additions and 81 deletions
  1. 1 0
      tenant/insurance/pom.xml
  2. 9 22
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/component/RequestComponent.java
  3. 91 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/InsuranceCode.java
  4. 22 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/base/ApiType.java
  5. 4 10
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/aggregated/QuoteVo.java
  6. 40 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/base/OrderBase.java
  7. 0 4
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/quote/AttributionInformationVo.java
  8. 16 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/quote/CarInfoVo.java
  9. 6 1
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/QuotationBaseService.java
  10. 4 1
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/standard/CrawlerRequestUrlStandard.java
  11. 7 4
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/component/DaJiaCrawlerRequestComponent.java
  12. 0 12
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/constant/enums/RequestUrl.java
  13. 0 5
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/converter/DaJiaCrawlerQuoteResultsConverter.java
  14. 1 1
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/converter/DaJiaQuotationProcessConstruction.java
  15. 1 4
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/DaJiaCrawlerConfigureParameters.java
  16. 17 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/properties/DaJiaCrawlerProperties.java
  17. 32 13
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/service/impl/DaJiaCrawlerRequestImpl.java
  18. 37 3
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsuranceCompanyRequestServiceImpl.java
  19. 21 1
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quote/zhongmei/api/service/impl/ZhongMeiApiRequestImpl.java
  20. 28 0
      tenant/insurance/quotation-zijin/pom.xml
  21. 316 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/component/ZiJinApiRequestComponent.java
  22. 47 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/constant/enums/RequestUrl.java
  23. 41 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/converter/ZiJinQuotationConstruction.java
  24. 42 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/converter/ZiJinQuotationProcessConstruction.java
  25. 45 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/ZiJinApiConfigureParameters.java
  26. 915 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/CalculatePremiumRequest.java
  27. 48 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/GetAccessTokenRequest.java
  28. 97 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/ModelQueryRequest.java
  29. 38 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/NewPayRequest.java
  30. 18 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/OrderNoRequest.java
  31. 39 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/PaymentCallbacksRequest.java
  32. 48 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/QueryActualValueRequest.java
  33. 27 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/QueryClauseDataRequest.java
  34. 21 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/QueryOrderDetailRequest.java
  35. 38 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/QueryTokenRequest.java
  36. 60 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/QueryVehicProductsRequest.java
  37. 37 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/SendCheckCarLinkRequest.java
  38. 74 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/SubmitVerifyRequest.java
  39. 36 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/UploadFileRequest.java
  40. 50 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/UploadImageInfoListRequest.java
  41. 47 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/ZbfAggregatePayRequest.java
  42. 21 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/BaseResponse.java
  43. 868 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/CalculatePremiumResponse.java
  44. 30 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/GetAccessTokenResponse.java
  45. 304 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/ModelQueryResponse.java
  46. 55 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/NewPayRequestResponse.java
  47. 26 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/QueryActualValueResponse.java
  48. 96 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/QueryClauseDataResponse.java
  49. 365 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/QueryOrderDetailResponse.java
  50. 78 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/QueryOrderStateResponse.java
  51. 27 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/QueryTokenResponse.java
  52. 66 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/QueryVehicProductsResponse.java
  53. 71 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/SubmitVerifyResponse.java
  54. 28 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/UploadFileResponse.java
  55. 25 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/ZbfAggregatePayResponse.java
  56. 36 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/properties/ZiJinApiProperties.java
  57. 75 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/service/Impl/ZiJinApiRequestImpl.java
  58. 8 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/service/ZiJinApiRequest.java

+ 1 - 0
tenant/insurance/pom.xml

@@ -16,6 +16,7 @@
         <module>quotation-dajia</module>
         <module>quotation-summary</module>
         <module>quotation-zhongmei</module>
+        <module>quotation-zijin</module>
     </modules>
 
     <dependencies>

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

@@ -73,26 +73,14 @@ public class RequestComponent {
     }
 
     /**
-     * @param urlStandard   请求模型
-     * @param param         拼接的请求参数
-     * @param responseClass 响应返回类
-     * @param <Response>    响应实体
-     * @return 响应
-     */
-    public <Response> Response requestGET(CrawlerRequestUrlStandard urlStandard, Map<String, Object> param, Class<Response> responseClass) {
-        return get(urlStandard.getRequestUrl(), param, urlStandard.getRequestDescription(), responseClass, new HttpHeaders());
-    }
-
-    /**
-     * @param urlPrefix     请求地址前缀
-     * @param urlStandard   请求地址枚举
+     * @param url           请求地址
      * @param param         拼接的请求参数
      * @param responseClass 响应返回类
      * @param <Response>    响应实体
      * @return 响应
      */
-    public <Response> Response requestGET(String urlPrefix, CrawlerRequestUrlStandard urlStandard, Map<String, Object> param, Class<Response> responseClass) {
-        return get(urlPrefix + urlStandard.getRequestUrl(), param, urlStandard.getRequestDescription(), responseClass, new HttpHeaders());
+    public <Response> Response requestGET(String url, Map<String, Object> param, String description, Class<Response> responseClass) {
+        return get(url, param, description, responseClass, new HttpHeaders());
     }
 
     /**
@@ -171,29 +159,28 @@ public class RequestComponent {
     /**
      * 请求体为 object POST请求返回响应返回类
      *
-     * @param urlStandard   请求地址枚举
+     * @param url           请求地址
      * @param body          请求体
      * @param responseClass 响应返回类
      * @param headers       请求头
      * @param <Response>    响应返回
      * @return 响应
      */
-    public <Response> ResponseEntity<Response> objectPost(CrawlerRequestUrlStandard urlStandard, Object body, Class<Response> responseClass, HttpHeaders headers) {
-        return stringPost(urlStandard.getRequestUrl(), body, responseClass, headers);
+    public <Response> ResponseEntity<Response> objectPost(String url, Object body, Class<Response> responseClass, HttpHeaders headers) {
+        return stringPost(url, body, responseClass, headers);
     }
 
     /**
      * POST请求返回响应体包装对象
      *
-     * @param urlPrefix     请求响应
-     * @param urlStandard   请求地址枚举
+     * @param url           请求地址
      * @param body          请求体
      * @param responseClass 响应返回类
      * @param <Response>    响应返回
      * @return 响应体包装对象
      */
-    public <Response> ResponseEntity<Response> objectPost(String urlPrefix, CrawlerRequestUrlStandard urlStandard, Object body, Class<Response> responseClass) {
-        return stringPost(urlPrefix + urlStandard.uri(), body, responseClass, new HttpHeaders());
+    public <Response> ResponseEntity<Response> objectPost(String url, Object body, Class<Response> responseClass) {
+        return stringPost(url, body, responseClass, new HttpHeaders());
     }
 
 }

+ 91 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/InsuranceCode.java

@@ -0,0 +1,91 @@
+package com.jzg.quotation.commons.constant;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @description: 保险公司编码
+ * @author: wenks
+ * @date: 2025/2/20 14:56
+ **/
+@AllArgsConstructor
+public class InsuranceCode {
+
+    public static final String INSURANCE_AAIC = "AAIC";
+    public static final String INSURANCE_ABIC = "ABIC";
+    public static final String INSURANCE_ACIC = "ACIC";
+    public static final String INSURANCE_AHIC = "AHIC";
+    public static final String INSURANCE_AICS = "AICS";
+    public static final String INSURANCE_AIGC = "AIGC";
+    public static final String INSURANCE_AMIC = "AMIC";
+    public static final String INSURANCE_APIC = "APIC";
+    public static final String INSURANCE_AZCN = "AZCN";
+    public static final String INSURANCE_BGIC = "BGIC";
+    public static final String INSURANCE_BOCI = "BOCI";
+    public static final String INSURANCE_BPIC = "BPIC";
+    public static final String INSURANCE_CAIC = "CAIC";
+    public static final String INSURANCE_CATH = "CATH";
+    public static final String INSURANCE_CCBP = "CCBP";
+    public static final String INSURANCE_CCIC = "CCIC";
+    public static final String INSURANCE_CHAC = "CHAC";
+    public static final String INSURANCE_CICP = "CICP";
+    public static final String INSURANCE_CJCX = "CJCX";
+    public static final String INSURANCE_CPIC = "CPIC";
+    public static final String INSURANCE_CRCI = "CRCI";
+    public static final String INSURANCE_CRIC = "CRIC";
+    public static final String INSURANCE_DBIC = "DBIC";
+    public static final String INSURANCE_DHIC = "DHIC";
+    public static final String INSURANCE_DICC = "DICC";
+    //大家财产保险有限责任公司
+    public static final String INSURANCE_DJPC = "DJPC";
+    public static final String INSURANCE_EAIC = "EAIC";
+    public static final String INSURANCE_FPIC = "FPIC";
+    public static final String INSURANCE_GPIC = "GPIC";
+    public static final String INSURANCE_GYIC = "GYIC";
+    public static final String INSURANCE_HAIC = "HAIC";
+    public static final String INSURANCE_HBIC = "HBIC";
+    public static final String INSURANCE_HGIC = "HGIC";
+    public static final String INSURANCE_HHBX = "HHBX";
+    public static final String INSURANCE_HNIC = "HNIC";
+    public static final String INSURANCE_HTIC = "HTIC";
+    public static final String INSURANCE_HYIC = "HYIC";
+    public static final String INSURANCE_JLIC = "JLIC";
+    public static final String INSURANCE_JTIC = "JTIC";
+    public static final String INSURANCE_LIHI = "LIHI";
+    public static final String INSURANCE_MACN = "MACN";
+    public static final String INSURANCE_MSIC = "MSIC";
+    public static final String INSURANCE_PAIC = "PAIC";
+    public static final String INSURANCE_PICC = "PICC";
+    public static final String INSURANCE_QHIC = "QHIC";
+    public static final String INSURANCE_RSIC = "RSIC";
+    public static final String INSURANCE_SJIC = "SJIC";
+    public static final String INSURANCE_SMIC = "SMIC";
+    public static final String INSURANCE_SPIC = "SPIC";
+    public static final String INSURANCE_TAIC = "TAIC";
+    public static final String INSURANCE_TKIC = "TKIC";
+    public static final String INSURANCE_TMNF = "TMNF";
+    public static final String INSURANCE_TPBX = "TPBX";
+    public static final String INSURANCE_TPIC = "TPIC";
+    public static final String INSURANCE_TSBX = "TSBX";
+    public static final String INSURANCE_ULIC = "ULIC";
+    public static final String INSURANCE_UTIC = "UTIC";
+    public static final String INSURANCE_XAIC = "XAIC";
+    public static final String INSURANCE_XDCX = "XDCX";
+    public static final String INSURANCE_YAIC = "YAIC";
+    public static final String INSURANCE_YDCX = "YDCX";
+    public static final String INSURANCE_YGBX = "YGBX";
+    public static final String INSURANCE_YPIC = "YPIC";
+    public static final String INSURANCE_YZIC = "YZIC";
+    public static final String INSURANCE_ZAPA = "ZAPA";
+    public static final String INSURANCE_ZFIC = "ZFIC";
+    public static final String INSURANCE_ZKIC = "ZKIC";
+    public static final String INSURANCE_ZLIC = "ZLIC";
+    // 中煤财产保险股份有限公司
+    public static final String INSURANCE_ZMBX = "ZMBX";
+    public static final String INSURANCE_ZSIC = "ZSIC";
+    public static final String INSURANCE_ZYBX = "ZYBX";
+    public static final String INSURANCE_ZYIC = "ZYIC";
+    public static final String INSURANCE_SNPI = "SNPI";
+
+}

+ 22 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/base/ApiType.java

@@ -0,0 +1,22 @@
+package com.jzg.quotation.commons.constant.enums.base;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @description: 请求类型
+ * @author: wenks
+ * @date: 2025/2/21 16:32
+ **/
+@Getter
+@AllArgsConstructor
+public enum ApiType {
+
+    API_1(1, "api对接"),
+    API_2(2, "python对接");
+
+    private final int code;
+
+    private final String desc;
+
+}

+ 4 - 10
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/aggregated/QuoteVo.java

@@ -1,6 +1,7 @@
 package com.jzg.quotation.commons.entity.vo.aggregated;
 
 
+import com.jzg.quotation.commons.entity.vo.base.OrderBase;
 import com.jzg.quotation.commons.entity.vo.quote.*;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -18,18 +19,11 @@ public class QuoteVo implements Serializable {
 
     @Serial
     private static final long serialVersionUID = 1928126868229420046L;
+
     /**
-     * 交互唯一订单
-     */
-    private String ordersNo;
-    /**
-     * 保险公司代码
-     */
-    private String insuranceCompanyCode;
-    /**
-     * 归属信息
+     * 订单交互信息
      */
-    private AttributionInformationVo attributionInformationVo;
+    private OrderBase order;
     /**
      * 车辆信息
      */

+ 40 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/base/OrderBase.java

@@ -0,0 +1,40 @@
+package com.jzg.quotation.commons.entity.vo.base;
+
+import com.jzg.quotation.commons.entity.vo.quote.AttributionInformationVo;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @description: 订单交互信息
+ * @author: wenks
+ * @date: 2025/2/21 16:28
+ **/
+@Data
+public class OrderBase implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -8776789873246660987L;
+
+    /**
+     * 交互唯一订单
+     */
+    private String ordersNo;
+
+    /**
+     * 保险公司代码
+     */
+    private String insuranceCompanyCode;
+
+    /**
+     * 归属信息
+     */
+    private AttributionInformationVo attributionInformationVo;
+
+    /**
+     * @see com.jzg.quotation.commons.constant.enums.base.ApiType
+     * 请求方式
+     */
+    private int apiType;
+}

+ 0 - 4
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/quote/AttributionInformationVo.java

@@ -34,9 +34,5 @@ public class AttributionInformationVo implements Serializable {
      * 配置信息
      */
     private Map<String, String> configInfo;
-    /**
-     * 请求方式
-     */
-    private String apiType;
 
 }

+ 16 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/quote/CarInfoVo.java

@@ -3,6 +3,7 @@ package com.jzg.quotation.commons.entity.vo.quote;
 
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.springframework.util.StringUtils;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -115,4 +116,19 @@ public class CarInfoVo implements Serializable {
      * 发证日期
      */
     private String issueDate;
+
+    /**
+     * 获取 吨位数/核定载质量
+     *
+     * @return 核定载质量吨位
+     */
+    public String getTonCount() {
+        if (StringUtils.hasLength(limitLoad)) {
+            return null;
+        }
+        double v = Double.parseDouble(limitLoad);
+        v = v / 1000;
+        return String.valueOf(v);
+    }
+
 }

+ 6 - 1
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/QuotationBaseService.java

@@ -20,19 +20,24 @@ public interface QuotationBaseService {
      */
     QuoteResultsVo quote(QuoteVo quoteVo);
     /**
-     * 提交核保
+     * 提交核保 子订单
      */
+    void underwriting(String subOrder);
     /**
      * 获取支付链接
      */
+    String getPaymentLink(String subOrder);
     /**
      * 上传影像
      */
+    void uploadImage(String subOrder);
     /**
      * 下载保单
      */
+    void downloadPolicy(String subOrder);
     /**
      * 查询订单状态
      */
 
+
 }

+ 4 - 1
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/standard/CrawlerRequestUrlStandard.java

@@ -12,7 +12,9 @@ public interface CrawlerRequestUrlStandard {
      *
      * @return url
      */
-    String getRequestUrl();
+    default String getRequestUrl(String url) {
+        return url + uri();
+    }
 
     /**
      * 获取爬虫请求的 描述
@@ -23,6 +25,7 @@ public interface CrawlerRequestUrlStandard {
 
     /**
      * 获取请求的uri
+     *
      * @return uri
      */
     String uri();

+ 7 - 4
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/component/DaJiaRequestComponent.java → tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/component/DaJiaCrawlerRequestComponent.java

@@ -10,6 +10,7 @@ import com.jzg.quotation.commons.standard.CrawlerRequestUrlStandard;
 import com.jzg.quotation.dajia.crawler.constant.enums.RequestUrl;
 import com.jzg.quotation.dajia.crawler.entity.request.*;
 import com.jzg.quotation.dajia.crawler.entity.response.*;
+import com.jzg.quotation.dajia.crawler.properties.DaJiaCrawlerProperties;
 import com.jzg.quotation.dajia.crawler.utils.DESEncryption;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -30,7 +31,7 @@ import java.util.UUID;
 @Slf4j
 @Component
 @RequiredArgsConstructor
-public class DaJiaRequestComponent {
+public class DaJiaCrawlerRequestComponent {
 
     private final RequestComponent requestComponent;
 
@@ -38,6 +39,8 @@ public class DaJiaRequestComponent {
 
     private final ExteriorUtilsRequest exteriorUtilsRequest;
 
+    private final DaJiaCrawlerProperties daJiaCrawlerProperties;
+
     // 循环次数
     public static final int CIRCULATE_NUMBER = 3;
     // 登陆次数
@@ -85,7 +88,7 @@ public class DaJiaRequestComponent {
         }
         Map<String, Object> map = Map.of("imgId", UUID.randomUUID().toString().replaceAll("-", ""));
         // 请求
-        DaJiaCrawlerBaseResponse request = requestComponent.requestGET(RequestUrl.BASE_URL, RequestUrl.CAPTCHA, map, DaJiaCrawlerBaseResponse.class);
+        DaJiaCrawlerBaseResponse request = requestComponent.requestGET(RequestUrl.CAPTCHA.getRequestUrl(daJiaCrawlerProperties.getBaseUrl()), map, "",DaJiaCrawlerBaseResponse.class);
         String decrypt = DESEncryption.decrypt(request.getResult());
         DaJiaCrawlerCaptchaResponse daJiaCrawlerCaptchaResponse = JSON.parseObject(decrypt, DaJiaCrawlerCaptchaResponse.class);
         // 识别验证码
@@ -114,7 +117,7 @@ public class DaJiaRequestComponent {
         DaJiaCrawlerCaptchaResponse captcha = captcha(CIRCULATE_NUMBER);
         // 登录存入缓存当中
         DaJiaCrawlerAuthenticateRequest request = new DaJiaCrawlerAuthenticateRequest(captcha, username, password);
-        ResponseEntity<DaJiaCrawlerBaseResponse> responseEntity = requestComponent.objectPost(RequestUrl.BASE_URL, RequestUrl.AUTHENTICATE, request, DaJiaCrawlerBaseResponse.class);
+        ResponseEntity<DaJiaCrawlerBaseResponse> responseEntity = requestComponent.objectPost(RequestUrl.AUTHENTICATE.getRequestUrl(daJiaCrawlerProperties.getVhlUrl()), request, DaJiaCrawlerBaseResponse.class);
         HttpStatusCode statusCode = responseEntity.getStatusCode();
         String authorization = responseEntity.getHeaders().getFirst(HttpHeaders.AUTHORIZATION);
         // 判断请求是否成功和授权码是否返回
@@ -155,7 +158,7 @@ public class DaJiaRequestComponent {
      * @return
      */
     public <DaJiaResponse> DaJiaResponse request(CrawlerRequestUrlStandard crawlerRequestUrlStandard, Object request, Class<DaJiaResponse> responseClass, HttpHeaders headers) {
-        ResponseEntity<DaJiaCrawlerBaseResponse> responseEntity = requestComponent.objectPost(crawlerRequestUrlStandard, request, DaJiaCrawlerBaseResponse.class, headers);
+        ResponseEntity<DaJiaCrawlerBaseResponse> responseEntity = requestComponent.objectPost(crawlerRequestUrlStandard.getRequestUrl(daJiaCrawlerProperties.getVhlUrl()), request, DaJiaCrawlerBaseResponse.class, headers);
         DaJiaCrawlerBaseResponse daJiaCrawlerBaseResponse = responseEntity.getBody();
         String decrypt = DESEncryption.decrypt(daJiaCrawlerBaseResponse.getResult());
         return JSON.parseObject(decrypt, responseClass);

+ 0 - 12
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/constant/enums/RequestUrl.java

@@ -20,24 +20,12 @@ public enum RequestUrl implements CrawlerRequestUrlStandard {
     SAVE("save", "保存订单"),
     CAR("car", "车型查询"),
     ACTUAL_VALUE("", "计算折旧价格"),
-
     ;
 
     private final String uri;
 
     private final String description;
 
-    // 登录 验证码
-    public static final String BASE_URL = "https://cts.djbx.com/api_prod/api/";
-
-    // 车险平台
-    private static final String VHL_URL = "https://cts.djbx.com/api_vhl_prod/api/";
-
-    @Override
-    public String getRequestUrl() {
-        return VHL_URL + uri;
-    }
-
     @Override
     public String getRequestDescription() {
         return description;

+ 0 - 5
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/converter/DaJiaCrawlerQuoteResultsConverter.java

@@ -20,26 +20,21 @@ public class DaJiaCrawlerQuoteResultsConverter extends QuoteResultsConverter<DaJ
     @Override
     protected  RiskInfoVo toCiRiskInfoVo(DaJiaCrawlerPriceResponse insuranceQuoteResults) {
         RiskInfoVo riskInfoVo = new RiskInfoVo();
-
-
         return null;
     }
 
     @Override
     protected RiskInfoVo toBiRiskInfoVo(DaJiaCrawlerPriceResponse insuranceQuoteResults) {
-
         return null;
     }
 
     @Override
     protected List<KindInfoVo> toKindInfoVoList(DaJiaCrawlerPriceResponse insuranceQuoteResults) {
-
         return List.of();
     }
 
     @Override
     protected List<ExpenseFactor> toExpenseFactorList(DaJiaCrawlerPriceResponse insuranceQuoteResults) {
-
         return List.of();
     }
 

+ 1 - 1
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/converter/QuotationProcessConstruction.java → tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/converter/DaJiaQuotationProcessConstruction.java

@@ -11,7 +11,7 @@ import com.jzg.quotation.dajia.crawler.entity.response.DaJiaCrawlerCarResponse;
  * @author: wenks
  * @date: 2025/2/20 9:15
  **/
-public class QuotationProcessConstruction {
+public class DaJiaQuotationProcessConstruction {
 
 
     public static DaJiaCrawlerCarRequest daJiaCrawlerCarRequestBuilder(CarInfoVo carInfoVo) {

+ 1 - 4
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/DaJiaCrawlerConfigureParameters.java

@@ -3,7 +3,6 @@ package com.jzg.quotation.dajia.crawler.entity;
 import com.jzg.quotation.commons.standard.ConfigureParameters;
 import lombok.AllArgsConstructor;
 import lombok.Data;
-import lombok.Getter;
 import lombok.NoArgsConstructor;
 
 import java.io.Serial;
@@ -21,8 +20,6 @@ public class DaJiaCrawlerConfigureParameters implements ConfigureParameters {
     @Serial
     private static final long serialVersionUID = -4576395685599605562L;
 
-
-
-
+    private String url;
 
 }

+ 17 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/properties/DaJiaCrawlerProperties.java

@@ -0,0 +1,17 @@
+package com.jzg.quotation.dajia.crawler.properties;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "dajia.crawler")
+public class DaJiaCrawlerProperties {
+
+    private String baseUrl;
+
+    private String vhlUrl;
+
+}

+ 32 - 13
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/service/impl/DaJiaCrawlerRequestImpl.java

@@ -1,15 +1,15 @@
 package com.jzg.quotation.dajia.crawler.service.impl;
 
 
+import com.jzg.quotation.commons.constant.InsuranceCode;
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
 import com.jzg.quotation.commons.entity.vo.base.LoginBase;
 import com.jzg.quotation.commons.entity.vo.quote.AttributionInformationVo;
-import com.jzg.quotation.commons.entity.vo.quote.CarInfoVo;
 import com.jzg.quotation.commons.standard.conversion.ConfigureParametersConversion;
-import com.jzg.quotation.dajia.crawler.component.DaJiaRequestComponent;
+import com.jzg.quotation.dajia.crawler.component.DaJiaCrawlerRequestComponent;
 import com.jzg.quotation.dajia.crawler.converter.DaJiaCrawlerQuoteResultsConverter;
-import com.jzg.quotation.dajia.crawler.converter.QuotationProcessConstruction;
+import com.jzg.quotation.dajia.crawler.converter.DaJiaQuotationProcessConstruction;
 import com.jzg.quotation.dajia.crawler.entity.DaJiaCrawlerConfigureParameters;
 import com.jzg.quotation.dajia.crawler.entity.request.*;
 import com.jzg.quotation.dajia.crawler.entity.response.DaJiaCrawlerCarResponse;
@@ -22,46 +22,65 @@ import org.springframework.stereotype.Service;
 
 import java.util.List;
 
-@Service("DJPC")
+@Service(value = InsuranceCode.INSURANCE_DJPC)
 @RequiredArgsConstructor
 public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
 
-    private final DaJiaRequestComponent daJiaRequestComponent;
+    private final DaJiaCrawlerRequestComponent DaJiaCrawlerRequestComponent;
 
     @Override
     public void login(LoginBase loginBase) {
-        daJiaRequestComponent.authenticate(loginBase.getUsername(), loginBase.getUsername(), DaJiaRequestComponent.LOGINS_NUMBER);
+        DaJiaCrawlerRequestComponent.authenticate(loginBase.getUsername(), loginBase.getUsername(), DaJiaCrawlerRequestComponent.LOGINS_NUMBER);
     }
 
     @Override
     public QuoteResultsVo quote(QuoteVo quoteVo) {
         // 获取token的请求头
-        AttributionInformationVo attributionInformationVo = quoteVo.getAttributionInformationVo();
-        HttpHeaders headers = daJiaRequestComponent.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
+        AttributionInformationVo attributionInformationVo = quoteVo.getOrder().getAttributionInformationVo();
+        HttpHeaders headers = DaJiaCrawlerRequestComponent.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
         // 配置信息
         DaJiaCrawlerConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(DaJiaCrawlerConfigureParameters.class, attributionInformationVo.getConfigInfo());
 
         // 车型查询
-        DaJiaCrawlerCarRequest daJiaCrawlerCarRequest = QuotationProcessConstruction.daJiaCrawlerCarRequestBuilder(quoteVo.getCarInfoVo());
-        List<DaJiaCrawlerCarResponse.ListDTO> car = daJiaRequestComponent.car(daJiaCrawlerCarRequest, headers);
+        DaJiaCrawlerCarRequest daJiaCrawlerCarRequest = DaJiaQuotationProcessConstruction.daJiaCrawlerCarRequestBuilder(quoteVo.getCarInfoVo());
+        List<DaJiaCrawlerCarResponse.ListDTO> car = DaJiaCrawlerRequestComponent.car(daJiaCrawlerCarRequest, headers);
         // 获取相同的车型
         DaJiaCrawlerCarResponse.ListDTO listDTO = car.get(0);
 
         // 计算折旧价格
         DaJiaCrawlerActualValueRequest daJiaCrawlerActualValueRequest = new DaJiaCrawlerActualValueRequest();
-        String actualValue = daJiaRequestComponent.actualValue(daJiaCrawlerActualValueRequest, headers);
+        String actualValue = DaJiaCrawlerRequestComponent.actualValue(daJiaCrawlerActualValueRequest, headers);
 
         // 保费计算
         DaJiaCrawlerPriceRequest daJiaCrawlerPriceRequest = new DaJiaCrawlerPriceRequest();
-        DaJiaCrawlerPriceResponse crawlerPriceResponse = daJiaRequestComponent.price(daJiaCrawlerPriceRequest, headers);
+        DaJiaCrawlerPriceResponse crawlerPriceResponse = DaJiaCrawlerRequestComponent.price(daJiaCrawlerPriceRequest, headers);
 
         // 订单保存
         DaJiaCrawlerSaveRequest daJiaCrawlerSaveRequest = new DaJiaCrawlerSaveRequest(crawlerPriceResponse, "");
-        DaJiaCrawlerSaveResponse daJiaCrawlerSaveResponse = daJiaRequestComponent.save(daJiaCrawlerSaveRequest, headers);
+        DaJiaCrawlerSaveResponse daJiaCrawlerSaveResponse = DaJiaCrawlerRequestComponent.save(daJiaCrawlerSaveRequest, headers);
 
         // 返回报价信息
         return new DaJiaCrawlerQuoteResultsConverter().toQuoteResultsVo(crawlerPriceResponse);
     }
 
+    @Override
+    public void underwriting(String subOrder) {
+
+    }
+
+    @Override
+    public String getPaymentLink(String subOrder) {
+        return "";
+    }
+
+    @Override
+    public void uploadImage(String subOrder) {
+
+    }
+
+    @Override
+    public void downloadPolicy(String subOrder) {
+
+    }
 
 }

+ 37 - 3
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsuranceCompanyRequestServiceImpl.java

@@ -1,7 +1,10 @@
 package com.jzg.quotation.summary.service.impl;
 
+import com.jzg.commons.exception.SystemException;
+import com.jzg.quotation.commons.constant.enums.base.ApiType;
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+import com.jzg.quotation.commons.entity.vo.base.OrderBase;
 import com.jzg.quotation.commons.entity.vo.quote.CarInfoVo;
 import com.jzg.quotation.commons.entity.vo.quote.KindInfoVo;
 import com.jzg.quotation.commons.service.QuotationApiBaseService;
@@ -30,11 +33,32 @@ public class InsuranceCompanyRequestServiceImpl implements InsuranceCompanyReque
 
     private final Map<String, QuotationCrawlerBaseService> quotationCrawlerBaseServiceMap;
 
+    public static String extractEnglishChars(String input) {
+        // 使用正则表达式匹配字符串开头的英文字符部分
+        String regex = "^[A-Z]+";
+        return input.matches(regex) ? input : input.replaceAll("(?i).*?([A-Z]+).*", "$1");
+    }
+
+    public static void main(String[] args) {
+        String ssss1213SS = extractEnglishChars("SSSS1213SS");
+        String ss120000 = extractEnglishChars("SS120000");
+        String poi789456141 = extractEnglishChars("POI789456141");
+        String poi789456123 = extractEnglishChars("POI789456123");
+        System.out.println(ssss1213SS);
+        System.out.println(ss120000);
+        System.out.println(poi789456141);
+        System.out.println(poi789456123);
+
+    }
+
+
     @Override
     public QuoteResultsVo quote(QuoteVo quoteVo) {
         CarInfoVo carInfoVo = quoteVo.getCarInfoVo();
-        String insuranceCompanyCode = quoteVo.getInsuranceCompanyCode();
-        Map<String, QuoteKindMapping> quoteKindMappingMap = quoteKindMappingService.getByGroupCode(insuranceCompanyCode, "");
+        OrderBase order = quoteVo.getOrder();
+        String insuranceCompanyCode = order.getInsuranceCompanyCode();
+        String insuranceCode = extractEnglishChars(insuranceCompanyCode);
+        Map<String, QuoteKindMapping> quoteKindMappingMap = quoteKindMappingService.getByGroupCode(insuranceCode, "");
         // 替换保险公司的险种代码
         List<KindInfoVo> kindInfoVo = quoteVo.getKindInfoVo();
         kindInfoVo.forEach(kind -> {
@@ -43,7 +67,17 @@ public class InsuranceCompanyRequestServiceImpl implements InsuranceCompanyReque
             kind.setKindName(quoteKindMapping.getInsurance());
         });
 
-        return null;
+        if(ApiType.API_1.getCode() == order.getApiType()){
+            return quoteApiBaseServiceMap.get(insuranceCode).quote(quoteVo);
+        } else if (ApiType.API_2.getCode() == order.getApiType()) {
+            return quotationCrawlerBaseServiceMap.get(insuranceCode).quote(quoteVo);
+        }
+
+        throw new SystemException("");
     }
 
+
+
+
+
 }

+ 21 - 1
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quote/zhongmei/api/service/impl/ZhongMeiApiRequestImpl.java

@@ -1,13 +1,14 @@
 package com.jzg.quote.zhongmei.api.service.impl;
 
 
+import com.jzg.quotation.commons.constant.InsuranceCode;
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
 import com.jzg.quote.zhongmei.api.service.ZhongMeiApiRequest;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
-@Service("123")
+@Service(value = InsuranceCode.INSURANCE_ZMBX)
 @RequiredArgsConstructor
 public class ZhongMeiApiRequestImpl implements ZhongMeiApiRequest {
 
@@ -16,4 +17,23 @@ public class ZhongMeiApiRequestImpl implements ZhongMeiApiRequest {
         return null;
     }
 
+    @Override
+    public void underwriting(String subOrder) {
+
+    }
+
+    @Override
+    public String getPaymentLink(String subOrder) {
+        return "";
+    }
+
+    @Override
+    public void uploadImage(String subOrder) {
+
+    }
+
+    @Override
+    public void downloadPolicy(String subOrder) {
+
+    }
 }

+ 28 - 0
tenant/insurance/quotation-zijin/pom.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.jzg</groupId>
+        <artifactId>insurance</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>quotation-zijin</artifactId>
+
+    <properties>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>com.jzg</groupId>
+            <artifactId>quotation-commons</artifactId>
+            <version>1.0-SNAPSHOT</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+
+</project>

+ 316 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/component/ZiJinApiRequestComponent.java

@@ -0,0 +1,316 @@
+package com.jzg.quotation.zijin.api.component;
+
+import com.jzg.commons.exception.SystemException;
+import com.jzg.quotation.commons.component.RequestComponent;
+import com.jzg.quotation.zijin.api.constant.enums.RequestUrl;
+import com.jzg.quotation.zijin.api.entity.ZiJinApiConfigureParameters;
+import com.jzg.quotation.zijin.api.properties.ZiJinApiProperties;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.redisson.api.RLock;
+import org.redisson.api.RMap;
+import org.redisson.api.RedissonClient;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import com.jzg.quotation.zijin.api.entity.request.*;
+import com.jzg.quotation.zijin.api.entity.response.*;
+
+import java.time.Duration;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class ZiJinApiRequestComponent {
+
+    private static final String AUTHORIZATION = "Authorization";
+
+    private static final String ZKI_API_AUTHORIZATION = "ZKIApiAuthorization";
+
+    private static final String USER_ID = "28317480921155536850";
+
+    private final RedissonClient redissonClient;
+
+    private final RequestComponent requestComponent;
+
+    private final ZiJinApiConfigureParameters ziJinApiConfigureParameters;
+
+    private final ZiJinApiProperties ziJinApiProperties;
+
+
+    public <T, B extends BaseResponse> B requestUrl(String url, T requestBody, Class<B> responseType, HttpHeaders httpHeaders) {
+        ResponseEntity<B> bResponseEntity = requestComponent.objectPost(url, requestBody, responseType, httpHeaders);
+        return bResponseEntity.getBody();
+    }
+
+    public <T, B extends BaseResponse> B requestRequestUrl(RequestUrl requestUrl, T requestBody, Class<B> responseType, HttpHeaders httpHeaders) {
+//        HttpStatusCode statusCode = bResponseEntity.getStatusCode();
+        return requestUrl(requestUrl.getRequestUrl(ziJinApiProperties.getUrl()), requestBody, responseType, httpHeaders);
+    }
+
+
+    /**
+     * 获取 接入方 token 车险业务token
+     *
+     * @param ziJinApiConfigureParameters 紫金api配置
+     * @param httpHeaders                 请求头
+     * @return HttpHeaders
+     */
+    private HttpHeaders getToken(ZiJinApiConfigureParameters ziJinApiConfigureParameters, HttpHeaders httpHeaders) {
+        // 1 为接入方提供获取token服务
+        GetAccessTokenRequest getAccessTokenRequest = new GetAccessTokenRequest(ziJinApiConfigureParameters.getAppKey(),
+                ziJinApiConfigureParameters.getAppSecret());
+        GetAccessTokenResponse accessToken = getAccessToken(getAccessTokenRequest);
+        httpHeaders.set(AUTHORIZATION, accessToken.getToken());
+        // 2 车险业务获取token服务
+        QueryTokenRequest queryTokenRequest = new QueryTokenRequest(ziJinApiConfigureParameters.getOrderOrigin(), USER_ID);
+        QueryTokenResponse queryTokenResponse = queryToken(queryTokenRequest, httpHeaders);
+        httpHeaders.set(ZKI_API_AUTHORIZATION, queryTokenResponse.getToken());
+        // 3. 将请求的token放入redis
+        Map<String, String> map = new HashMap<>();
+        map.put(AUTHORIZATION, accessToken.getToken());
+        map.put(ZKI_API_AUTHORIZATION, queryTokenResponse.getToken());
+        // 3.1 存入redis中
+        RMap<Object, Object> rMap = redissonClient.getMap("zj:accessToken:" + ziJinApiConfigureParameters.getAppKey());
+        rMap.putAll(map);
+        rMap.expire(Duration.ofHours(10));
+        return httpHeaders;
+    }
+
+    /**
+     * 配置方式获取请求头
+     *
+     * @param ziJinApiConfigureParameters 配置参数
+     * @return HttpHeaders
+     */
+    public HttpHeaders getHttpHeaders(ZiJinApiConfigureParameters ziJinApiConfigureParameters, int number) {
+        if (number <= 0) {
+            throw new SystemException("接口请求异常,请重试!");
+        }
+        number--;
+        HttpHeaders httpHeaders = new HttpHeaders();
+        String authorization = (String) redissonClient.getMap(ZKI_API_AUTHORIZATION).get(AUTHORIZATION);
+        String zKIApiAuthorization = (String) redissonClient.getMap(ZKI_API_AUTHORIZATION).get(ZKI_API_AUTHORIZATION);
+        // 缓存中不存在就去请求token
+        if (!ObjectUtils.isEmpty(authorization) && !ObjectUtils.isEmpty(zKIApiAuthorization)) {
+            System.out.printf("---------------\n--------------\n---------------\n--------------\n---------------\n--------------\n---------------\n--------------\n---------------\n--------------\n");
+            System.out.printf("authorization:" + authorization);
+            System.out.printf("zKIApiAuthorization:" + zKIApiAuthorization);
+            System.out.printf("---------------\n--------------\n---------------\n--------------\n---------------\n--------------\n---------------\n--------------\n---------------\n--------------\n");
+            httpHeaders.set(AUTHORIZATION, authorization);
+            httpHeaders.set(ZKI_API_AUTHORIZATION, zKIApiAuthorization);
+            return httpHeaders;
+        }
+        // 使用分布式锁 只有一个人可以访问登录
+        RLock lock = redissonClient.getLock("11111111111111");
+        try {
+            boolean isLock = lock.tryLock(1, 10000, TimeUnit.MILLISECONDS);
+            if (isLock) {
+                try {
+                    return this.getToken(ziJinApiConfigureParameters, httpHeaders);
+                } finally {
+                    lock.unlock();
+                }
+            }
+
+        } catch (InterruptedException e) {
+            log.debug(e.getMessage());
+            lock.unlock();
+            Thread.currentThread().interrupt();
+            throw new SystemException(e.getMessage());
+        }
+
+        // 睡眠一段时间 自调用 重新获取缓存中的 header
+        try {
+            Thread.sleep(280);
+        } catch (InterruptedException e) {
+            log.debug(e.getMessage());
+            Thread.currentThread().interrupt();
+            throw new SystemException("接口请求异常,请重试!");
+        }
+
+        return getHttpHeaders(ziJinApiConfigureParameters, number);
+
+    }
+
+    /**
+     * 协议id获取请求头
+     *
+     * @param ziJinApiConfigureParameters 协议配置
+     * @return HttpHeaders
+     */
+    public HttpHeaders getHttpHeaders(ZiJinApiConfigureParameters ziJinApiConfigureParameters) {
+        return getHttpHeaders(ziJinApiConfigureParameters, 3);
+    }
+
+    /**
+     * 为接入方提供获取token服务
+     *
+     * @param getAccessTokenRequest 紫金财险 为接入方提供获取token服务 入参实体
+     * @return 出参实体
+     */
+    public GetAccessTokenResponse getAccessToken(GetAccessTokenRequest getAccessTokenRequest) {
+        String url = ziJinApiProperties.getAccessTokenUrl();
+        return requestUrl(url, getAccessTokenRequest, GetAccessTokenResponse.class, new HttpHeaders());
+    }
+
+    /**
+     * 车险业务获取token服务
+     *
+     * @param queryTokenRequest 紫金财险 车险业务获取token服务 入参实体
+     * @return 出参实体
+     */
+    public QueryTokenResponse queryToken(QueryTokenRequest queryTokenRequest, HttpHeaders httpHeaders) {
+        return requestRequestUrl(RequestUrl.QUERY_TOKEN, queryTokenRequest, QueryTokenResponse.class, httpHeaders);
+    }
+
+    /**
+     * 车型查询
+     *
+     * @param modelQueryRequest 紫金财险 车型查询 入参实体
+     * @return 出参实体
+     */
+    public ModelQueryResponse modelQuery(ModelQueryRequest modelQueryRequest, HttpHeaders httpHeaders) {
+        return requestRequestUrl(RequestUrl.MODELS_QUERY, modelQueryRequest, ModelQueryResponse.class, httpHeaders);
+    }
+
+    /**
+     * 获取车辆实际价值
+     *
+     * @param queryActualValueRequest 紫金财险 获取车辆实际价值 入参实体
+     * @return 出参实体
+     */
+    public QueryActualValueResponse queryActualValue(QueryActualValueRequest queryActualValueRequest, HttpHeaders httpHeaders) {
+        return requestRequestUrl(RequestUrl.QUERY_ACTUAL_VALUE, queryActualValueRequest, QueryActualValueResponse.class, httpHeaders);
+    }
+
+    /**
+     * 查询“车+意”中意外险方案信息
+     *
+     * @param queryVehicProductsRequest 紫金财险 查询“车+意”中意外险方案信息(非摩托车险)入参实体
+     * @return 出参实体
+     */
+    public QueryVehicProductsResponse queryVehicleProducts(QueryVehicProductsRequest queryVehicProductsRequest, HttpHeaders httpHeaders) {
+        return requestRequestUrl(RequestUrl.QUERY_VEHIC_PRODUCTS, queryVehicProductsRequest, QueryVehicProductsResponse.class, httpHeaders);
+    }
+
+    /**
+     * 保费计算
+     *
+     * @param calculatePremiumRequest 紫金财险 保费计算 入参实体
+     * @return 出参实体
+     */
+    public CalculatePremiumResponse calculatePremium(CalculatePremiumRequest calculatePremiumRequest, HttpHeaders httpHeaders) {
+        return requestRequestUrl(RequestUrl.CALCULATE_PREMIUM, calculatePremiumRequest, CalculatePremiumResponse.class, httpHeaders);
+    }
+
+    /**
+     * 文件上传
+     *
+     * @param uploadFileRequest 紫金财险 文件上传 入参实体
+     * @return 出参实体
+     */
+    public UploadFileResponse uploadFile(UploadFileRequest uploadFileRequest, HttpHeaders httpHeaders) {
+        return requestRequestUrl(RequestUrl.UPLOAD_FILE, uploadFileRequest, UploadFileResponse.class, httpHeaders);
+    }
+
+    /**
+     * 文件信息与订单关联
+     *
+     * @param uploadImageInfoListRequest 紫金财险 文件信息与订单关联 入参实体
+     * @return 出参实体
+     */
+    public BaseResponse uploadImageInfoList(UploadImageInfoListRequest uploadImageInfoListRequest, HttpHeaders httpHeaders) {
+        return requestRequestUrl(RequestUrl.UPLOAD_IMAGE_INFO_LIST, uploadImageInfoListRequest, BaseResponse.class, httpHeaders);
+    }
+
+    /**
+     * 对接三方渠道验车链接接口
+     *
+     * @param sendCheckCarLinkRequest 紫金财险 对接三方渠道验车链接接口 入参实体
+     * @return 出参实体
+     */
+    public void sendCheckCarLink(SendCheckCarLinkRequest sendCheckCarLinkRequest, HttpHeaders httpHeaders) {
+        requestUrl(ziJinApiProperties.getSendCheckCarLink(), sendCheckCarLinkRequest, BaseResponse.class, httpHeaders);
+    }
+
+    /**
+     * 特约查询
+     *
+     * @param queryClauseDataRequest 紫金财险 特约查询 入参实体
+     * @return 出参实体
+     */
+    public QueryClauseDataResponse queryClauseData(QueryClauseDataRequest queryClauseDataRequest, HttpHeaders httpHeaders) {
+        return requestRequestUrl(RequestUrl.QUERY_CLAUSE_DATA, queryClauseDataRequest, QueryClauseDataResponse.class, httpHeaders);
+    }
+
+    /**
+     * 提交核保
+     *
+     * @param submitVerifyRequest 紫金财险 提交核保 入参实体
+     * @return 出参实体
+     */
+    public SubmitVerifyResponse submitVerify(SubmitVerifyRequest submitVerifyRequest, HttpHeaders httpHeaders) {
+        return requestRequestUrl(RequestUrl.SUBMIT_VERIFY, submitVerifyRequest, SubmitVerifyResponse.class, httpHeaders);
+    }
+
+    /**
+     * 聚合支付服务
+     *
+     * @param zbfAggregatePayRequest 紫金财险 聚合支付服务 入参实体
+     * @return 出参实体
+     */
+    public ZbfAggregatePayResponse zbfAggregatePay(ZbfAggregatePayRequest zbfAggregatePayRequest, HttpHeaders httpHeaders) {
+        return requestUrl(ziJinApiProperties.getPayUrl(), zbfAggregatePayRequest, ZbfAggregatePayResponse.class, httpHeaders);
+    }
+
+    /**
+     * 新支付
+     *
+     * @param newPayRequest 紫金财险 新支付 入参实体
+     * @return 出参实体
+     */
+    public NewPayRequestResponse newPay(NewPayRequest newPayRequest, HttpHeaders httpHeaders) {
+        return requestUrl(ziJinApiProperties.getNewPayUrl(), newPayRequest, NewPayRequestResponse.class, httpHeaders);
+    }
+
+
+    /**
+     * 订单详情查询服务
+     *
+     * @param orderId 紫金财险 订单详情查询服务 入参实体
+     * @return 出参实体
+     */
+    public QueryOrderDetailResponse getOrderDetail(String orderId, HttpHeaders httpHeaders) {
+        String url = ziJinApiProperties.getOrderUrl() + "?orderId=" + orderId;
+        return requestUrl(url, null, QueryOrderDetailResponse.class, httpHeaders);
+    }
+
+    /**
+     * 未缴费保单撤单
+     *
+     * @param orderNoRequest 紫金财险 未缴费保单撤单 入参实体
+     */
+    public void cancel(OrderNoRequest orderNoRequest, HttpHeaders httpHeaders) {
+        requestRequestUrl(RequestUrl.CANCEL, orderNoRequest, BaseResponse.class, httpHeaders);
+    }
+
+    /**
+     * 生成电子保单下载
+     *
+     * @param busNo      保单号
+     * @param busType    证件号
+     * @param identifyNo 单证类型 1-交强险,2-保险标志,3-商业险,4-非车险,5-批单
+     * @return 电子保单连接
+     */
+    public String getDownLoadDocumentUrl(String busNo, String busType, String identifyNo) {
+        String parameter = String.format("?busNo=%s&busType=%s&identifyNo=%s", busNo, busType, identifyNo);
+        String downLoadDocument = ziJinApiProperties.getDownLoadDocument();
+        return downLoadDocument + parameter;
+    }
+
+}

+ 47 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/constant/enums/RequestUrl.java

@@ -0,0 +1,47 @@
+package com.jzg.quotation.zijin.api.constant.enums;
+
+
+import com.jzg.quotation.commons.standard.CrawlerRequestUrlStandard;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @description: 紫金财险 请求接口
+ * @author: wenks
+ * @date: 2025/2/21 11:35
+ **/
+@AllArgsConstructor
+public enum RequestUrl implements CrawlerRequestUrlStandard {
+
+    QUERY_TOKEN("queryToken", "车险业务获取token服务"),
+    MODELS_QUERY("modelQuery", "车型查询"),
+    QUERY_ACTUAL_VALUE("queryActualValue", "获取车辆实际价值"),
+    CALCULATE_PREMIUM("calculatePremium", "保费计算"),
+    QUERY_CLAUSE_DATA("queryClauseData", "特约查询"),
+    SUBMIT_VERIFY("submitVerify", "提交核保"),
+    QUERY_ORDER_DETAIL("queryOrderDetail", "订单状态查询"),
+    UPLOAD_FILE("uploadFile", "文件上传"),
+    UPLOAD_IMAGE_INFO_LIST("uploadImageInfoList", "文件信息与订单关联"),
+    ZBF_AGGREGATE_PAY("zbfAggregatePay", "聚合支付服务"),
+    NEW_PAY("newPay", "新支付"),
+    GET_ORDER_DETAIL("getOrderDetail", "订单详情查询服务"),
+    CANCEL("cancel", "未缴费保单撤单"),
+    QUERY_VEHIC_PRODUCTS("queryVehicProducts", "查询“车+意”中意外险方案信息(非摩托车险)"),
+    DOWN_LOAD_DOCUMENT("downLoadDocument", "第三方电子保单下载接口"),
+    SEND_CHECK_CAR_LINK("sendCheckCarLink", "第三方电子保单下载接口");
+
+    private final String uri;
+
+    private final String description;
+
+    @Override
+    public String getRequestDescription() {
+        return description;
+    }
+
+    @Override
+    public String uri() {
+        return uri;
+    }
+
+}

+ 41 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/converter/ZiJinQuotationConstruction.java

@@ -0,0 +1,41 @@
+package com.jzg.quotation.zijin.api.converter;
+
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+import com.jzg.quotation.zijin.api.entity.ZiJinApiConfigureParameters;
+import com.jzg.quotation.zijin.api.entity.request.CalculatePremiumRequest;
+
+import java.util.ArrayList;
+
+
+/**
+ * @version
+ * @description: 紫金财险 报价实体转换类
+ * @author: wenks
+ * @date: 2025/2/24 8:40
+ **/
+public class ZiJinQuotationConstruction {
+
+    public static CalculatePremiumRequest buildCalculatePremiumRequest(String orderId, String orderNo, ZiJinApiConfigureParameters parameters, QuoteVo quoteVo) {
+        CalculatePremiumRequest calculatePremiumRequest = new CalculatePremiumRequest();
+        calculatePremiumRequest.setOrderId(orderId);
+        calculatePremiumRequest.setOrderNo(orderNo);
+        calculatePremiumRequest.setOrderOrigin(parameters.getAppKey());
+        calculatePremiumRequest.setProposalAreaCode(parameters.getProposalAreaCode());
+        calculatePremiumRequest.setProposalCityCode(parameters.getProposalCityCode());
+
+        calculatePremiumRequest.setBaseInfo(new CalculatePremiumRequest.BaseInfoDTO());
+        calculatePremiumRequest.setCarOwnerInfo(new CalculatePremiumRequest.CarOwnerInfoDTO());
+        calculatePremiumRequest.setInsuredList(new ArrayList<>());
+        calculatePremiumRequest.setItemKindList(new ArrayList<>());
+        calculatePremiumRequest.setProfitDataList(new ArrayList<>());
+        calculatePremiumRequest.setCarPolicySubInfoList(new ArrayList<>());
+        calculatePremiumRequest.setTaxRelifInfo(new CalculatePremiumRequest.TaxRelifInfoDTO());
+        calculatePremiumRequest.setVehicleInfo(new CalculatePremiumRequest.VehicleInfoDTO());
+
+        calculatePremiumRequest.setDemandNoCheckFlag("1");
+        return calculatePremiumRequest;
+    }
+
+
+
+}

+ 42 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/converter/ZiJinQuotationProcessConstruction.java

@@ -0,0 +1,42 @@
+package com.jzg.quotation.zijin.api.converter;
+
+import com.jzg.quotation.commons.entity.vo.quote.CarInfoVo;
+import com.jzg.quotation.zijin.api.entity.ZiJinApiConfigureParameters;
+import com.jzg.quotation.zijin.api.entity.request.ModelQueryRequest;
+import com.jzg.quotation.zijin.api.entity.request.QueryActualValueRequest;
+import com.jzg.quotation.zijin.api.entity.response.ModelQueryResponse;
+
+public class ZiJinQuotationProcessConstruction {
+
+    /**
+     * 构造车型查询实体
+     *
+     * @param parameters 紫金财险配置参数
+     * @param vinNo      车架号
+     * @param brandName  品牌型号
+     * @return 车型查询实体
+     */
+    public static ModelQueryRequest buildModelQueryRequest(ZiJinApiConfigureParameters parameters, String vinNo, String brandName) {
+        ModelQueryRequest modelQueryRequest = new ModelQueryRequest();
+        modelQueryRequest.setOrderOrigin(parameters.getAppKey());
+        modelQueryRequest.setProposalCityCode(parameters.getProposalCityCode());
+        modelQueryRequest.setProposalAreaCode(parameters.getProposalAreaCode());
+        modelQueryRequest.setVinNo(vinNo);
+        modelQueryRequest.setBrandName(brandName);
+        return modelQueryRequest;
+    }
+
+    public static QueryActualValueRequest buildQueryActualValueRequest(CarInfoVo carInfoVo, ModelQueryResponse.VehicleModelInfosDTO vehicleModelInfosDTO, String startDate) {
+        QueryActualValueRequest queryActualValueRequest = new QueryActualValueRequest();
+        queryActualValueRequest.setCarKindCode(carInfoVo.getCarKindCode());
+        // queryActualValueRequest.setCertificateDate("");
+        queryActualValueRequest.setEnrollDate(carInfoVo.getRegisterDate());
+        queryActualValueRequest.setPurchasePrice(vehicleModelInfosDTO.getPurchasePrice());
+        queryActualValueRequest.setSeatCount(carInfoVo.getSeatCount());
+        queryActualValueRequest.setStartDate(startDate);
+        queryActualValueRequest.setTonCount(carInfoVo.getTonCount());
+        queryActualValueRequest.setUseNatureCode(carInfoVo.getCarNatureCode());
+        return queryActualValueRequest;
+    }
+
+}

+ 45 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/ZiJinApiConfigureParameters.java

@@ -0,0 +1,45 @@
+package com.jzg.quotation.zijin.api.entity;
+
+
+import com.jzg.quotation.commons.standard.ConfigureParameters;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+public class ZiJinApiConfigureParameters implements ConfigureParameters {
+
+    @Serial
+    private static final long serialVersionUID = -6730698443230068559L;
+
+    /**
+     * 应用Key
+     */
+    private String appKey;
+
+    /**
+     * 应用Secret
+     */
+    private String appSecret;
+
+    /**
+     * 渠道来源
+     */
+    private String orderOrigin;
+
+    /**
+     * 投保地区省代码
+     */
+    private String proposalAreaCode;
+
+    /**
+     * 投保地区市代码
+     */
+    private String proposalCityCode;
+
+
+}

+ 915 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/CalculatePremiumRequest.java

@@ -0,0 +1,915 @@
+package com.jzg.quotation.zijin.api.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @description: 紫金财险 保费计算 入参实体
+ * @author: wenks
+ * @date: 2023/8/9 9:00
+ **/
+@NoArgsConstructor
+@Data
+public class CalculatePremiumRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1125540330363235262L;
+    /**
+     * 基本信息
+     */
+    @JsonProperty("baseInfo")
+    private BaseInfoDTO baseInfo;
+    /**
+     * 车主信息
+     */
+    @JsonProperty("carOwnerInfo")
+    private CarOwnerInfoDTO carOwnerInfo;
+    /**
+     * 投被保人信息
+     */
+    @JsonProperty("insuredList")
+    private List<InsuredListDTO> insuredList;
+    /**
+     * 险别信息
+     */
+    @JsonProperty("itemKindList")
+    private List<ItemKindListDTO> itemKindList;
+
+    /**
+     * 浮动因子信息
+     */
+    @JsonProperty("profitDataList")
+    private List<ProfitDataListDTO> profitDataList;
+
+    /**
+     * 意健险险种代码
+     */
+    @JsonProperty("carPolicySubInfoList")
+    private List<CarPolicySubInfoListDTO> carPolicySubInfoList;
+
+    /**
+     * 订单ID
+     */
+    @JsonProperty("orderId")
+    private String orderId;
+    /**
+     * 订单号
+     */
+    @JsonProperty("orderNo")
+    private String orderNo;
+    /**
+     * 订单来源/渠道代码
+     */
+    @JsonProperty("orderOrigin")
+    private String orderOrigin;
+    /**
+     * 投保地区省代码
+     */
+    @JsonProperty("proposalAreaCode")
+    private String proposalAreaCode;
+    /**
+     * 投保地区市代码
+     */
+    @JsonProperty("proposalCityCode")
+    private String proposalCityCode;
+    /**
+     * 车船税信息
+     */
+    @JsonProperty("taxRelifInfo")
+    private TaxRelifInfoDTO taxRelifInfo;
+    /**
+     * 车辆信息
+     */
+    @JsonProperty("vehicleInfo")
+    private VehicleInfoDTO vehicleInfo;
+
+    /**
+     * 是否重新生成投保查询码
+     */
+    @JsonProperty("demandNoCheckFlag")
+    private String demandNoCheckFlag = "1";
+
+    /**
+     * 基本信息
+     */
+    @NoArgsConstructor
+    @Data
+    public static class BaseInfoDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = -1913236191334012218L;
+
+        /**
+         * 商业险转保校验码
+         * 转保业务第二次交互时必传(商业险)
+         */
+        @JsonProperty("answer")
+        private String answer;
+
+        /**
+         * 交强险转保校验码
+         * 转保业务第二次交互时必传(交强险)
+         */
+        @JsonProperty("answerCI")
+        private String answerCI;
+
+        /**
+         * 商业险转保校验码
+         * 如果是转保业务,第二次交互时必传。取返回图片校验码那次的demandNo(商业险)
+         */
+        @JsonProperty("demandNo")
+        private String demandNo;
+
+        /**
+         * 交强险转保校验码
+         * 如果是转保业务,第二次交互时必传。取返回图片校验码那次的demandNoCI(交强险)
+         */
+        @JsonProperty("demandNoCI")
+        private String demandNoCI;
+
+        /**
+         * 关联单标识(0关联单;1单商业;2单交强)
+         */
+        @JsonProperty("calculateFlag")
+        private String calculateFlag;
+        /**
+         * 商业险终保时间
+         */
+        @JsonProperty("endDate")
+        private String endDate;
+        /**
+         * 交强险终保时间
+         */
+        @JsonProperty("endDateCI")
+        private String endDateCI;
+        /**
+         * 商业险终保小时
+         */
+        @JsonProperty("endHour")
+        private String endHour;
+        /**
+         * 交强险终保小时
+         */
+        @JsonProperty("endHourCI")
+        private String endHourCI;
+        /**
+         * 商业险终保分钟
+         */
+        @JsonProperty("endMinute")
+        private String endMinute;
+        /**
+         * 交强险终保分钟
+         */
+        @JsonProperty("endMinuteCI")
+        private String endMinuteCI;
+        /**
+         * 商业险起保时间
+         */
+        @JsonProperty("startDate")
+        private String startDate;
+        /**
+         * 交强险起保时间
+         */
+        @JsonProperty("startDateCI")
+        private String startDateCI;
+        /**
+         * 商业险起保小时
+         */
+        @JsonProperty("startHour")
+        private String startHour;
+        /**
+         * 交强险起保小时
+         */
+        @JsonProperty("startHourCI")
+        private String startHourCI;
+        /**
+         * 商业险起保分钟
+         */
+        @JsonProperty("startMinute")
+        private String startMinute;
+        /**
+         * 交强险起保分钟
+         */
+        @JsonProperty("startMinuteCI")
+        private String startMinuteCI;
+
+    }
+
+    /**
+     * 车主信息
+     */
+    @NoArgsConstructor
+    @Data
+    public static class CarOwnerInfoDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = -8965327536734916799L;
+        /**
+         * 车主姓名
+         */
+        @JsonProperty("carOwner")
+        private String carOwner;
+        /**
+         * 车主手机号
+         */
+        @JsonProperty("mobile")
+        private String mobile;
+        /**
+         * 车主地址
+         */
+        @JsonProperty("ownerAddress")
+        private String ownerAddress;
+        /**
+         * 车主证件号码
+         */
+        @JsonProperty("ownerIdentifyNumber")
+        private String ownerIdentifyNumber;
+        /**
+         * 车主证件类型
+         * 11	工商注册号码
+         * 99	其他
+         * 01	居民身份证
+         * 02	护照
+         * 03	军人证
+         * 10	组织机构代码
+         */
+        @JsonProperty("ownerIdentifyType")
+        private String ownerIdentifyType;
+        /**
+         * 车主性质 1-个人 2-机关 3-企业
+         */
+        @JsonProperty("vehicleOwnerNature")
+        private String vehicleOwnerNature;
+
+    }
+
+    /**
+     * 车船税信息
+     */
+    @NoArgsConstructor
+    @Data
+    public static class TaxRelifInfoDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 3760117003983918836L;
+
+        /**
+         * 减免税凭证号 减免税时必传
+         */
+        @JsonProperty("extendChar2")
+        private String extendChar2;
+
+        /**
+         * 减免税方案代码 减免税时必传 (P 比例减免;E 免税)
+         */
+        @JsonProperty("freeRateText")
+        private String freeRateText;
+        /**
+         * 减免比例  减免税时必传
+         */
+        @JsonProperty("taxRelief")
+        private String taxRelief;
+        /**
+         * 减免税原因代码  减免税时必传
+         */
+        @JsonProperty("relifReason")
+        private String relifReason;
+        /**
+         * 开具税务机关代码 减免完税时必传
+         */
+        @JsonProperty("taxComCode")
+        private String taxComCode;
+        /**
+         * 开具凭证的税务机关名称 减免完税时必传
+         */
+        @JsonProperty("taxComName")
+        private String taxComName;
+        /**
+         * 完税凭证填发日期 完税时必传
+         */
+        @JsonProperty("taxDocumentDate")
+        private String taxDocumentDate;
+        /**
+         * 开具完税凭证地区代码 完税时必传
+         */
+        @JsonProperty("taxPaidAreaCode")
+        private String taxPaidAreaCode;
+        /**
+         * 完税凭证号 完税时必传
+         */
+        @JsonProperty("paidFreeCertificate")
+        private String paidFreeCertificate;
+        /**
+         * 纳税人名称 完税时必传
+         */
+        @JsonProperty("taxpayerName")
+        private String taxpayerName;
+        /**
+         * 纳税人证件类型 完税时必传
+         */
+        @JsonProperty("taxpayerIdentifier")
+        private String taxpayerIdentifier;
+        /**
+         * 纳税人证件号码 完税时必传
+         */
+        @JsonProperty("identifyNumber")
+        private String identifyNumber;
+        /**
+         * 车船税标志
+         * 1-正常交税;
+         * 2-免税;
+         * 3-减税;
+         * 4-完税
+         */
+        @JsonProperty("taxRelifFlag")
+        private String taxRelifFlag;
+
+        @Getter
+        @AllArgsConstructor
+        public enum FreeRateText {
+
+            FRT_P("P", "比例减免"),
+            FRT_E("E", "免税");
+
+            // 编号
+            private final String code;
+            // 说明
+            private final String desc;
+
+        }
+
+    }
+
+    /**
+     * 车辆信息
+     */
+    @NoArgsConstructor
+    @Data
+    public static class VehicleInfoDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = -5247561590478281769L;
+        /**
+         * 车辆实际价值
+         */
+        @JsonProperty("actualValue")
+        private String actualValue;
+        /**
+         * 车辆实际价值
+         */
+        @JsonProperty("agreeActualValue")
+        private String agreeActualValue;
+        /**
+         * 是否过户车辆 1是0否
+         */
+        @JsonProperty("chgOwnerFlag")
+        private String chgOwnerFlag;
+        /**
+         * 发动机号
+         */
+        @JsonProperty("engineNo")
+        private String engineNo;
+        /**
+         * 车辆初始登记日期
+         */
+        @JsonProperty("enrollDate")
+        private String enrollDate;
+        /**
+         * 号牌底色
+         * 01	蓝
+         * 02	黑
+         * 03	白
+         * 04	黄
+         * 05	白蓝
+         * 06	渐变绿
+         * 07	黄绿双拼
+         * 99	其他
+         */
+        @JsonProperty("licenseColorCode")
+        private String licenseColorCode;
+        /**
+         * 号牌种类代码
+         */
+        @JsonProperty("licenseKindCode")
+        private String licenseKindCode;
+        /**
+         * 车牌号
+         */
+        @JsonProperty("licenseNo")
+        private String licenseNo;
+        /**
+         * 车型代码
+         */
+        @JsonProperty("modelCode")
+        private String modelCode;
+        /**
+         * 未上牌车辆标志
+         */
+        @JsonProperty("noLicenseFlag")
+        private String noLicenseFlag;
+        /**
+         * 新车购置价
+         */
+        @JsonProperty("purchasePrice")
+        private String purchasePrice;
+        /**
+         * 座位数
+         */
+        @JsonProperty("seatCount")
+        private String seatCount;
+        /**
+         * 车辆使用性质代码
+         * 84	非营业机关
+         * 85	家庭自用
+         * 83	非营业企业
+         * 9A	营业出租租赁
+         * 9B	营业城市公交
+         * 9C	营业公路客运
+         * 9D	营业货运
+         * 82	非营业货运
+         */
+        @JsonProperty("useNatureCode")
+        private String useNatureCode;
+        /**
+         * 车辆ID
+         */
+        @JsonProperty("vehicleId")
+        private String vehicleId;
+        /**
+         * 车架号/VIN码
+         */
+        @JsonProperty("vinNo")
+        private String vinNo;
+
+        /**
+         * 车辆品牌型号
+         */
+        @JsonProperty("brandName")
+        private String brandName;
+
+        /**
+         * 被保险人与车辆所有关系
+         * 1-所有 2-使用 3-管理
+         */
+        @JsonProperty("carInsuredRelation")
+        private String carInsuredRelation;
+
+        /**
+         * 车辆种类代码
+         */
+        @JsonProperty("carKindCode")
+        private String carKindCode;
+
+        /**
+         * 车种明细
+         */
+        @JsonProperty("carKindDetailId")
+        private String carKindDetailId;
+
+        /**
+         * 特殊车辆标志
+         */
+        @JsonProperty("carLoanFlag")
+        private String carLoanFlag;
+
+//        /**
+//         * 发票日期
+//         */
+//        @JsonProperty("certificateDate")
+//        private String certificateDate;
+
+        /**
+         * 整备质量/kg
+         */
+        @JsonProperty("completekerbmass")
+        private String completekerbmass;
+
+        /**
+         * 排量单位/毫升
+         */
+        @JsonProperty("exhaustCapacity")
+        private String exhaustCapacity;
+
+//        /**
+//         * 车辆类别
+//         */
+//        @JsonProperty("importFlag")
+//        private String importFlag;
+
+        /**
+         * 转移登记日期
+         */
+        @JsonProperty("makeDate")
+        private String makeDate;
+
+//        /**
+//         * 跨省首年投保未出险的证明年数
+//         */
+//        @JsonProperty("noDamageYears")
+//        private String noDamageYears;
+
+        /**
+         * 行驶证车辆类型代码
+         */
+        @JsonProperty("oriCarKindName")
+        private String oriCarKindName;
+        /**
+         * 车辆品牌
+         */
+
+        @JsonProperty("oriModelName")
+        private String oriModelName;
+
+        /**
+         * 行业车型编码
+         */
+        @JsonProperty("platVehicleCode")
+        private String platVehicleCode;
+
+        /**
+         * 吨位数/吨
+         * 车辆类型为货车时,必传
+         */
+        @JsonProperty("tonCount")
+        private String tonCount;
+
+//        /**
+//         * 0-非网约车 1-预约出租租赁 2-预约出租客运
+//         * 营业出租租赁时必填,其他情况不填
+//         */
+//        @JsonProperty("zlFlag")
+//        private String zlFlag;
+
+//
+//        /**
+//         * 纯电续航里程(公里)
+//         * 新能源车必传
+//         */
+//        @JsonProperty("pureRange")
+//        private String pureRange;
+
+        /**
+         * 精友能源种类
+         */
+        @JsonProperty("modelEnergyType")
+        private String modelEnergyType;
+
+//        /**
+//         * 能源种类
+//         * 新能源车必传 (1 纯电动)
+//         */
+//        @JsonProperty("fuelType")
+//        private String fuelType;
+
+//        /**
+//         * 是否4S店销,售广东(非深圳)新车必录
+//         */
+
+//        @JsonProperty("sale4SFlag")
+//        private String sale4SFlag;
+//
+//        /**
+//         * 新车销售公司所在地市代码,广东(非深圳)新车必录
+//         */
+//        @JsonProperty("saleAreaCode")
+//        private String saleAreaCode;
+
+//        /**
+//         * 新车销售公司名称,广东(非深圳)新车必录
+//         */
+//        @JsonProperty("saleCompany")
+//        private String saleCompany;
+
+        /**
+         * 打印使用性质类型(货车必传)
+         * 0003 货车
+         * 0004 危货
+         */
+        @JsonProperty("printUseNatureCode")
+        private String printUseNatureCode;
+//        /**
+//         * 车队协议号
+//         */
+//
+//        @JsonProperty("contractNo")
+//        private String contractNo;
+
+//        /**
+//         * 团车车辆编码
+//         */
+//        @JsonProperty("contractSerialNo")
+//        private String contractSerialNo;
+
+        /**
+         * 是否外地车标志
+         */
+        @JsonProperty("ecdemicVehicleFlag")
+        private String ecdemicVehicleFlag;
+
+        /**
+         * 打印车型
+         */
+        @JsonProperty("printModelName")
+        private String printModelName;
+
+        /**
+         * 功率(千瓦)
+         */
+        @JsonProperty("power")
+        private String power;
+        /**
+         * 原始新车购置价
+         */
+
+        @JsonProperty("oriPurchasePrice")
+        private String oriPurchasePrice;
+        /**
+         * 原始车辆型号
+         */
+
+        @JsonProperty("oriBrandName")
+        private String oriBrandName;
+        /**
+         * 车型唯一ID
+         */
+
+        @JsonProperty("vehicleStyleUniqueId")
+        private String vehicleStyleUniqueId;
+
+        /**
+         * 是否调用精友预填
+         */
+        @JsonProperty("isInvokeJingYou")
+        private String isInvokeJingYou;
+        /**
+         * 新能源车标志
+         */
+        @JsonProperty("newEnergyFlag")
+        private String newEnergyFlag;
+        /**
+         * 纯电续航里程(公里)
+         */
+        @JsonProperty("pureRange")
+        private String pureRange;
+        /**
+         * 能源种类
+         */
+        @JsonProperty("fuelType")
+        private String fuelType;
+
+        /**
+         * 交强险过户日期
+         */
+        @JsonProperty("makeDateJQ")
+        private String makeDateJQ;
+
+    }
+
+    /**
+     * 投被保人信息
+     */
+    @NoArgsConstructor
+    @Data
+    public static class InsuredListDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = -3707826282312519677L;
+        /**
+         * 职业
+         */
+        @JsonProperty("occupation")
+        private String occupation;
+        /**
+         * 地址
+         */
+        @JsonProperty("address")
+        private String address;
+        /**
+         * 证件号码
+         */
+        @JsonProperty("identifyNumber")
+        private String identifyNumber;
+        /**
+         * 证件类型
+         */
+        @JsonProperty("identifyType")
+        private String identifyType;
+        /**
+         * 关系人标志 1被保险人 /2投保人
+         */
+        @JsonProperty("insuredFlag")
+        private String insuredFlag;
+        /**
+         * 客户中文名称
+         */
+        @JsonProperty("insuredName")
+        private String insuredName;
+        /**
+         * 客户性质 3 自然人/4 法人
+         */
+        @JsonProperty("insuredNature")
+        private String insuredNature;
+        /**
+         * 客户类型 1个人/ 2单位
+         */
+        @JsonProperty("insuredType")
+        private String insuredType;
+        /**
+         * 长久居住地
+         */
+        @JsonProperty("longAddress")
+        private String longAddress;
+        /**
+         * 手机
+         */
+        @JsonProperty("mobile")
+        private String mobile;
+        /**
+         * 客户性别 1-男性;2-女性;9-未说明
+         */
+        @JsonProperty("sex")
+        private String sex;
+        /**
+         * 证件有效期止期
+         */
+        @JsonProperty("validDate")
+        private String validDate;
+
+        /**
+         * 授权人姓名 说明:投保人为法人时必传
+         */
+        @JsonProperty("certigierName")
+        private String certigierName;
+
+        /**
+         * 授权人证件类型	说明:投保人为法人时必传;
+         */
+        @JsonProperty("certigierType")
+        private String certigierType;
+
+        /**
+         * 授权人证件号码	说明:投保人为法人时必传;
+         */
+        @JsonProperty("certigierNumber")
+        private String certigierNumber;
+
+        /**
+         * 授权人证件号码有效期	说明:投保人为法人时必传;
+         */
+        @JsonProperty("certigierNumValidDate")
+        private String certigierNumValidDate;
+
+        /**
+         * 负责人姓名	说明:投保人为法人时必传;
+         */
+        @JsonProperty("chiefName")
+        private String chiefName;
+
+        /**
+         * 负责人证件类型	说明:投保人为法人时必传;
+         */
+        @JsonProperty("chiefType")
+        private String chiefType;
+
+        /**
+         * 负责人证件号码	说明:投保人为法人时必传;
+         */
+        @JsonProperty("chiefNumber")
+        private String chiefNumber;
+
+        /**
+         * 负责人证件号码有效期	说明:投保人为法人时必传;
+         */
+        @JsonProperty("chiefNumValidDate")
+        private String chiefNumValidDate;
+
+        /**
+         * 民族
+         */
+        @JsonProperty("nation")
+        private String nation;
+
+        /**
+         * 客户性质为单位时,单位性质必传
+         */
+        @JsonProperty("businessSort")
+        private String businessSort;
+
+    }
+
+    /**
+     * 险别信息
+     */
+    @NoArgsConstructor
+    @Data
+    public static class ItemKindListDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 4902982173042827018L;
+        /**
+         * 险别代码
+         */
+        @JsonProperty("kindCode")
+        private String kindCode;
+        /**
+         * 险别名称
+         */
+        @JsonProperty("kindName")
+        private String kindName;
+        /**
+         * 险种代码
+         */
+        @JsonProperty("riskCode")
+        private String riskCode;
+        /**
+         * 保额
+         */
+        @JsonProperty("amount")
+        private String amount;
+
+        /**
+         * 座位数/天数
+         */
+        @JsonProperty("quantity")
+        private String quantity;
+
+        /**
+         * 每座保额/日赔偿金
+         */
+        @JsonProperty("unitAmount")
+        private String unitAmount;
+
+        /**
+         * 免赔率 绝对免赔率险必录 5,10,15,20(单位%)
+         */
+        @JsonProperty("deductibleRate")
+        private String deductibleRate;
+
+        /**
+         * 服务次数
+         */
+        @JsonProperty("serviceTimes")
+        private String serviceTimes;
+
+    }
+
+    /**
+     * 浮动因子信息
+     */
+    @NoArgsConstructor
+    @Data
+    public static class ProfitDataListDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 7236883928075142401L;
+
+        /**
+         * 费率因子代码 C31(自主定价系数)C32(传1,兼容非费改)
+         */
+        @JsonProperty("profitCode")
+        private String profitCode;
+
+        /**
+         * 费率因子值
+         */
+        @JsonProperty("profitRate")
+        private String profitRate;
+
+    }
+
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @Data
+    public static class CarPolicySubInfoListDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 7726772202596894005L;
+
+        @JsonProperty("riskCode")
+        private String riskCode;
+
+        @JsonProperty("riskName")
+        private String riskName;
+
+        @JsonProperty("insureGradeNo")
+        private String insureGradeNo;
+
+        @JsonProperty("quantity")
+        private String quantity;
+
+        @JsonProperty("sumAmount")
+        private String sumAmount;
+
+        @JsonProperty("sumPremium")
+        private String sumPremium;
+
+    }
+
+}

+ 48 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/GetAccessTokenRequest.java

@@ -0,0 +1,48 @@
+package com.jzg.quotation.zijin.api.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+
+/**
+ * @description: 紫金财险 为接入方提供获取token服务 入参实体
+ * @author: wenks
+ * @date: 2023/8/19 9:28
+ **/
+@NoArgsConstructor
+@Data
+public class GetAccessTokenRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 5464200307952281355L;
+
+    /**
+     * 应用Key
+     */
+    @JsonProperty("appKey")
+    private String appKey;
+
+    /**
+     * 应用Secret
+     */
+    @JsonProperty("appSecret")
+    private String appSecret;
+
+    /**
+     * 过期时间 过期时间设定需在1~7天之间
+     */
+    @JsonProperty("tokenExpireDay")
+    private String tokenExpireDay;
+
+    public GetAccessTokenRequest(String appKey, String appSecret) {
+        this.appKey = appKey;
+        this.appSecret = appSecret;
+        this.tokenExpireDay = "7";
+    }
+
+
+}

+ 97 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/ModelQueryRequest.java

@@ -0,0 +1,97 @@
+package com.jzg.quotation.zijin.api.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.commons.entity.vo.quote.CarInfoVo;
+import com.jzg.quotation.zijin.api.entity.ZiJinApiConfigureParameters;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+
+/**
+ * @description: 紫金财险 车型查询 入参实体
+ * @author: wenks
+ * @date: 2023/8/8 17:18
+ **/
+@NoArgsConstructor
+@Data
+public class ModelQueryRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -3339746068465364453L;
+
+    /**
+     * 车辆型号 brandName、vinNo传,可不传
+     */
+    @JsonProperty("brandName")
+    private String brandName;
+
+    /**
+     * 购车发票日期
+     */
+    @JsonProperty("certificateDate")
+    private String certificateDate;
+
+    /**
+     * 发动机号
+     */
+    @JsonProperty("engineNo")
+    private Long engineNo;
+
+    /**
+     * 初次登记日期
+     */
+    @JsonProperty("enrollDate")
+    private String enrollDate;
+
+    /**
+     * 号牌种类
+     */
+    @JsonProperty("licenseKindCode")
+    private String licenseKindCode;
+
+    /**
+     * 车牌号码
+     */
+    @JsonProperty("licenseNo")
+    private String licenseNo;
+
+    /**
+     * 订单ID
+     */
+    @JsonProperty("orderId")
+    private String orderId;
+
+    /**
+     * 订单来源/渠道代码
+     */
+    @JsonProperty("orderOrigin")
+    private String orderOrigin;
+
+    /**
+     * 投保地区省代码
+     */
+    @JsonProperty("proposalAreaCode")
+    private String proposalAreaCode;
+
+    /**
+     * 投保地区市代码
+     */
+    @JsonProperty("proposalCityCode")
+    private String proposalCityCode;
+
+    /**
+     * 车辆识别代码
+     */
+    @JsonProperty("vinNo")
+    private String vinNo;
+
+    /**
+     * 车型代码
+     */
+    @JsonProperty("modelCode")
+    private String modelCode;
+
+}

+ 38 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/NewPayRequest.java

@@ -0,0 +1,38 @@
+package com.jzg.quotation.zijin.api.entity.request;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @version
+ * @description: 紫金财险 新支付 入参实体
+ * @author: wenks
+ * @date: 2024/5/28 17:26
+ **/
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+public class NewPayRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 2976848596252887946L;
+
+    @JsonProperty("amount")
+    private String amount;
+
+    @JsonProperty("ordeNo")
+    private String ordeNo;
+
+    @JsonProperty("orderOrigin")
+    private String orderOrigin;
+
+    @JsonProperty("proposalCityCode")
+    private String proposalCityCode;
+
+}

+ 18 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/OrderNoRequest.java

@@ -0,0 +1,18 @@
+package com.jzg.quotation.zijin.api.entity.request;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@AllArgsConstructor
+@Data
+public class OrderNoRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 2906494404968695466L;
+
+    private String orderNo;
+
+}

+ 39 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/PaymentCallbacksRequest.java

@@ -0,0 +1,39 @@
+package com.jzg.quotation.zijin.api.entity.request;
+
+import lombok.Data;
+
+
+/**
+ * @description: 紫金财险 支付回调实体
+ * @author: wenks
+ * @date: 2023/8/19 13:01
+ **/
+@Data
+public class PaymentCallbacksRequest {
+
+    /**
+     * 响应代码
+     */
+    private String errorCode;
+    /**
+     * 响应信息
+     */
+    private String errorMessage;
+    /**
+     * 订单号
+     */
+    private String orderId;
+    /**
+     * 保单号
+     */
+    private String policyNo;
+    /**
+     * 交强险保单号(单商业或者非车险投保时为空)
+     */
+    private String policyNoCI;
+    /**
+     * 支付交易号
+     */
+    private String transNo;
+
+}

+ 48 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/QueryActualValueRequest.java

@@ -0,0 +1,48 @@
+package com.jzg.quotation.zijin.api.entity.request;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+
+/**
+ * @description: 紫金财险 获取车辆实际价值 入参实体
+ * @author: wenks
+ * @date: 2023/8/10 18:15
+ **/
+@NoArgsConstructor
+@Data
+public class QueryActualValueRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -5756388174195345456L;
+
+    @JsonProperty("carKindCode")
+    private String carKindCode;
+
+    @JsonProperty("certificateDate")
+    private String certificateDate;
+
+    @JsonProperty("enrollDate")
+    private String enrollDate;
+
+    @JsonProperty("purchasePrice")
+    private String purchasePrice;
+
+    @JsonProperty("seatCount")
+    private String seatCount;
+
+    @JsonProperty("startDate")
+    private String startDate;
+
+    @JsonProperty("tonCount")
+    private String tonCount;
+
+    @JsonProperty("useNatureCode")
+    private String useNatureCode;
+
+}

+ 27 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/QueryClauseDataRequest.java

@@ -0,0 +1,27 @@
+package com.jzg.quotation.zijin.api.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@NoArgsConstructor
+@Data
+public class QueryClauseDataRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 2778421635324940768L;
+
+    @JsonProperty("orderId")
+    private String orderId;
+
+    @JsonProperty("optType")
+    private String optType;
+
+    @JsonProperty("riskCode")
+    private String riskCode;
+
+
+}

+ 21 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/QueryOrderDetailRequest.java

@@ -0,0 +1,21 @@
+package com.jzg.quotation.zijin.api.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class QueryOrderDetailRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1612352036593179999L;
+
+    @JsonProperty("orderId")
+    private String orderId;
+}

+ 38 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/QueryTokenRequest.java

@@ -0,0 +1,38 @@
+package com.jzg.quotation.zijin.api.entity.request;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+
+/**
+ * @description: 紫金财险 车险业务获取token服务 入参实体
+ * @author: wenks
+ * @date: 2023/8/19 9:28
+ **/
+@NoArgsConstructor
+@Data
+public class QueryTokenRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -6471813879824927508L;
+
+    @JsonProperty("orderOrigin")
+    private String orderOrigin;
+
+    @JsonProperty("thirdOrderNo")
+    private String thirdOrderNo;
+
+    @JsonProperty("userId")
+    private String userId;
+
+    public QueryTokenRequest(String orderOrigin, String userId) {
+        this.orderOrigin = orderOrigin;
+        this.userId = userId;
+    }
+
+}

+ 60 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/QueryVehicProductsRequest.java

@@ -0,0 +1,60 @@
+package com.jzg.quotation.zijin.api.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+
+/**
+ * @description: 紫金财险 查询“车+意”中意外险方案信息(非摩托车险)入参实体
+ * @author: wenks
+ * @date: 2023/8/23 10:49
+ **/
+@NoArgsConstructor
+@Data
+public class QueryVehicProductsRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 9207340084423173275L;
+
+    /**
+     * 车辆类型
+     */
+    @JsonProperty("carKindCode")
+    private String carKindCode;
+
+    /**
+     * 座位数限制
+     */
+    @JsonProperty("noCarRiskCodeList")
+    private List<String> noCarRiskCodeList;
+
+    /**
+     * 座位数限制
+     */
+    @JsonProperty("seatCount")
+    private Integer seatCount;
+
+    /**
+     * 车辆使用性质
+     */
+    @JsonProperty("useNature")
+    private String useNature;
+
+    /**
+     * 渠道代码(第三方渠道必填)
+     */
+    @JsonProperty("orderOrigin")
+    private String orderOrigin;
+
+    /**
+     * 投保地区市代码(第三方渠道必填)
+     */
+    @JsonProperty("proposalCityCode")
+    private String proposalCityCode;
+
+}

+ 37 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/SendCheckCarLinkRequest.java

@@ -0,0 +1,37 @@
+package com.jzg.quotation.zijin.api.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+
+/**
+ * @description: 紫金财险 对接三方渠道验车链接接口
+ * @author: wenks
+ * @date: 2024/10/17 11:31
+ **/
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class SendCheckCarLinkRequest {
+
+    /**
+     * 订单ID
+     */
+    @JsonProperty("orderId")
+    private String orderId;
+
+    /**
+     * 车主名
+     */
+    @JsonProperty("carOwner")
+    private String carOwner;
+
+    /**
+     * 验车人接收验车链接短信的手机号
+     */
+    @JsonProperty("phoneNum")
+    private String phoneNum;
+
+}

+ 74 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/SubmitVerifyRequest.java

@@ -0,0 +1,74 @@
+package com.jzg.quotation.zijin.api.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @description: 紫金财险 提交核保参数 入参实体
+ * @author: wenks
+ * @date: 2023/8/10 17:44
+ **/
+@NoArgsConstructor
+@Data
+public class SubmitVerifyRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -3869558441838942494L;
+
+    @JsonProperty("engageList")
+    private List<EngageListDTO> engageList;
+
+    @JsonProperty("underWritingRequestVehicleDTO")
+    private UnderWritingRequestVehicleDTO underWritingRequestVehicleDto;
+
+    @JsonProperty("orderId")
+    private String orderId;
+
+    @JsonProperty("orderNo")
+    private String orderNo;
+
+    @NoArgsConstructor
+    @Data
+    public static class EngageListDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = -2637644323393860328L;
+
+        @JsonProperty("clauseCode")
+        private String clauseCode;
+
+        @JsonProperty("clauseName")
+        private String clauseName;
+
+        @JsonProperty("clauses")
+        private String clauses;
+
+        @JsonProperty("riskCode")
+        private String riskCode;
+
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class UnderWritingRequestVehicleDTO implements Serializable {
+
+        private static final long serialVersionUID = 5446089370940891817L;
+
+        @JsonProperty("carCheckStatus")
+        private String carCheckStatus;
+
+        @JsonProperty("carCheckReason")
+        private String carCheckReason;
+
+        public UnderWritingRequestVehicleDTO(String carCheckReason) {
+            this.carCheckStatus = "2";
+            this.carCheckReason = carCheckReason;
+        }
+    }
+
+}

+ 36 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/UploadFileRequest.java

@@ -0,0 +1,36 @@
+package com.jzg.quotation.zijin.api.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @description: 紫金财险 文件上传 入参实体
+ * @author: wenks
+ * @date: 2023/8/10 16:05
+ **/
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+public class UploadFileRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1504466430832856055L;
+
+    @JsonProperty
+    private String orderNo;
+
+    @JsonProperty("fileBase64")
+    private String fileBase64;
+
+    @JsonProperty("fileName")
+    private String fileName;
+
+    @JsonProperty("fileType")
+    private String fileType;
+
+}

+ 50 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/UploadImageInfoListRequest.java

@@ -0,0 +1,50 @@
+package com.jzg.quotation.zijin.api.entity.request;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+public class UploadImageInfoListRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 5189448987075578164L;
+
+    @JsonProperty("itemFileDataList")
+    private List<ItemFileDataListDTO> itemFileDataList;
+
+    @JsonProperty("orderId")
+    private String orderId;
+
+
+    @NoArgsConstructor
+    @Data
+    public static class ItemFileDataListDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = -8088228995799949015L;
+
+        @JsonProperty("fileId")
+        private String fileId;
+
+        @JsonProperty("fileName")
+        private String fileName;
+
+        @JsonProperty("fileType")
+        private String fileType;
+
+        public ItemFileDataListDTO(UploadFileRequest uploadImageRequest, String fileId) {
+            this.fileId = fileId;
+            this.fileName = uploadImageRequest.getFileName();
+            this.fileType = uploadImageRequest.getFileType();
+        }
+    }
+}

+ 47 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/request/ZbfAggregatePayRequest.java

@@ -0,0 +1,47 @@
+package com.jzg.quotation.zijin.api.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@NoArgsConstructor
+@Data
+public class ZbfAggregatePayRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -1236367204218496536L;
+
+    /**
+     * 金额(以分为单位)
+     */
+    @JsonProperty("amount")
+    private String amount;
+
+    /**
+     * 渠道代码
+     */
+    @JsonProperty("channelCode")
+    private String channelCode;
+
+    /**
+     * 订单号
+     */
+    @JsonProperty("orderNo")
+    private String orderNo;
+
+    /**
+     * 倒签标志,不传则默认为非倒签保单。1:倒签;0:非倒签
+     */
+    @JsonProperty("reverseFlag")
+    private String reverseFlag;
+
+    /**
+     * 全部支付方式:00;快捷支付:02;信用卡分期:09;微信支付:12;支付宝支付:22。默认为00
+     */
+    @JsonProperty("zbfMethodCode")
+    private String zbfMethodCode;
+
+}

+ 21 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/BaseResponse.java

@@ -0,0 +1,21 @@
+package com.jzg.quotation.zijin.api.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@Data
+public class BaseResponse implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 156387291623978802L;
+
+    @JsonProperty("rtnCode")
+    private String rtnCode;
+
+    @JsonProperty("rtnMsg")
+    private String rtnMsg;
+
+}

+ 868 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/CalculatePremiumResponse.java

@@ -0,0 +1,868 @@
+package com.jzg.quotation.zijin.api.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 紫金财险 保费计算 出参实体
+ */
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class CalculatePremiumResponse extends BaseResponse implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 3670586533495064198L;
+
+    @JsonProperty("basePart")
+    private BasePartDTO basePart;
+
+    @JsonProperty("carInfoList")
+    private List<CarInfoListDTO> carInfoList;
+
+    @JsonProperty("carShipTax")
+    private CarShipTaxDTO carShipTax;
+
+    @JsonProperty("carPolicySubInfoList")
+    private List<CarPolicySubInfoListDTO> carPolicySubInfoList;
+
+    @JsonProperty("channelAndUwRate")
+    private ChannelAndUwRateDTO channelAndUwRate;
+
+    @JsonProperty("ciProfitDetailData")
+    private CiProfitDetailDataDTO ciProfitDetailData;
+
+    @JsonProperty("demandPrecisionScoreDataList")
+    private List<DemandPrecisionScoreDataListDTO> demandPrecisionScoreDataList;
+
+    @JsonProperty("feeRateInfoList")
+    private List<FeeRateInfoListDTO> feeRateInfoList;
+
+    @JsonProperty("hisClaimList")
+    private List<HisClaimListDTO> hisClaimList;
+
+    @JsonProperty("illegalInfoList")
+    private List<IllegalInfoListDTO> illegalInfoList;
+
+    @JsonProperty("itemKindList")
+    private List<ItemKindListDTO> itemKindList;
+
+    @JsonProperty("lastYearPolicyInfo")
+    private LastYearPolicyInfoDTO lastYearPolicyInfo;
+
+    @JsonProperty("planList")
+    private List<PlanListDTO> planList;
+
+    @JsonProperty("priceInfoList")
+    private List<PriceInfoListDTO> priceInfoList;
+
+
+    @JsonProperty("success")
+    private Boolean success;
+
+
+    @NoArgsConstructor
+    @Data
+    public static class CarPolicySubInfoListDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 6411381770080211343L;
+
+        @JsonProperty("productCode")
+        private String productCode;
+        @JsonProperty("productName")
+        private String productName;
+        @JsonProperty("riskName")
+        private String riskNameX;
+        @JsonProperty("insureGradeNo")
+        private String insureGradeNo;
+        @JsonProperty("address")
+        private String address;
+        @JsonProperty("isUseInsured")
+        private String isUseInsured;
+        @JsonProperty("actualPremium")
+        private String actualPremium;
+        @JsonProperty("commi")
+        private String commi;
+        @JsonProperty("commi2")
+        private String commi2;
+        @JsonProperty("salary")
+        private String salary;
+        @JsonProperty("salary2")
+        private String salary2;
+        @JsonProperty("sumNoTaxPremium")
+        private String sumNoTaxPremium;
+
+    }
+
+
+    @NoArgsConstructor
+    @Data
+    public static class BasePartDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 4315673340895809849L;
+
+        /**
+         * 商业险校验答案
+         */
+        @JsonProperty("answer")
+        private String answer;
+
+        /**
+         * 交强险校验答案
+         */
+        @JsonProperty("answerCI")
+        private String answerCI;
+
+        @JsonProperty("comCode")
+        private String comCode;
+
+        /**
+         * 商业险投保查询码
+         */
+        @JsonProperty("demandNo")
+        private String demandNo;
+
+        /**
+         * 交强险投保查询码
+         */
+        @JsonProperty("demandNoCI")
+        private String demandNoCI;
+
+        @JsonProperty("discount")
+        private String discount;
+
+        /**
+         * 商业险终保时间
+         */
+        @JsonProperty("endDate")
+        private String endDate;
+
+        /**
+         * 交强险终保时间
+         */
+        @JsonProperty("endDateCI")
+        private String endDateCI;
+
+        /**
+         * 商业险终保小时
+         */
+        @JsonProperty("endHour")
+        private String endHour;
+
+        /**
+         * 交强险终保小时
+         */
+        @JsonProperty("endHourCI")
+        private String endHourCI;
+
+        /**
+         * 商业险终保分钟
+         */
+        @JsonProperty("endMinute")
+        private String endMinute;
+
+        /**
+         * 交强险终保分钟
+         */
+        @JsonProperty("endMinuteCI")
+        private String endMinuteCI;
+
+        @JsonProperty("isDjq")
+        private String isDjq;
+
+        @JsonProperty("jyenergytips")
+        private String jyenergytips;
+
+        @JsonProperty("lcRate")
+        private String lcRate;
+
+        @JsonProperty("maxScale")
+        private String maxScale;
+
+        @JsonProperty("minScale")
+        private String minScale;
+
+        @JsonProperty("proConfirmEndDate")
+        private String proConfirmEndDate;
+
+        @JsonProperty("proConfirmEndDateCI")
+        private String proConfirmEndDateCI;
+
+        @JsonProperty("proposalCheckNo")
+        private String proposalCheckNo;
+
+        /**
+         * 商业险转保校验码
+         */
+        @JsonProperty("question")
+        private String question;
+
+        /**
+         * 交强险转保校验码
+         */
+        @JsonProperty("questionCI")
+        private String questionCI;
+
+        /**
+         * 重复投保信息
+         */
+        @JsonProperty("reinsureMessage")
+        private String reinsureMessage;
+
+        /**
+         * 商业险转保标志
+         */
+        @JsonProperty("renewalFlag")
+        private String renewalFlag;
+
+        /**
+         * 交强险转保标志
+         */
+        @JsonProperty("renewalFlagCI")
+        private String renewalFlagCI;
+
+        @JsonProperty("startDate")
+        private String startDate;
+
+        /**
+         * 交强险起保时间
+         */
+        @JsonProperty("startDateCI")
+        private String startDateCI;
+
+        /**
+         * 商业险起保小时
+         */
+        @JsonProperty("startHour")
+        private String startHour;
+
+        /**
+         * 交强险起保小时
+         */
+        @JsonProperty("startHourCI")
+        private String startHourCI;
+
+        /**
+         * 商业险起保分钟
+         */
+        @JsonProperty("startMinute")
+        private String startMinute;
+
+        /**
+         * 交强险起保分钟
+         */
+        @JsonProperty("startMinuteCI")
+        private String startMinuteCI;
+
+        @JsonProperty("sumAmount")
+        private String sumAmount;
+
+        @JsonProperty("sumPremium")
+        private Double sumPremium;
+
+        @JsonProperty("xbFlag")
+        private String xbFlag;
+
+        @JsonProperty("xbFlagCI")
+        private String xbFlagCI;
+
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class CarShipTaxDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 2441423559261848150L;
+
+        @JsonProperty("completeKerbMass")
+        private String completeKerbMass;
+
+        @JsonProperty("extendChar1")
+        private String extendChar1;
+
+        @JsonProperty("extendChar2")
+        private String extendChar2;
+
+        @JsonProperty("freeRateText")
+        private String freeRateText;
+
+        @JsonProperty("identifyNumber")
+        private String identifyNumber;
+
+        @JsonProperty("lastCIPaymentTime")
+        private String lastCIPaymentTime;
+
+        @JsonProperty("lateFee")
+        private String lateFee;
+
+        @JsonProperty("leviedDate")
+        private String leviedDate;
+
+        @JsonProperty("paidFreeCertificate")
+        private String paidFreeCertificate;
+
+        @JsonProperty("payEndDate")
+        private String payEndDate;
+
+        @JsonProperty("payLastYear")
+        private String payLastYear;
+
+        @JsonProperty("payStartDate")
+        private String payStartDate;
+
+        @JsonProperty("payerCode")
+        private String payerCode;
+
+        @JsonProperty("previousPay")
+        private String previousPay;
+
+        @JsonProperty("relifReason")
+        private String relifReason;
+
+        @JsonProperty("sumPayTax")
+        private String sumPayTax;
+
+        @JsonProperty("taxActual")
+        private String taxActual;
+
+        @JsonProperty("taxComCode")
+        private String taxComCode;
+
+        @JsonProperty("taxComName")
+        private String taxComName;
+
+        @JsonProperty("taxRelief")
+        private String taxRelief;
+
+        @JsonProperty("taxRelifFlag")
+        private String taxRelifFlag;
+
+        @JsonProperty("taxRelifFlagCN")
+        private String taxRelifFlagCN;
+
+        @JsonProperty("taxUnit")
+        private String taxUnit;
+
+        @JsonProperty("taxpayerIdentifier")
+        private String taxpayerIdentifier;
+
+        @JsonProperty("taxpayerName")
+        private String taxpayerName;
+
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class ChannelAndUwRateDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = -2327231056620769434L;
+
+        @JsonProperty("chanMax")
+        private String chanMax;
+
+        @JsonProperty("chanMin")
+        private String chanMin;
+
+        @JsonProperty("uwMax")
+        private String uwMax;
+
+        @JsonProperty("uwMin")
+        private String uwMin;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class CiProfitDetailDataDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = -2547100532408066407L;
+
+        @JsonProperty("claimAdjustLevel")
+        private String claimAdjustLevel;
+
+        @JsonProperty("claimAdjustReason")
+        private String claimAdjustReason;
+
+        @JsonProperty("claimTimes")
+        private String claimTimes;
+
+        @JsonProperty("insureYears")
+        private String insureYears;
+
+        @JsonProperty("insurerArea")
+        private String insurerArea;
+
+        @JsonProperty("loyaltyAdjust")
+        private String loyaltyAdjust;
+
+        @JsonProperty("noClaimAdjustReason")
+        private String noClaimAdjustReason;
+
+        @JsonProperty("noPeccancyRecordReason")
+        private String noPeccancyRecordReason;
+
+        @JsonProperty("nonclaimAdjuct")
+        private String nonclaimAdjuct;
+
+        @JsonProperty("safeAdjust")
+        private String safeAdjust;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class LastYearPolicyInfoDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 3129080952032001128L;
+
+        @JsonProperty("lastBiliDate")
+        private String lastBiliDate;
+
+        @JsonProperty("lastBiliDateCI")
+        private String lastBiliDateCI;
+
+        @JsonProperty("lastEndDate")
+        private String lastEndDate;
+
+        @JsonProperty("lastEndDateCI")
+        private String lastEndDateCI;
+
+        @JsonProperty("lastStartDate")
+        private String lastStartDate;
+
+        @JsonProperty("lastStartDateCI")
+        private String lastStartDateCI;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class CarInfoListDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = -6263980208513359416L;
+
+        @JsonProperty("carName")
+        private String carName;
+
+        @JsonProperty("modelIdCode")
+        private String modelIdCode;
+
+        @JsonProperty("noticeType")
+        private String noticeType;
+
+        @JsonProperty("pureRiskPremium")
+        private String pureRiskPremium;
+
+        @JsonProperty("vehicleBrand")
+        private String vehicleBrand;
+
+        @JsonProperty("vehicleCode")
+        private String vehicleCode;
+
+        @JsonProperty("vehicleFamily")
+        private String vehicleFamily;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class DemandPrecisionScoreDataListDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = -2887437007692604495L;
+
+        @JsonProperty("score")
+        private String score;
+
+        @JsonProperty("scoreCode")
+        private String scoreCode;
+
+        @JsonProperty("serialno")
+        private String serialno;
+
+        @JsonProperty("updateTime")
+        private String updateTime;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class FeeRateInfoListDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 2607693926127582629L;
+
+        @JsonProperty("commissionRate1")
+        private String commissionRate1;
+
+        @JsonProperty("commissionRate2")
+        private String commissionRate2;
+
+        @JsonProperty("dataType")
+        private String dataType;
+
+        @JsonProperty("performanceRate1")
+        private String performanceRate1;
+
+        @JsonProperty("performanceRate2")
+        private String performanceRate2;
+
+        @JsonProperty("salesSupportRate1")
+        private String salesSupportRate1;
+
+        @JsonProperty("salesSupportRate2")
+        private String salesSupportRate2;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class HisClaimListDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 5409751294073355672L;
+
+        @JsonProperty("accidentDeath")
+        private String accidentDeath;
+
+        @JsonProperty("areaCode")
+        private String areaCode;
+
+        @JsonProperty("claimType")
+        private String claimType;
+
+        @JsonProperty("endCaseTime")
+        private String endCaseTime;
+
+        @JsonProperty("endDate")
+        private String endDate;
+
+        @JsonProperty("insurerArea")
+        private String insurerArea;
+
+        @JsonProperty("kindCode")
+        private String kindCode;
+
+        @JsonProperty("lossFee")
+        private String lossFee;
+
+        @JsonProperty("lossTime")
+        private String lossTime;
+
+        @JsonProperty("payCompany")
+        private String payCompany;
+
+        @JsonProperty("policyNo")
+        private String policyNo;
+
+        @JsonProperty("startDate")
+        private String startDate;
+
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class IllegalInfoListDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = -6998796848106863700L;
+
+        @JsonProperty("administrationArea")
+        private String administrationArea;
+
+        @JsonProperty("decisionCode")
+        private String decisionCode;
+
+        @JsonProperty("lossAction")
+        private String lossAction;
+
+        @JsonProperty("lossTime")
+        private String lossTime;
+
+        @JsonProperty("peccancySort")
+        private String peccancySort;
+
+        @JsonProperty("remark")
+        private String remark;
+
+        @JsonProperty("violationCode")
+        private String violationCode;
+
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class ItemKindListDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 620821382003397248L;
+
+        @JsonProperty("amount")
+        private String amount;
+
+        @JsonProperty("basePremium")
+        private String basePremium;
+
+        @JsonProperty("benchMarkPremium")
+        private String benchMarkPremium;
+
+        @JsonProperty("calculateFlag")
+        private String calculateFlag;
+
+        @JsonProperty("discount")
+        private String discount;
+
+        @JsonProperty("kindCode")
+        private String kindCode;
+
+        @JsonProperty("kindName")
+        private String kindName;
+
+        @JsonProperty("modeCode")
+        private String modeCode;
+
+        @JsonProperty("modeName")
+        private String modeName;
+
+        @JsonProperty("premium")
+        private String premium;
+
+        @JsonProperty("premium2")
+        private String premium2;
+
+        @JsonProperty("quantity")
+        private String quantity;
+
+        @JsonProperty("rate")
+        private String rate;
+
+        @JsonProperty("riskCode")
+        private String riskCode;
+
+        @JsonProperty("serviceTimes")
+        private String serviceTimes;
+
+        @JsonProperty("unitAmount")
+        private String unitAmount;
+
+        @JsonProperty("value")
+        private String value;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class PlanListDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = -7671350730483249404L;
+
+        @JsonProperty("currency")
+        private String currency;
+
+        @JsonProperty("planDate")
+        private String planDate;
+
+        @JsonProperty("planFee")
+        private String planFee;
+
+        @JsonProperty("planStartDate")
+        private String planStartDate;
+
+        @JsonProperty("planText")
+        private String planText;
+
+        @JsonProperty("riskCode")
+        private String riskCode;
+
+        @JsonProperty("serialNo")
+        private String serialNo;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class PriceInfoListDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 3855195412906065458L;
+
+        @JsonProperty("claimTimes")
+        private String claimTimes;
+
+        @JsonProperty("actPremSal")
+        private String actPremSal;
+
+        @JsonProperty("certiNo")
+        private String certiNo;
+
+        @JsonProperty("chanRel")
+        private String chanRel;
+
+        @JsonProperty("compulsoryThreeTranche")
+        private String compulsoryThreeTranche;
+
+        @JsonProperty("compulsoryTranche")
+        private String compulsoryTranche;
+
+        @JsonProperty("configCHD")
+        private String configCHD;
+
+        @JsonProperty("endorsePrem")
+        private String endorsePrem;
+
+        @JsonProperty("generateDate")
+        private String generateDate;
+
+        @JsonProperty("hbCode")
+        private String hbCode;
+
+        @JsonProperty("hbScore")
+        private String hbScore;
+
+        @JsonProperty("jYChanrel")
+        private String jYChanrel;
+
+        @JsonProperty("jYUwrel")
+        private String jYUwrel;
+
+        @JsonProperty("level2Branch")
+        private String level2Branch;
+
+        @JsonProperty("lrRecom")
+        private String lrRecom;
+
+        @JsonProperty("lrRecomAdjust")
+        private String lrRecomAdjust;
+
+        @JsonProperty("markRecomAmt")
+        private String markRecomAmt;
+
+        @JsonProperty("markRecomAmtCom")
+        private String markRecomAmtCom;
+
+        @JsonProperty("markRecomAmtSal")
+        private String markRecomAmtSal;
+
+        @JsonProperty("markRecomRatio")
+        private String markRecomRatio;
+
+        @JsonProperty("markRecomRatioCom")
+        private String markRecomRatioCom;
+
+        @JsonProperty("markRecomRatioSal")
+        private String markRecomRatioSal;
+
+        @JsonProperty("policyYear")
+        private String policyYear;
+
+        @JsonProperty("premRecomAll")
+        private String premRecomAll;
+
+        @JsonProperty("premRecomCom")
+        private String premRecomCom;
+
+        @JsonProperty("pricingId")
+        private String pricingId;
+
+        @JsonProperty("reserved1")
+        private String reserved1;
+
+        @JsonProperty("reserved2")
+        private String reserved2;
+
+        @JsonProperty("resultCode")
+        private String resultCode;
+
+        @JsonProperty("resultMsg")
+        private String resultMsg;
+
+        @JsonProperty("revPredScore")
+        private String revPredScore;
+
+        @JsonProperty("revPredScoreAdjust")
+        private String revPredScoreAdjust;
+
+        @JsonProperty("riskCode")
+        private String riskCode;
+
+        @JsonProperty("serialNo")
+        private String serialNo;
+
+        @JsonProperty("threeTranche")
+        private String threeTranche;
+
+        @JsonProperty("tjCode")
+        private String tjCode;
+
+        @JsonProperty("tjScore")
+        private String tjScore;
+
+        @JsonProperty("totalTranche")
+        private String totalTranche;
+
+        @JsonProperty("useNatureCode")
+        private String useNatureCode;
+
+        @JsonProperty("uwRel")
+        private String uwRel;
+
+        @JsonProperty("vehicleDamageTranche")
+        private String vehicleDamageTranche;
+
+        @JsonProperty("zjNatrnk")
+        private String zjNatrnk;
+
+        @JsonProperty("zjPrornk")
+        private String zjPrornk;
+
+        @JsonProperty("ubiPredictedInfo")
+        private UbiPredictedInfoDTO ubiPredictedInfo;
+
+        @JsonProperty("zjRate")
+        private String zjRate;
+
+        @JsonProperty("zjStatus")
+        private String zjStatus;
+
+        @Data
+        public static class UbiPredictedInfoDTO implements Serializable{
+
+            @Serial
+            private static final long serialVersionUID = -3821813924645067621L;
+
+            private  String id;
+
+            private  String vin;
+
+            private  String resultFlag;
+
+            private  String score;
+
+            private  String vehCheck;
+
+            private  String proba;
+
+            private  String dwlPurePremium;
+
+            private  String tplPurePremium;
+
+            private  String clpPurePremium;
+
+            private  String dwlLossRate;
+
+            private  String tplLossRate;
+
+            private  String clpLossRate;
+
+            private  String vehicleLossRate;
+
+        }
+
+    }
+}

+ 30 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/GetAccessTokenResponse.java

@@ -0,0 +1,30 @@
+package com.jzg.quotation.zijin.api.entity.response;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+
+
+/**
+ * @description: 紫金财险 为接入方提供获取token服务 出参实体
+ * @author: wenks
+ * @date: 2023/8/19 9:29
+ **/
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class GetAccessTokenResponse extends BaseResponse {
+
+    @Serial
+    private static final long serialVersionUID = -3883464091055560963L;
+
+    /**
+     * Authorization的值
+     */
+    @JsonProperty("token")
+    private String token;
+}

+ 304 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/ModelQueryResponse.java

@@ -0,0 +1,304 @@
+package com.jzg.quotation.zijin.api.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @description: 紫金财险 车型查询 出参实体
+ * @author: wenks
+ * @date: 2023/8/8 17:20
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class ModelQueryResponse extends BaseResponse implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 345873689646517032L;
+    /**
+     * 订单ID
+     */
+    @JsonProperty("orderId")
+    private String orderId;
+    /**
+     * 订单号
+     */
+    @JsonProperty("orderNo")
+    private String orderNo;
+    /**
+     *
+     */
+    @JsonProperty("success")
+    private Boolean success;
+    /**
+     * 返回车型列表
+     */
+    @JsonProperty("vehicleModelInfos")
+    private List<VehicleModelInfosDTO> vehicleModelInfos;
+
+    @NoArgsConstructor
+    @Data
+    public static class VehicleModelInfosDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = -7781619063783117252L;
+        /**
+         * 安全气囊数
+         */
+        @JsonProperty("airBagNum")
+        private String airBagNum;
+        /**
+         *
+         */
+        @JsonProperty("aliasName")
+        private String aliasName;
+        /**
+         * 车辆品牌
+         */
+        @JsonProperty("brand")
+        private String brand;
+        /**
+         * 品牌编码
+         */
+        @JsonProperty("brandCode")
+        private String brandCode;
+        /**
+         * 车辆种类
+         */
+        @JsonProperty("carKind")
+        private String carKind;
+        /**
+         * 车系
+         */
+        @JsonProperty("carSeriesName")
+        private String carSeriesName;
+        /**
+         * 车辆类别(A/B类)
+         */
+        @JsonProperty("carStyle")
+        private String carStyle;
+        /**
+         * 年款
+         */
+        @JsonProperty("carYear")
+        private String carYear;
+        /**
+         * 厂商编码
+         */
+        @JsonProperty("companyCode")
+        private String companyCode;
+        /**
+         * 整备质量(最大)
+         */
+        @JsonProperty("completeKerbmassMax")
+        private String completeKerbmassMax;
+        /**
+         * 整备质量(最小)
+         */
+        @JsonProperty("completeKerbmassMin")
+        private String completeKerbmassMin;
+        /**
+         * 排量
+         */
+        @JsonProperty("exhaustCapacity")
+        private String exhaustCapacity;
+        /**
+         * 生产厂家
+         */
+        @JsonProperty("factory")
+        private String factory;
+        /**
+         * 车系编码
+         */
+        @JsonProperty("familyCode")
+        private String familyCode;
+        /**
+         * 整备质量
+         */
+        @JsonProperty("fullWeight")
+        private String fullWeight;
+        /**
+         * 变速箱类型编码
+         */
+        @JsonProperty("gearboxType")
+        private String gearboxType;
+        /**
+         * 车组编码
+         */
+        @JsonProperty("groupCode")
+        private String groupCode;
+        /**
+         * 车组名称
+         */
+        @JsonProperty("groupName")
+        private String groupName;
+        /**
+         * 车船税减免标识编码
+         */
+        @JsonProperty("hfCode")
+        private String hfCode;
+        /**
+         * 车船税减免标识
+         */
+        @JsonProperty("hfName")
+        private String hfName;
+        /**
+         * 车型种类
+         */
+        @JsonProperty("importFlag")
+        private String importFlag;
+        /**
+         *
+         */
+        @JsonProperty("jqxClassName")
+        private String jqxClassName;
+        /**
+         *
+         */
+        @JsonProperty("marketYear")
+        private String marketYear;
+        /**
+         * 车型代码
+         */
+        @JsonProperty("modelCode")
+        private String modelCode;
+        /**
+         *
+         */
+        @JsonProperty("modelDesc")
+        private String modelDesc;
+        /**
+         *
+         */
+        @JsonProperty("modelName")
+        private String modelName;
+        /**
+         *
+         */
+        @JsonProperty("newVehicleClass")
+        private String newVehicleClass;
+        /**
+         *
+         */
+        @JsonProperty("newVehicleClassCode")
+        private String newVehicleClassCode;
+        /**
+         *
+         */
+        @JsonProperty("platModelName")
+        private String platModelName;
+        /**
+         *
+         */
+        @JsonProperty("platPublicMode")
+        private String platPublicMode;
+        /**
+         * 行业车型编码
+         */
+        @JsonProperty("platVehicleCode")
+        private String platVehicleCode;
+        /**
+         *
+         */
+        @JsonProperty("power")
+        private String power;
+        /**
+         *
+         */
+        @JsonProperty("powerType")
+        private String powerType;
+        /**
+         *
+         */
+        @JsonProperty("powerTypeCode")
+        private String powerTypeCode;
+        /**
+         *
+         */
+        @JsonProperty("productStatus")
+        private String productStatus;
+        /**
+         *
+         */
+        @JsonProperty("purchasePrice")
+        private String purchasePrice;
+        /**
+         *
+         */
+        @JsonProperty("purchasePriceTax")
+        private String purchasePriceTax;
+        /**
+         *
+         */
+        @JsonProperty("remark")
+        private String remark;
+        /**
+         *
+         */
+        @JsonProperty("riskFlag")
+        private String riskFlag;
+        /**
+         *
+         */
+        @JsonProperty("riskType")
+        private String riskType;
+        /**
+         *
+         */
+        @JsonProperty("seatCount")
+        private String seatCount;
+        /**
+         *
+         */
+        @JsonProperty("standardName")
+        private String standardName;
+        /**
+         *
+         */
+        @JsonProperty("syxClassId")
+        private String syxClassId;
+        /**
+         *
+         */
+        @JsonProperty("syxClassName")
+        private String syxClassName;
+        /**
+         *
+         */
+        @JsonProperty("theftProof")
+        private String theftProof;
+        /**
+         *
+         */
+        @JsonProperty("transmissionType")
+        private String transmissionType;
+        /**
+         *
+         */
+        @JsonProperty("vehicleClassCode")
+        private String vehicleClassCode;
+        /**
+         *
+         */
+        @JsonProperty("vehicleId")
+        private String vehicleId;
+        /**
+         *
+         */
+        @JsonProperty("vehicleWeight")
+        private String vehicleWeight;
+        /**
+         *
+         */
+        @JsonProperty("vinNo")
+        private String vinNo;
+
+    }
+
+}

+ 55 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/NewPayRequestResponse.java

@@ -0,0 +1,55 @@
+package com.jzg.quotation.zijin.api.entity.response;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @description: 紫金财险 新支付 响应实体
+ * @author: wenks
+ * @date: 2024/5/28 17:30
+ **/
+@EqualsAndHashCode(callSuper = true)
+@Data
+@NoArgsConstructor
+public class NewPayRequestResponse extends BaseResponse implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 3146150212183255644L;
+
+    @JsonProperty("twoDimentionImageUrl")
+    private String twoDimentionImageUrl;
+
+    @JsonProperty("orderNo")
+    private String orderNo;
+
+    @JsonProperty("success")
+    private Boolean success;
+
+    @JsonProperty("posTransNo")
+    private String posTransNo;
+
+    @JsonProperty("paymentNo")
+    private String paymentNo;
+
+    @JsonProperty("bankAccountName")
+    private String bankAccountName;
+
+    @JsonProperty("bankCardNo")
+    private String bankCardNo;
+
+    @JsonProperty("bankName")
+    private String bankName;
+
+    @JsonProperty("paymentPolicyNoList")
+    private String paymentPolicyNoList;
+
+    @JsonProperty("url")
+    private String url;
+
+}

+ 26 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/QueryActualValueResponse.java

@@ -0,0 +1,26 @@
+package com.jzg.quotation.zijin.api.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @description: 紫金财险 获取车辆实际价值 出参实体
+ * @author: wenks
+ * @date: 2023/8/10 18:18
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class QueryActualValueResponse extends BaseResponse implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 6486322620466578970L;
+
+    @JsonProperty("actualValue")
+    private String actualValue;
+}

+ 96 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/QueryClauseDataResponse.java

@@ -0,0 +1,96 @@
+package com.jzg.quotation.zijin.api.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+
+/**
+ * @description: 紫金财险  特约查询 出参实体
+ * @author: wenks
+ * @date: 2023/9/6 11:43
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class QueryClauseDataResponse extends BaseResponse implements Serializable {
+
+
+    @Serial
+    private static final long serialVersionUID = 1275058219674614480L;
+
+    @JsonProperty("clauseInfoDtoList")
+    private List<ClauseInfoDtoListDTO> clauseInfoDtoList;
+
+    @NoArgsConstructor
+    @Data
+    public static class ClauseInfoDtoListDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = -2491859617378324759L;
+
+        @JsonProperty("clauseId")
+        private String clauseId;
+
+        @JsonProperty("clauseName")
+        private String clauseName;
+
+        @JsonProperty("clauseContent")
+        private String clauseContent;
+
+        @JsonProperty("modifyFlag")
+        private String modifyFlag;
+
+        @JsonProperty("clauseType")
+        private String clauseType;
+
+        @JsonProperty("riskCode")
+        private String riskCode;
+
+        @JsonProperty("optType")
+        private String optType;
+
+        @JsonProperty("clauseFlag")
+        private String clauseFlag;
+
+        @JsonProperty("clauseCode")
+        private String clauseCode;
+
+        @JsonProperty("proClauseConfDto")
+        private ProClauseConfDtoDTO proClauseConfDto;
+
+        @NoArgsConstructor
+        @Data
+        public static class ProClauseConfDtoDTO implements Serializable{
+
+            @Serial
+            private static final long serialVersionUID = -5616060670260884786L;
+
+            @JsonProperty("id")
+            private String id;
+
+            @JsonProperty("ruleName")
+            private String ruleName;
+
+            @JsonProperty("usageCode")
+            private String usageCode;
+
+            @JsonProperty("riskCode")
+            private String riskCode;
+
+            @JsonProperty("provinceCode")
+            private String provinceCode;
+
+            @JsonProperty("needState")
+            private String needState;
+
+            @JsonProperty("clauseFlag")
+            private String clauseFlag;
+        }
+    }
+}

+ 365 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/QueryOrderDetailResponse.java

@@ -0,0 +1,365 @@
+package com.jzg.quotation.zijin.api.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class QueryOrderDetailResponse extends BaseResponse implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -1276766584417540458L;
+
+    @JsonProperty("resultObj")
+    private ResultObjDTO resultObj;
+
+    @JsonProperty("orderId")
+    private String orderId;
+
+    @JsonProperty("orderNo")
+    private String orderNo;
+
+    @JsonProperty("iseeBiz")
+    private String iseeBiz;
+
+    @JsonProperty("applyNo")
+    private String applyNo;
+
+    @JsonProperty("vipNo")
+    private String vipNo;
+
+    @JsonProperty("terminalId")
+    private String terminalId;
+
+    @NoArgsConstructor
+    @Data
+    public static class ResultObjDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = -1129709080882223541L;
+
+        @JsonProperty("orderId")
+        private String orderId;
+
+        @JsonProperty("orderNo")
+        private String orderNo;
+
+        @JsonProperty("orderOrigin")
+        private String orderOrigin;
+
+        @JsonProperty("payTime")
+        private String payTime;
+
+        /**
+         * 订单状态:0暂存;1核保中;2待支付;3下发修改;4生效;5失效;6退保;7注销
+         */
+        @JsonProperty("orderStatus")
+        private String orderStatus;
+
+        @JsonProperty("orderPolicyList")
+        private List<OrderPolicyListDTO> orderPolicyList;
+
+        @JsonProperty("baseInfo")
+        private BaseInfoDTO baseInfo;
+
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class BaseInfoDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = -4278242250316276923L;
+
+        @JsonProperty("policyNo")
+        private String policyNo;
+        @JsonProperty("proposalNo")
+        private String proposalNo;
+        @JsonProperty("policyNoCI")
+        private String policyNoCI;
+        @JsonProperty("proposalNoCI")
+        private String proposalNoCI;
+        @JsonProperty("underWriteFlag")
+        private String underWriteFlag;
+        @JsonProperty("underWriteFlagCI")
+        private String underWriteFlagCI;
+        @JsonProperty("underWriteMessageCI")
+        private String underWriteMessageCI;
+        @JsonProperty("underWriteMessage")
+        private String underWriteMessage;
+        @JsonProperty("ciApplicationStatus")
+        private String ciApplicationStatus;
+        @JsonProperty("applicationStatus")
+        private Object applicationStatus;
+        @JsonProperty("startDate")
+        private String startDate;
+        @JsonProperty("startHour")
+        private String startHour;
+        @JsonProperty("startMinute")
+        private String startMinute;
+        @JsonProperty("endDate")
+        private String endDate;
+        @JsonProperty("endHour")
+        private String endHour;
+        @JsonProperty("endMinute")
+        private String endMinute;
+        @JsonProperty("startDateCI")
+        private String startDateCI;
+        @JsonProperty("startHourCI")
+        private String startHourCI;
+        @JsonProperty("startMinuteCI")
+        private String startMinuteCI;
+        @JsonProperty("endDateCI")
+        private String endDateCI;
+        @JsonProperty("endHourCI")
+        private String endHourCI;
+        @JsonProperty("endMinuteCI")
+        private String endMinuteCI;
+        @JsonProperty("inputDate")
+        private String inputDate;
+        @JsonProperty("pnpDate")
+        private String pnpDate;
+        @JsonProperty("relationPolicyFlag")
+        private String relationPolicyFlag;
+        @JsonProperty("isInstantFlag")
+        private Object isInstantFlag;
+        @JsonProperty("autoTransRenewFlag")
+        private Object autoTransRenewFlag;
+        @JsonProperty("sumPremium")
+        private Object sumPremium;
+        @JsonProperty("sumPremiumCI")
+        private Object sumPremiumCI;
+        @JsonProperty("policyType")
+        private Object policyType;
+        @JsonProperty("invoiceType")
+        private Object invoiceType;
+        @JsonProperty("policyTypeCI")
+        private Object policyTypeCI;
+        @JsonProperty("invoiceTypeCI")
+        private Object invoiceTypeCI;
+        @JsonProperty("applicationType")
+        private Object applicationType;
+        @JsonProperty("calculateFlag")
+        private String calculateFlag;
+        @JsonProperty("sumAmount")
+        private Object sumAmount;
+        @JsonProperty("argueSolution")
+        private Object argueSolution;
+        @JsonProperty("arbitBoardName")
+        private Object arbitBoardName;
+        @JsonProperty("needKindCodes")
+        private Object needKindCodes;
+        @JsonProperty("answer")
+        private Object answer;
+        @JsonProperty("demandNo")
+        private String demandNo;
+        @JsonProperty("demandNoCI")
+        private Object demandNoCI;
+        @JsonProperty("answerCI")
+        private Object answerCI;
+        @JsonProperty("provinceCode")
+        private Object provinceCode;
+        @JsonProperty("provinceName")
+        private Object provinceName;
+        @JsonProperty("cityCode")
+        private Object cityCode;
+        @JsonProperty("cityName")
+        private Object cityName;
+        @JsonProperty("networkCode")
+        private Object networkCode;
+        @JsonProperty("networkName")
+        private Object networkName;
+        @JsonProperty("saveCustomerFlag")
+        private Object saveCustomerFlag;
+        @JsonProperty("introduceCode")
+        private Object introduceCode;
+        @JsonProperty("introduceName")
+        private Object introduceName;
+        @JsonProperty("introduceAgreementNo")
+        private Object introduceAgreementNo;
+        @JsonProperty("channelCode")
+        private Object channelCode;
+        @JsonProperty("channelName")
+        private Object channelName;
+        @JsonProperty("localCharge")
+        private Object localCharge;
+        @JsonProperty("floatCoefficient")
+        private Object floatCoefficient;
+        @JsonProperty("operationName")
+        private Object operationName;
+        @JsonProperty("operationGrade")
+        private Object operationGrade;
+        @JsonProperty("hospitalName")
+        private Object hospitalName;
+        @JsonProperty("outpatientNumber")
+        private Object outpatientNumber;
+        @JsonProperty("pbSourceType")
+        private Object pbSourceType;
+        @JsonProperty("anaesthesiaProject")
+        private Object anaesthesiaProject;
+        @JsonProperty("sumQuantity")
+        private Object sumQuantity;
+        @JsonProperty("isMajorOperation")
+        private Object isMajorOperation;
+        @JsonProperty("shareId")
+        private Object shareId;
+        @JsonProperty("insurancePeriod")
+        private Object insurancePeriod;
+        @JsonProperty("salesPerson")
+        private Object salesPerson;
+        @JsonProperty("professionalNum")
+        private Object professionalNum;
+        @JsonProperty("comCode")
+        private Object comCode;
+        @JsonProperty("handler1Code")
+        private Object handler1Code;
+        @JsonProperty("businessNature")
+        private Object businessNature;
+        @JsonProperty("agentCode")
+        private Object agentCode;
+        @JsonProperty("agreementNo")
+        private Object agreementNo;
+        @JsonProperty("discount")
+        private Object discount;
+        @JsonProperty("operatorCode")
+        private Object operatorCode;
+        @JsonProperty("othFlag")
+        private Object othFlag;
+        @JsonProperty("replationInfo")
+        private Object replationInfo;
+        @JsonProperty("exhibitAgencyAgreementNo")
+        private Object exhibitAgencyAgreementNo;
+        @JsonProperty("isDjq")
+        private String isDjq;
+        @JsonProperty("lcRate")
+        private Object lcRate;
+        @JsonProperty("forceDownModify")
+        private Object forceDownModify;
+        @JsonProperty("choosePremium")
+        private Object choosePremium;
+        @JsonProperty("split")
+        private Object split;
+        @JsonProperty("mixFlag")
+        private Object mixFlag;
+        @JsonProperty("xbFlag")
+        private Object xbFlag;
+        @JsonProperty("xbFlagCI")
+        private Object xbFlagCI;
+        @JsonProperty("machineCode")
+        private Object machineCode;
+        @JsonProperty("mergeFlag")
+        private Object mergeFlag;
+        @JsonProperty("goalInsuredFlag")
+        private Object goalInsuredFlag;
+        @JsonProperty("lender")
+        private Object lender;
+        @JsonProperty("renewalInfoDto")
+        private Object renewalInfoDto;
+        @JsonProperty("oldPolicyNo")
+        private Object oldPolicyNo;
+        @JsonProperty("uwRel")
+        private Object uwRel;
+        @JsonProperty("additionSumPremium")
+        private Double additionSumPremium;
+        @JsonProperty("visaCode")
+        private Object visaCode;
+        @JsonProperty("locTypeCode")
+        private Object locTypeCode;
+        @JsonProperty("projectId")
+        private Object projectId;
+        @JsonProperty("productGroupNo")
+        private Object productGroupNo;
+        @JsonProperty("quotationNo")
+        private String quotationNo;
+        @JsonProperty("installPayFlag")
+        private Object installPayFlag;
+        @JsonProperty("installPayYears")
+        private Object installPayYears;
+        @JsonProperty("productFlag")
+        private Object productFlag;
+        @JsonProperty("productId")
+        private Object productId;
+        @JsonProperty("merchandiseId")
+        private Object merchandiseId;
+        @JsonProperty("merchandiseCode")
+        private Object merchandiseCode;
+        @JsonProperty("noCarAttachmentFileDtoList")
+        private Object noCarAttachmentFileDtoList;
+    }
+
+
+    @NoArgsConstructor
+    @Data
+    public static class OrderPolicyListDTO implements Serializable {
+
+        private static final long serialVersionUID = 3045604063024832056L;
+
+        @JsonProperty("endDate")
+        private String endDate;
+        /**
+         * 核保状态代码
+         */
+        @JsonProperty("underWriteFlag")
+        private String underWriteFlag;
+        /**
+         * 险种名称
+         */
+        @JsonProperty("typeName")
+        private String typeName;
+        /**
+         * 保单号
+         */
+        @JsonProperty("policyNo")
+        private String policyNo;
+        /**
+         * 保费
+         */
+        @JsonProperty("sumPremium")
+        private Double sumPremium;
+        /**
+         * 险种代码
+         */
+        @JsonProperty("typeCode")
+        private String typeCode;
+
+        @JsonProperty("endHour")
+        private String endHour;
+        /**
+         * 核保信息
+         */
+        @JsonProperty("underWriteMessage")
+        private String underWriteMessage;
+
+        @JsonProperty("startHour")
+        private String startHour;
+        /**
+         * 投保单号
+         */
+        @JsonProperty("insureNo")
+        private String insureNo;
+        /**
+         * 保单生成时间
+         */
+        @JsonProperty("pnpDate")
+        private String pnpDate;
+
+        @JsonProperty("startDate")
+        private String startDate;
+
+        @JsonProperty("startMinute")
+        private String startMinute;
+
+        @JsonProperty("endMinute")
+        private String endMinute;
+
+    }
+
+
+}

+ 78 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/QueryOrderStateResponse.java

@@ -0,0 +1,78 @@
+package com.jzg.quotation.zijin.api.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class QueryOrderStateResponse extends BaseResponse implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -8559085906831615330L;
+
+
+    @JsonProperty("orderId")
+    private String orderId;
+
+    @JsonProperty("orderNo")
+    private String orderNo;
+
+    @JsonProperty("orderAmount")
+    private Double orderAmount;
+
+    @JsonProperty("uwFlag")
+    private String uwFlag;
+
+    @JsonProperty("vciProposalNo")
+    private String vciProposalNo;
+
+    @JsonProperty("tciProposalNo")
+    private String tciProposalNo;
+
+    @JsonProperty("vciPolicyNo")
+    private String vciPolicyNo;
+
+    @JsonProperty("tciPolicyNo")
+    private String tciPolicyNo;
+
+    @JsonProperty("vciEffectiveDate")
+    private String vciEffectiveDate;
+
+    @JsonProperty("vciExpiryDate")
+    private String vciExpiryDate;
+
+    @JsonProperty("tciEffectiveDate")
+    private String tciEffectiveDate;
+
+    @JsonProperty("tciExpiryDate")
+    private String tciExpiryDate;
+
+    @JsonProperty("uwMsg")
+    private String uwMsg;
+    @JsonProperty("vciPolicyIssueDate")
+    private String vciPolicyIssueDate;
+
+    @JsonProperty("tciPolicyIssueDate")
+    private String tciPolicyIssueDate;
+
+    @JsonProperty("nonVehicleProposalNo")
+    private String nonVehicleProposalNo;
+
+    @JsonProperty("nonVehiclePolicyNo")
+    private String nonVehiclePolicyNo;
+
+    @JsonProperty("nonVehicleEffectiveDate")
+    private String nonVehicleEffectiveDate;
+
+    @JsonProperty("nonVehicleExpiryDate")
+    private String nonVehicleExpiryDate;
+
+    @JsonProperty("nonVehiclePolicyIssueDate")
+    private String nonVehiclePolicyIssueDate;
+}

+ 27 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/QueryTokenResponse.java

@@ -0,0 +1,27 @@
+package com.jzg.quotation.zijin.api.entity.response;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+
+/**
+ * @description: 紫金财险 车险业务获取token服务  出参实体
+ * @author: wenks
+ * @date: 2023/8/19 9:29
+ **/
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class QueryTokenResponse extends BaseResponse {
+
+    @Serial
+    private static final long serialVersionUID = 3583709566525597016L;
+
+    @JsonProperty("token")
+    private String token;
+
+}

+ 66 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/QueryVehicProductsResponse.java

@@ -0,0 +1,66 @@
+package com.jzg.quotation.zijin.api.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @description: 紫金财险 查询“车+意”中意外险方案信息(非摩托车险) 出参实体
+ * @author: wenks
+ * @date: 2023/8/23 10:48
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class QueryVehicProductsResponse extends BaseResponse {
+
+    @Serial
+    private static final long serialVersionUID = 3078555057295275730L;
+
+    @JsonProperty("productDtoList")
+    private List<ProductDtoListDTO> productDtoList;
+
+    @NoArgsConstructor
+    @Data
+    public static class ProductDtoListDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 4720172787631313564L;
+
+        @JsonProperty("projectCode")
+        private String projectCode;
+
+        @JsonProperty("projectName")
+        private String projectName;
+
+        @JsonProperty("projectDesc")
+        private String projectDesc;
+
+        @JsonProperty("riskCode")
+        private String riskCode;
+
+        @JsonProperty("riskName")
+        private String riskName;
+
+        @JsonProperty("sumPremium")
+        private String sumPremium;
+
+        @JsonProperty("sumAmount")
+        private String sumAmount;
+
+        @JsonProperty("saleRyFee")
+        private String saleRyFee;
+
+        @JsonProperty("commiFee")
+        private String commiFee;
+
+        @JsonProperty("maxQuantity")
+        private Integer maxQuantity;
+    }
+
+}

+ 71 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/SubmitVerifyResponse.java

@@ -0,0 +1,71 @@
+package com.jzg.quotation.zijin.api.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @description: 紫金财险 提交核保参数 出参实体
+ * @author: wenks
+ * @date: 2023/8/10 17:44
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class SubmitVerifyResponse extends BaseResponse implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 4550731902520538322L;
+
+    @JsonProperty("orderId")
+    private String orderId;
+    @JsonProperty("orderNo")
+    private String orderNo;
+    @JsonProperty("rtnCode")
+    private String rtnCode;
+    @JsonProperty("rtnMsg")
+    private String rtnMsg;
+    @JsonProperty("submitVerifyInfo")
+    private SubmitVerifyInfoDTO submitVerifyInfo;
+
+    @NoArgsConstructor
+    @Data
+    public static class SubmitVerifyInfoDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = -4848981127371692499L;
+
+        @JsonProperty("endMinute")
+        private String endMinute;
+        @JsonProperty("endMinuteCI")
+        private String endMinuteCI;
+        /**
+         * 商业险保单号
+         */
+        @JsonProperty("policyNo")
+        private String policyNo;
+        /**
+         * 交强险保单号
+         */
+        @JsonProperty("policyNoCI")
+        private String policyNoCI;
+        /**
+         * 商业险投保单号
+         */
+        @JsonProperty("proposalNo")
+        private String proposalNo;
+        /**
+         * 交强险投保单号
+         */
+        @JsonProperty("proposalNoCI")
+        private String proposalNoCI;
+        @JsonProperty("startMinute")
+        private String startMinute;
+        @JsonProperty("startMinuteCI")
+        private String startMinuteCI;
+    }
+}

+ 28 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/UploadFileResponse.java

@@ -0,0 +1,28 @@
+package com.jzg.quotation.zijin.api.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+
+/**
+ * @description: 紫金财险 文件上传 出参参实体
+ * @author: wenks
+ * @date: 2023/8/10 16:06
+ **/
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class UploadFileResponse extends BaseResponse implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -2724925954843577468L;
+
+    @JsonProperty("fileId")
+    private String fileId;
+
+}

+ 25 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/ZbfAggregatePayResponse.java

@@ -0,0 +1,25 @@
+package com.jzg.quotation.zijin.api.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class ZbfAggregatePayResponse extends BaseResponse implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -6548320053020484412L;
+
+    @JsonProperty("orderNo")
+    private String orderNo;
+
+    @JsonProperty("payUrl")
+    private String payUrl;
+
+}

+ 36 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/properties/ZiJinApiProperties.java

@@ -0,0 +1,36 @@
+package com.jzg.quotation.zijin.api.properties;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "zijin.api")
+public class ZiJinApiProperties {
+
+    // 为接入方提供获取token服务地址
+    private String accessTokenUrl;
+
+    // 车险业务地址
+    private String url;
+
+    // 支付地址
+    private String payUrl;
+
+    //新支付
+    private String newPayUrl;
+
+    // 订单详情查询服务
+    private String orderUrl;
+
+    // 订单状态查询
+    private String orderDetailUrl;
+
+    // 下载保单地址
+    private String downLoadDocument;
+
+    // 对接三方渠道验车链接接口
+    private String sendCheckCarLink;
+}

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

@@ -0,0 +1,75 @@
+package com.jzg.quotation.zijin.api.service.Impl;
+
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+import com.jzg.quotation.commons.entity.vo.base.OrderBase;
+import com.jzg.quotation.commons.entity.vo.quote.AttributionInformationVo;
+import com.jzg.quotation.commons.entity.vo.quote.CarInfoVo;
+import com.jzg.quotation.commons.standard.conversion.ConfigureParametersConversion;
+import com.jzg.quotation.zijin.api.component.ZiJinApiRequestComponent;
+import com.jzg.quotation.zijin.api.converter.ZiJinQuotationProcessConstruction;
+import com.jzg.quotation.zijin.api.converter.ZiJinQuotationConstruction;
+import com.jzg.quotation.zijin.api.entity.ZiJinApiConfigureParameters;
+import com.jzg.quotation.zijin.api.entity.request.CalculatePremiumRequest;
+import com.jzg.quotation.zijin.api.entity.request.ModelQueryRequest;
+import com.jzg.quotation.zijin.api.entity.request.QueryActualValueRequest;
+import com.jzg.quotation.zijin.api.entity.response.ModelQueryResponse;
+import com.jzg.quotation.zijin.api.entity.response.QueryActualValueResponse;
+import com.jzg.quotation.zijin.api.service.ZiJinApiRequest;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpHeaders;
+import org.springframework.stereotype.Service;
+
+/**
+ * @description: 紫金财险 API 计算
+ * @author: wenks
+ * @date: 2025/2/21 17:19
+ **/
+@Service
+@RequiredArgsConstructor
+public class ZiJinApiRequestImpl implements ZiJinApiRequest {
+
+    private final ZiJinApiRequestComponent ziJinApiRequestComponent;
+
+    @Override
+    public QuoteResultsVo quote(QuoteVo quoteVo) {
+        OrderBase order = quoteVo.getOrder();
+        AttributionInformationVo attributionInformationVo = order.getAttributionInformationVo();
+        // 配置信息
+        ZiJinApiConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(ZiJinApiConfigureParameters.class, attributionInformationVo.getConfigInfo());
+        HttpHeaders httpHeaders = ziJinApiRequestComponent.getHttpHeaders(parameters);
+        // 车型查询
+        CarInfoVo carInfoVo = quoteVo.getCarInfoVo();
+        ModelQueryRequest modelQueryRequest = ZiJinQuotationProcessConstruction.buildModelQueryRequest(parameters, carInfoVo.getVinNo(), carInfoVo.getBrandName());
+        ModelQueryResponse modelQueryResponse = ziJinApiRequestComponent.modelQuery(modelQueryRequest, httpHeaders);
+        ModelQueryResponse.VehicleModelInfosDTO vehicleModelInfosDTO = modelQueryResponse.getVehicleModelInfos().get(0);
+        // 计算车辆价格
+        QueryActualValueRequest queryActualValueRequest = ZiJinQuotationProcessConstruction.buildQueryActualValueRequest(carInfoVo, vehicleModelInfosDTO, "");
+        QueryActualValueResponse queryActualValueResponse = ziJinApiRequestComponent.queryActualValue(queryActualValueRequest, httpHeaders);
+        // 报价
+        CalculatePremiumRequest calculatePremiumRequest = ZiJinQuotationConstruction.buildCalculatePremiumRequest(modelQueryResponse.getOrderId(), modelQueryResponse.getOrderNo(), parameters, quoteVo);
+
+        return null;
+    }
+
+    @Override
+    public void underwriting(String subOrder) {
+
+    }
+
+    @Override
+    public String getPaymentLink(String subOrder) {
+        return "";
+    }
+
+    @Override
+    public void uploadImage(String subOrder) {
+
+    }
+
+    @Override
+    public void downloadPolicy(String subOrder) {
+
+    }
+
+}

+ 8 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/service/ZiJinApiRequest.java

@@ -0,0 +1,8 @@
+package com.jzg.quotation.zijin.api.service;
+
+import com.jzg.quotation.commons.service.QuotationApiBaseService;
+
+public interface ZiJinApiRequest extends QuotationApiBaseService {
+
+
+}