wks пре 1 година
родитељ
комит
9d46b12977
33 измењених фајлова са 825 додато и 218 уклоњено
  1. 1 0
      tenant/insurance/pom.xml
  2. 0 18
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/CaptchaIdentifyType.java
  3. 9 2
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/aggregated/QuoteVo.java
  4. 1 3
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/ExteriorUtilsRequest.java
  5. 11 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/QuotationApiBaseService.java
  6. 3 6
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/QuotationBaseService.java
  7. 3 5
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/impl/ExteriorUtilsRequestImpl.java
  8. 1 1
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/DaJiaQuotationApplication.java
  9. 75 22
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/component/DaJiaRequestComponent.java
  10. 49 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/converter/QuotationProcessConstruction.java
  11. 4 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/DaJiaCrawlerConfigureParameters.java
  12. 4 2
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/DaJiaCrawlerCarRequest.java
  13. 1 1
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/response/DaJiaCrawlerCarResponse.java
  14. 5 5
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/service/impl/DaJiaCrawlerRequestImpl.java
  15. 5 0
      tenant/insurance/quotation-summary/pom.xml
  16. 3 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/SummaryQuotationApplication.java
  17. 20 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsuranceCompanyRequestController.java
  18. 118 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/entity/po/QuoteKindConfig.java
  19. 210 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/entity/po/QuoteKindMapping.java
  20. 15 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/QuoteKindConfigMapper.java
  21. 18 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/QuoteKindMappingMapper.java
  22. 23 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsuranceCompanyRequestService.java
  23. 15 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/QuoteKindConfigService.java
  24. 24 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/QuoteKindMappingService.java
  25. 49 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsuranceCompanyRequestServiceImpl.java
  26. 22 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/QuoteKindConfigServiceImpl.java
  27. 42 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/QuoteKindMappingServiceImpl.java
  28. 16 0
      tenant/insurance/quotation-summary/src/main/resources/mapper/QuoteKindConfigMapper.xml
  29. 23 0
      tenant/insurance/quotation-summary/src/main/resources/mapper/QuoteKindMappingMapper.xml
  30. 28 0
      tenant/insurance/quotation-zhongmei/pom.xml
  31. 8 0
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quote/zhongmei/api/service/ZhongMeiApiRequest.java
  32. 19 0
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quote/zhongmei/api/service/impl/ZhongMeiApiRequestImpl.java
  33. 0 153
      tenant/insurance/yongcheng/dependency-reduced-pom.xml

+ 1 - 0
tenant/insurance/pom.xml

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

+ 0 - 18
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/CaptchaIdentifyType.java

@@ -1,18 +0,0 @@
-package com.jzg.quotation.commons.constant.enums;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-@AllArgsConstructor
-@Getter
-public enum CaptchaIdentifyType {
-
-    TYPE_1("1", "计算型"),
-    TYPE_2("2", "文字行"),
-    ;
-
-    private final String code;
-
-    private final String desc;
-
-}

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

@@ -14,11 +14,18 @@ import java.util.List;
 @AllArgsConstructor
 @NoArgsConstructor
 @Data
-public class QuoteVo implements Serializable   {
+public class QuoteVo implements Serializable {
 
     @Serial
     private static final long serialVersionUID = 1928126868229420046L;
-
+    /**
+     * 交互唯一订单
+     */
+    private String ordersNo;
+    /**
+     * 保险公司代码
+     */
+    private String insuranceCompanyCode;
     /**
      * 归属信息
      */

+ 1 - 3
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/ExteriorUtilsRequest.java

@@ -1,8 +1,6 @@
 package com.jzg.quotation.commons.service;
 
 
-import com.jzg.quotation.commons.constant.enums.CaptchaIdentifyType;
-
 /**
  * @description: 外部工具请求 用于封装一些公用的请求地址
  * @author: wenks
@@ -16,7 +14,7 @@ public interface ExteriorUtilsRequest {
      * @param base64 base64信息
      * @return 识别出来的验证码
      */
-    String captchaIdentify(String base64String, CaptchaIdentifyType captchaIdentifyType);
+    String captchaIdentify(String base64String);
 
     /**
      * 转保验证码识别

+ 11 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/QuotationApiBaseService.java

@@ -0,0 +1,11 @@
+package com.jzg.quotation.commons.service;
+
+
+/**
+ * @description: api报价基类
+ * @author: wenks
+ * @date: 2025/2/20 14:15
+ **/
+public interface QuotationApiBaseService extends QuotationBaseService {
+
+}

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

@@ -2,6 +2,7 @@ package com.jzg.quotation.commons.service;
 
 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 lombok.Data;
 
 /**
@@ -19,21 +20,17 @@ public interface QuotationBaseService {
      */
     QuoteResultsVo quote(QuoteVo quoteVo);
     /**
-     * 获取特别约定列表
+     * 提交核保
      */
-
     /**
-     * 提交核保
+     * 获取支付链接
      */
-
     /**
      * 上传影像
      */
-
     /**
      * 下载保单
      */
-
     /**
      * 查询订单状态
      */

+ 3 - 5
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/impl/ExteriorUtilsRequestImpl.java

@@ -1,7 +1,6 @@
 package com.jzg.quotation.commons.service.impl;
 
 import com.jzg.quotation.commons.component.RequestComponent;
-import com.jzg.quotation.commons.constant.enums.CaptchaIdentifyType;
 import com.jzg.quotation.commons.constant.enums.base.ExpenseRequestUrl;
 import com.jzg.quotation.commons.properties.CaptchaRecognitionProperties;
 import com.jzg.quotation.commons.service.ExteriorUtilsRequest;
@@ -19,7 +18,7 @@ public class ExteriorUtilsRequestImpl implements ExteriorUtilsRequest {
 
     private final CaptchaRecognitionProperties captchaRecognitionProperties;
 
-    private String prefixToRemove(String base64String){
+    private String prefixToRemove(String base64String) {
         final String prefixStr = "base64,";
         int i = base64String.indexOf(prefixStr);
         if (i != -1) {
@@ -29,12 +28,11 @@ public class ExteriorUtilsRequestImpl implements ExteriorUtilsRequest {
     }
 
     @Override
-    public String captchaIdentify(String base64String, CaptchaIdentifyType captchaIdentifyType) {
+    public String captchaIdentify(String base64String) {
         base64String = prefixToRemove(base64String);
         ExpenseRequestUrl captcha = ExpenseRequestUrl.CAPTCHA_IDENTIFY;
         String url = ExpenseRequestUrl.getUrl(captchaRecognitionProperties.getRecognitionUrl(), captcha.getUri());
-        String s = requestComponent.objectPost(url, Map.of("", base64String), captcha.getDescription(), String.class);
-        return s;
+        return requestComponent.objectPost(url, Map.of("", base64String), captcha.getDescription(), String.class);
     }
 
     @Override

+ 1 - 1
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/DaJiaQuotationApplication.java

@@ -7,7 +7,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.context.annotation.ComponentScan;
 
 @SpringBootApplication
-@ComponentScan(basePackages = {"com.jzg.quotation.dajia", "com.jzg.quotation.commons", "com.jzg.commons"})
+@ComponentScan(basePackages = {"com.jzg.*"})
 @MapperScan("com.jzg.commons.mapper")
 public class DaJiaQuotationApplication {
 

+ 75 - 22
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/component/DaJiaRequestComponent.java

@@ -5,7 +5,6 @@ import com.alibaba.fastjson2.JSON;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.quotation.commons.component.RequestComponent;
 import com.jzg.quotation.commons.constant.CacheConstant;
-import com.jzg.quotation.commons.constant.enums.CaptchaIdentifyType;
 import com.jzg.quotation.commons.service.ExteriorUtilsRequest;
 import com.jzg.quotation.commons.standard.CrawlerRequestUrlStandard;
 import com.jzg.quotation.dajia.crawler.constant.enums.RequestUrl;
@@ -14,7 +13,6 @@ import com.jzg.quotation.dajia.crawler.entity.response.*;
 import com.jzg.quotation.dajia.crawler.utils.DESEncryption;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.redisson.api.RBucket;
 import org.redisson.api.RedissonClient;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
@@ -40,31 +38,80 @@ public class DaJiaRequestComponent {
 
     private final ExteriorUtilsRequest exteriorUtilsRequest;
 
+    // 循环次数
+    public static final int CIRCULATE_NUMBER = 3;
+    // 登陆次数
+    public static final int LOGINS_NUMBER = 3;
+
+    public int processCaptcha(String res) {
+        // 检查字符串长度是否足够,并且第三个字符不是'='
+        if (res.length() >= 3 && res.charAt(2) != '=') {
+            char operator = res.charAt(1);
+            try {
+                int operand1 = Integer.parseInt(res.substring(0, 1));
+                int operand2 = Integer.parseInt(res.substring(2, 3));
+                // 注意:这里假设操作符和操作数都是有效的,实际应用中应该添加更多的错误处理
+
+                switch (operator) {
+                    case '+':
+                    case 'f': // 通常'f'不是加法运算符,但根据原代码保留
+                        return operand1 + operand2;
+                    case 'x':
+                    case 'X':
+                    case '4': // 通常'4'不是乘法运算符,但保留以匹配原代码
+                    case '9': // 通常'9'也不是乘法运算符,但保留以匹配原代码
+                        return operand1 * operand2;
+                    case '-':
+                    case 'e': // 通常'e'不是减法运算符,但根据原代码保留
+                    case '=': // 通常'='不是减法运算符,但根据原代码保留
+                    case '2': // 通常'2'也不是减法运算符,但根据原代码保留
+                        return operand1 - operand2;
+                    // 如果操作符不匹配,则获取新的验证码图片(模拟)
+                }
+            } catch (NumberFormatException ignored) {
+            }
+        }
+        throw new SystemException("");
+    }
+
     /**
      * 验证码
      *
      * @return
      */
-    public DaJiaCrawlerCaptchaResponse captcha() {
+    public DaJiaCrawlerCaptchaResponse captcha(int frequency) {
+        if (frequency <= 0) {
+            throw new SystemException("验证码异常");
+        }
         Map<String, Object> map = Map.of("imgId", UUID.randomUUID().toString().replaceAll("-", ""));
         // 请求
         DaJiaCrawlerBaseResponse request = requestComponent.requestGET(RequestUrl.BASE_URL, RequestUrl.CAPTCHA, map, DaJiaCrawlerBaseResponse.class);
         String decrypt = DESEncryption.decrypt(request.getResult());
-        return JSON.parseObject(decrypt, DaJiaCrawlerCaptchaResponse.class);
+        DaJiaCrawlerCaptchaResponse daJiaCrawlerCaptchaResponse = JSON.parseObject(decrypt, DaJiaCrawlerCaptchaResponse.class);
+        // 识别验证码
+        String s = exteriorUtilsRequest.captchaIdentify(daJiaCrawlerCaptchaResponse.getImg());
+        try {
+            int i = processCaptcha(s);
+            s = String.valueOf(i);
+        } catch (Exception e) {
+            frequency = frequency - 1;
+            return captcha(frequency);
+        }
+        daJiaCrawlerCaptchaResponse.setImg(s);
+        return daJiaCrawlerCaptchaResponse;
     }
 
     /**
-     * 登录
+     * 登录次数
      *
-     * @param request 登录请求体
+     * @param username     用户名
+     * @param password     密码
+     * @param loginsNumber 登录次数
      * @return token
      */
-    public String authenticate(String username, String password) {
+    public String authenticate(String username, String password, int loginsNumber) {
         // 登录验证码获取
-        DaJiaCrawlerCaptchaResponse captcha = captcha();
-        // 识别验证码
-        String s = exteriorUtilsRequest.captchaIdentify(captcha.getImg(), CaptchaIdentifyType.TYPE_1);
-        captcha.setImg(s);
+        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);
@@ -72,23 +119,29 @@ public class DaJiaRequestComponent {
         String authorization = responseEntity.getHeaders().getFirst(HttpHeaders.AUTHORIZATION);
         // 判断请求是否成功和授权码是否返回
         if (HttpStatus.OK.value() != statusCode.value() && !StringUtils.hasLength(authorization)) {
-            String message = Optional.ofNullable(responseEntity.getBody())
-                    .map(DaJiaCrawlerBaseResponse::getMessage)
-                    .orElseThrow(() -> new SystemException("登录失败"));
-            throw new SystemException(message);
+            loginsNumber = loginsNumber - 1;
+            if (loginsNumber <= 0) {
+                String message = Optional.ofNullable(responseEntity.getBody())
+                        .map(DaJiaCrawlerBaseResponse::getMessage)
+                        .orElseThrow(() -> new SystemException("登录失败"));
+                throw new SystemException(message);
+            }
+            return authenticate(username, password, loginsNumber);
         }
         redissonClient.getBucket(CacheConstant.DAJIA_AUTHORIZATION + username).set(authorization, Duration.ofHours(CacheConstant.DAJIA_AUTHORIZATION_TIME));
         return authorization;
     }
 
+
     /**
      * 获取请求头
+     *
      * @return
      */
-    public HttpHeaders getHeaders(String username, String password){
+    public HttpHeaders getHeaders(String username, String password) {
         String authorization = (String) redissonClient.getBucket(CacheConstant.DAJIA_AUTHORIZATION).get();
-        if(!StringUtils.hasLength(authorization)){
-            authorization = authenticate(username, password);
+        if (!StringUtils.hasLength(authorization)) {
+            authorization = authenticate(username, password, LOGINS_NUMBER);
         }
         HttpHeaders headers = new HttpHeaders();
         headers.set(HttpHeaders.AUTHORIZATION + password, authorization);
@@ -104,18 +157,19 @@ public class DaJiaRequestComponent {
     public <DaJiaResponse> DaJiaResponse request(CrawlerRequestUrlStandard crawlerRequestUrlStandard, Object request, Class<DaJiaResponse> responseClass, HttpHeaders headers) {
         ResponseEntity<DaJiaCrawlerBaseResponse> responseEntity = requestComponent.objectPost(crawlerRequestUrlStandard, request, DaJiaCrawlerBaseResponse.class, headers);
         DaJiaCrawlerBaseResponse daJiaCrawlerBaseResponse = responseEntity.getBody();
-
         String decrypt = DESEncryption.decrypt(daJiaCrawlerBaseResponse.getResult());
         return JSON.parseObject(decrypt, responseClass);
     }
 
     /**
      * 车型查询
+     *
      * @param daJiaCrawlerCarRequest 车型查询请求体
-     * @param headers 请求头
+     * @param headers                请求头
      * @return 车型列表
      */
-    public List<DaJiaCrawlerCarResponse.ListDTO> car(DaJiaCrawlerCarRequest daJiaCrawlerCarRequest, HttpHeaders headers){
+    public List<DaJiaCrawlerCarResponse.ListDTO> car(DaJiaCrawlerCarRequest daJiaCrawlerCarRequest, HttpHeaders
+            headers) {
         DaJiaCrawlerCarResponse request = request(RequestUrl.CAR, daJiaCrawlerCarRequest, DaJiaCrawlerCarResponse.class, headers);
         return request.getList();
     }
@@ -156,5 +210,4 @@ public class DaJiaRequestComponent {
     }
 
 
-
 }

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

@@ -0,0 +1,49 @@
+package com.jzg.quotation.dajia.crawler.converter;
+
+
+import com.jzg.quotation.commons.entity.vo.quote.CarInfoVo;
+import com.jzg.quotation.dajia.crawler.entity.request.DaJiaCrawlerActualValueRequest;
+import com.jzg.quotation.dajia.crawler.entity.request.DaJiaCrawlerCarRequest;
+import com.jzg.quotation.dajia.crawler.entity.response.DaJiaCrawlerCarResponse;
+
+/**
+ * @description: 大家财险 报价过程构建
+ * @author: wenks
+ * @date: 2025/2/20 9:15
+ **/
+public class QuotationProcessConstruction {
+
+
+    public static DaJiaCrawlerCarRequest daJiaCrawlerCarRequestBuilder(CarInfoVo carInfoVo) {
+        DaJiaCrawlerCarRequest crawlerCarRequest = new DaJiaCrawlerCarRequest();
+        crawlerCarRequest.setPageNo(1);
+        crawlerCarRequest.setPageSize(30);
+        crawlerCarRequest.setVehicleName(carInfoVo.getBrandName());
+        crawlerCarRequest.setAreaCode("");
+        crawlerCarRequest.setOrderNo("");
+        crawlerCarRequest.setDptCode("");
+        crawlerCarRequest.setEngineNo(carInfoVo.getEngineNo());
+        crawlerCarRequest.setVin(carInfoVo.getVinNo());
+        crawlerCarRequest.setLicensePlateNo(carInfoVo.getLicenseNo());
+        crawlerCarRequest.setQueryMod("1");
+        crawlerCarRequest.setOperatorCode("");
+        return crawlerCarRequest;
+    }
+
+    public static DaJiaCrawlerActualValueRequest daJiaCrawlerActualValueRequestBuilder(DaJiaCrawlerCarResponse.ListDTO car, CarInfoVo carInfoVo) {
+        DaJiaCrawlerActualValueRequest crawlerActualValueRequest = new DaJiaCrawlerActualValueRequest();
+        crawlerActualValueRequest.setPurchaseValue(car.getVehiclePrice());
+        crawlerActualValueRequest.setRegisterDate("");
+        crawlerActualValueRequest.setRideKind("");
+        crawlerActualValueRequest.setStartDate("");
+        crawlerActualValueRequest.setUsage("");
+        crawlerActualValueRequest.setVehicleName("");
+        crawlerActualValueRequest.setFuelType("");
+        crawlerActualValueRequest.setCombineProductCode("");
+        crawlerActualValueRequest.setSeatNumber(carInfoVo.getSeatCount());
+        crawlerActualValueRequest.setModelEnergyType("");
+        crawlerActualValueRequest.setOperatorCode("");
+        return crawlerActualValueRequest;
+    }
+
+}

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

@@ -21,4 +21,8 @@ public class DaJiaCrawlerConfigureParameters implements ConfigureParameters {
     @Serial
     private static final long serialVersionUID = -4576395685599605562L;
 
+
+
+
+
 }

+ 4 - 2
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/DaJiaCrawlerCarRequest.java

@@ -27,7 +27,9 @@ public class DaJiaCrawlerCarRequest implements Serializable {
 
     @JsonProperty("areaCode")
     private String areaCode;
-
+    /**
+     * 订单号 可以为空
+     */
     @JsonProperty("orderNo")
     private String orderNo;
 
@@ -49,7 +51,7 @@ public class DaJiaCrawlerCarRequest implements Serializable {
     @JsonProperty("licensePlateNo")
     private String licensePlateNo;
     /**
-     * 好牌种类
+     * 号牌种类
      */
     @JsonProperty("queryMod")
     private String queryMod;

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

@@ -82,7 +82,7 @@ public class DaJiaCrawlerCarResponse implements Serializable {
         @JsonProperty("qualityMin")
         private Integer qualityMin;
         @JsonProperty("vehiclePrice")
-        private Integer vehiclePrice;
+        private String vehiclePrice;
         @JsonProperty("vehiclePriceTax1")
         private String vehiclePriceTax1;
         @JsonProperty("factoryId")

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

@@ -9,6 +9,7 @@ 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.converter.DaJiaCrawlerQuoteResultsConverter;
+import com.jzg.quotation.dajia.crawler.converter.QuotationProcessConstruction;
 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;
@@ -21,7 +22,7 @@ import org.springframework.stereotype.Service;
 
 import java.util.List;
 
-@Service
+@Service("DJPC")
 @RequiredArgsConstructor
 public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
 
@@ -29,7 +30,7 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
 
     @Override
     public void login(LoginBase loginBase) {
-        daJiaRequestComponent.authenticate(loginBase.getUsername(), loginBase.getUsername());
+        daJiaRequestComponent.authenticate(loginBase.getUsername(), loginBase.getUsername(), DaJiaRequestComponent.LOGINS_NUMBER);
     }
 
     @Override
@@ -41,11 +42,10 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
         DaJiaCrawlerConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(DaJiaCrawlerConfigureParameters.class, attributionInformationVo.getConfigInfo());
 
         // 车型查询
-        CarInfoVo carInfoVo = quoteVo.getCarInfoVo();
-        DaJiaCrawlerCarRequest daJiaCrawlerCarRequest = new DaJiaCrawlerCarRequest();
-
+        DaJiaCrawlerCarRequest daJiaCrawlerCarRequest = QuotationProcessConstruction.daJiaCrawlerCarRequestBuilder(quoteVo.getCarInfoVo());
         List<DaJiaCrawlerCarResponse.ListDTO> car = daJiaRequestComponent.car(daJiaCrawlerCarRequest, headers);
         // 获取相同的车型
+        DaJiaCrawlerCarResponse.ListDTO listDTO = car.get(0);
 
         // 计算折旧价格
         DaJiaCrawlerActualValueRequest daJiaCrawlerActualValueRequest = new DaJiaCrawlerActualValueRequest();

+ 5 - 0
tenant/insurance/quotation-summary/pom.xml

@@ -23,6 +23,11 @@
             <artifactId>quotation-dajia</artifactId>
             <version>1.0-SNAPSHOT</version>
         </dependency>
+        <dependency>
+            <groupId>com.jzg</groupId>
+            <artifactId>quotation-zhongmei</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
     </dependencies>
 
 </project>

+ 3 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/SummaryQuotationApplication.java

@@ -3,7 +3,10 @@ package com.jzg.quotation.summary;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.stereotype.Component;
 
+@ComponentScan(basePackages = {"com.jzg.quotation.*"})
 @SpringBootApplication
 public class SummaryQuotationApplication {
 

+ 20 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsuranceCompanyRequestController.java

@@ -0,0 +1,20 @@
+package com.jzg.quotation.summary.controller;
+
+
+import com.jzg.quotation.summary.service.InsuranceCompanyRequestService;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/insurance/service")
+@Tag(name = "账号归属配置")
+@RequiredArgsConstructor
+public class InsuranceCompanyRequestController {
+
+    private final InsuranceCompanyRequestService insuranceCompanyRequestService;
+
+
+
+}

+ 118 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/entity/po/QuoteKindConfig.java

@@ -0,0 +1,118 @@
+package com.jzg.quotation.summary.entity.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+
+/**
+ * 报价险种规则配置
+ * @TableName quote_kind_config
+ */
+@TableName(value ="quote_kind_config")
+public class QuoteKindConfig implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 分类代码
+     */
+    @TableField(value = "group_code")
+    private String groupCode;
+
+    /**
+     * 分类名称
+     */
+    @TableField(value = "group_name")
+    private String groupName;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    public Integer getId() {
+        return id;
+    }
+
+    /**
+     * 主键
+     */
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    /**
+     * 分类代码
+     */
+    public String getGroupCode() {
+        return groupCode;
+    }
+
+    /**
+     * 分类代码
+     */
+    public void setGroupCode(String groupCode) {
+        this.groupCode = groupCode;
+    }
+
+    /**
+     * 分类名称
+     */
+    public String getGroupName() {
+        return groupName;
+    }
+
+    /**
+     * 分类名称
+     */
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        QuoteKindConfig other = (QuoteKindConfig) that;
+        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+            && (this.getGroupCode() == null ? other.getGroupCode() == null : this.getGroupCode().equals(other.getGroupCode()))
+            && (this.getGroupName() == null ? other.getGroupName() == null : this.getGroupName().equals(other.getGroupName()));
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+        result = prime * result + ((getGroupCode() == null) ? 0 : getGroupCode().hashCode());
+        result = prime * result + ((getGroupName() == null) ? 0 : getGroupName().hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", groupCode=").append(groupCode);
+        sb.append(", groupName=").append(groupName);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 210 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/entity/po/QuoteKindMapping.java

@@ -0,0 +1,210 @@
+package com.jzg.quotation.summary.entity.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+
+/**
+ * 报价险种映射
+ * @TableName quote_kind_mapping
+ */
+@TableName(value ="quote_kind_mapping")
+public class QuoteKindMapping implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 保险公司编码
+     */
+    @TableField(value = "insurance_company_code")
+    private String insuranceCompanyCode;
+
+    /**
+     * 分类代码
+     */
+    @TableField(value = "group_code")
+    private String groupCode;
+
+    /**
+     * 分类名称
+     */
+    @TableField(value = "group_name")
+    private String groupName;
+
+    /**
+     * 险种
+     */
+    @TableField(value = "insurance")
+    private String insurance;
+
+    /**
+     * 保险公司编码
+     */
+    @TableField(value = "insurance_code")
+    private String insuranceCode;
+
+    /**
+     * 默认代码
+     */
+    @TableField(value = "platform_code")
+    private String platformCode;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    public Integer getId() {
+        return id;
+    }
+
+    /**
+     * 主键
+     */
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    /**
+     * 保险公司编码
+     */
+    public String getInsuranceCompanyCode() {
+        return insuranceCompanyCode;
+    }
+
+    /**
+     * 保险公司编码
+     */
+    public void setInsuranceCompanyCode(String insuranceCompanyCode) {
+        this.insuranceCompanyCode = insuranceCompanyCode;
+    }
+
+    /**
+     * 分类代码
+     */
+    public String getGroupCode() {
+        return groupCode;
+    }
+
+    /**
+     * 分类代码
+     */
+    public void setGroupCode(String groupCode) {
+        this.groupCode = groupCode;
+    }
+
+    /**
+     * 分类名称
+     */
+    public String getGroupName() {
+        return groupName;
+    }
+
+    /**
+     * 分类名称
+     */
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    /**
+     * 险种
+     */
+    public String getInsurance() {
+        return insurance;
+    }
+
+    /**
+     * 险种
+     */
+    public void setInsurance(String insurance) {
+        this.insurance = insurance;
+    }
+
+    /**
+     * 保险公司编码
+     */
+    public String getInsuranceCode() {
+        return insuranceCode;
+    }
+
+    /**
+     * 保险公司编码
+     */
+    public void setInsuranceCode(String insuranceCode) {
+        this.insuranceCode = insuranceCode;
+    }
+
+    /**
+     * 默认代码
+     */
+    public String getPlatformCode() {
+        return platformCode;
+    }
+
+    /**
+     * 默认代码
+     */
+    public void setPlatformCode(String platformCode) {
+        this.platformCode = platformCode;
+    }
+
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        QuoteKindMapping other = (QuoteKindMapping) that;
+        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+            && (this.getInsuranceCompanyCode() == null ? other.getInsuranceCompanyCode() == null : this.getInsuranceCompanyCode().equals(other.getInsuranceCompanyCode()))
+            && (this.getGroupCode() == null ? other.getGroupCode() == null : this.getGroupCode().equals(other.getGroupCode()))
+            && (this.getGroupName() == null ? other.getGroupName() == null : this.getGroupName().equals(other.getGroupName()))
+            && (this.getInsurance() == null ? other.getInsurance() == null : this.getInsurance().equals(other.getInsurance()))
+            && (this.getInsuranceCode() == null ? other.getInsuranceCode() == null : this.getInsuranceCode().equals(other.getInsuranceCode()))
+            && (this.getPlatformCode() == null ? other.getPlatformCode() == null : this.getPlatformCode().equals(other.getPlatformCode()));
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+        result = prime * result + ((getInsuranceCompanyCode() == null) ? 0 : getInsuranceCompanyCode().hashCode());
+        result = prime * result + ((getGroupCode() == null) ? 0 : getGroupCode().hashCode());
+        result = prime * result + ((getGroupName() == null) ? 0 : getGroupName().hashCode());
+        result = prime * result + ((getInsurance() == null) ? 0 : getInsurance().hashCode());
+        result = prime * result + ((getInsuranceCode() == null) ? 0 : getInsuranceCode().hashCode());
+        result = prime * result + ((getPlatformCode() == null) ? 0 : getPlatformCode().hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", insuranceCompanyCode=").append(insuranceCompanyCode);
+        sb.append(", groupCode=").append(groupCode);
+        sb.append(", groupName=").append(groupName);
+        sb.append(", insurance=").append(insurance);
+        sb.append(", insuranceCode=").append(insuranceCode);
+        sb.append(", platformCode=").append(platformCode);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 15 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/QuoteKindConfigMapper.java

@@ -0,0 +1,15 @@
+package com.jzg.quotation.summary.mapper;
+
+import com.jzg.quotation.summary.entity.po.QuoteKindConfig;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author Administrator
+* @description 针对表【quote_kind_config(报价险种规则配置)】的数据库操作Mapper
+* @createDate 2025-02-20 11:00:39
+* @Entity generator.domain.QuoteKindConfig
+*/
+public interface QuoteKindConfigMapper extends BaseMapper<QuoteKindConfig> {
+
+}
+

+ 18 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/QuoteKindMappingMapper.java

@@ -0,0 +1,18 @@
+package com.jzg.quotation.summary.mapper;
+
+import com.jzg.quotation.summary.entity.po.QuoteKindMapping;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author Administrator
+* @description 针对表【quote_kind_mapping(报价险种映射)】的数据库操作Mapper
+* @createDate 2025-02-20 11:00:39
+* @Entity generator.domain.QuoteKindMapping
+*/
+public interface QuoteKindMappingMapper extends BaseMapper<QuoteKindMapping> {
+
+}
+
+
+
+

+ 23 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsuranceCompanyRequestService.java

@@ -0,0 +1,23 @@
+package com.jzg.quotation.summary.service;
+
+
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+
+/**
+ * @description: 保险公司请求服务
+ * @author: wenks
+ * @date: 2025/2/20 11:42
+ **/
+public interface InsuranceCompanyRequestService {
+
+    /**
+     * 报价
+     *
+     * @param quoteVo 报价实体
+     * @return 报价信息
+     */
+    QuoteResultsVo quote(QuoteVo quoteVo);
+
+
+}

+ 15 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/QuoteKindConfigService.java

@@ -0,0 +1,15 @@
+package com.jzg.quotation.summary.service;
+
+import com.jzg.quotation.summary.entity.po.QuoteKindConfig;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+* @author Administrator
+* @description 针对表【quote_kind_config(报价险种规则配置)】的数据库操作Service
+* @createDate 2025-02-20 11:00:39
+*/
+public interface QuoteKindConfigService extends IService<QuoteKindConfig> {
+
+
+
+}

+ 24 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/QuoteKindMappingService.java

@@ -0,0 +1,24 @@
+package com.jzg.quotation.summary.service;
+
+import com.jzg.quotation.summary.entity.po.QuoteKindMapping;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
+
+/**
+* @author Administrator
+* @description 针对表【quote_kind_mapping(报价险种映射)】的数据库操作Service
+* @createDate 2025-02-20 11:00:39
+*/
+public interface QuoteKindMappingService extends IService<QuoteKindMapping> {
+
+    /**
+     * 获取数据库中的映射关系
+     * @param insuranceCompanyCode 保险公司code
+     * @param groupCode 分组code
+     * @return 映射关系
+     */
+    Map<String, QuoteKindMapping> getByGroupCode(String insuranceCompanyCode, String groupCode);
+
+
+}

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

@@ -0,0 +1,49 @@
+package com.jzg.quotation.summary.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.quote.CarInfoVo;
+import com.jzg.quotation.commons.entity.vo.quote.KindInfoVo;
+import com.jzg.quotation.commons.service.QuotationApiBaseService;
+import com.jzg.quotation.commons.service.QuotationCrawlerBaseService;
+import com.jzg.quotation.summary.entity.po.QuoteKindMapping;
+import com.jzg.quotation.summary.service.InsuranceCompanyRequestService;
+import com.jzg.quotation.summary.service.QuoteKindMappingService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @description: TODO
+ * @author: wenks
+ * @date: 2025/2/20 11:43
+ **/
+@Service
+@RequiredArgsConstructor
+public class InsuranceCompanyRequestServiceImpl implements InsuranceCompanyRequestService {
+
+    private final QuoteKindMappingService quoteKindMappingService;
+
+//    private final Map<String, QuotationApiBaseService> quoteApiBaseServiceMap;
+
+    private final Map<String, QuotationCrawlerBaseService> quotationCrawlerBaseServiceMap;
+
+    @Override
+    public QuoteResultsVo quote(QuoteVo quoteVo) {
+        CarInfoVo carInfoVo = quoteVo.getCarInfoVo();
+        String insuranceCompanyCode = quoteVo.getInsuranceCompanyCode();
+        Map<String, QuoteKindMapping> quoteKindMappingMap = quoteKindMappingService.getByGroupCode(insuranceCompanyCode, "");
+        // 替换保险公司的险种代码
+        List<KindInfoVo> kindInfoVo = quoteVo.getKindInfoVo();
+        kindInfoVo.forEach(kind -> {
+            QuoteKindMapping quoteKindMapping = quoteKindMappingMap.get(kind.getKindCode());
+            kind.setKindCode(quoteKindMapping.getInsuranceCode());
+            kind.setKindName(quoteKindMapping.getInsurance());
+        });
+
+        return null;
+    }
+
+}

+ 22 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/QuoteKindConfigServiceImpl.java

@@ -0,0 +1,22 @@
+package com.jzg.quotation.summary.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.quotation.summary.entity.po.QuoteKindConfig;
+import com.jzg.quotation.summary.mapper.QuoteKindConfigMapper;
+import com.jzg.quotation.summary.service.QuoteKindConfigService;
+import org.springframework.stereotype.Service;
+
+/**
+* @author Administrator
+* @description 针对表【quote_kind_config(报价险种规则配置)】的数据库操作Service实现
+* @createDate 2025-02-20 11:00:39
+*/
+@Service
+public class QuoteKindConfigServiceImpl extends ServiceImpl<QuoteKindConfigMapper, QuoteKindConfig>
+    implements QuoteKindConfigService{
+
+}
+
+
+
+

+ 42 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/QuoteKindMappingServiceImpl.java

@@ -0,0 +1,42 @@
+package com.jzg.quotation.summary.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.exception.SystemException;
+import com.jzg.quotation.summary.entity.po.QuoteKindMapping;
+import com.jzg.quotation.summary.service.QuoteKindMappingService;
+import com.jzg.quotation.summary.mapper.QuoteKindMappingMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @author Administrator
+ * @description 针对表【quote_kind_mapping(报价险种映射)】的数据库操作Service实现
+ * @createDate 2025-02-20 11:00:39
+ */
+@Service
+public class QuoteKindMappingServiceImpl extends ServiceImpl<QuoteKindMappingMapper, QuoteKindMapping>
+        implements QuoteKindMappingService {
+
+    @Override
+    public Map<String, QuoteKindMapping> getByGroupCode(String insuranceCompanyCode, String groupCode) {
+        List<QuoteKindMapping> list = lambdaQuery()
+                .eq(QuoteKindMapping::getInsuranceCompanyCode, insuranceCompanyCode)
+                .eq(QuoteKindMapping::getGroupCode, groupCode)
+                .list();
+        if (list.isEmpty()) {
+            throw new SystemException("该保险公司未配置险种映射");
+        }
+        return list.stream()
+                .filter(quoteKindMapping -> StringUtils.hasLength(quoteKindMapping.getPlatformCode()))
+                .collect(Collectors.toMap(QuoteKindMapping::getPlatformCode, x -> x));
+    }
+
+}
+
+
+
+

+ 16 - 0
tenant/insurance/quotation-summary/src/main/resources/mapper/QuoteKindConfigMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jzg.quotation.summary.mapper.QuoteKindConfigMapper">
+
+    <resultMap id="BaseResultMap" type="com.jzg.quotation.summary.entity.po.QuoteKindConfig">
+            <id property="id" column="id" jdbcType="INTEGER"/>
+            <result property="groupCode" column="group_code" jdbcType="VARCHAR"/>
+            <result property="groupName" column="group_name" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,group_code,group_name
+    </sql>
+</mapper>

+ 23 - 0
tenant/insurance/quotation-summary/src/main/resources/mapper/QuoteKindMappingMapper.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jzg.quotation.summary.mapper.QuoteKindMappingMapper">
+
+    <resultMap id="BaseResultMap" type="com.jzg.quotation.summary.entity.po.QuoteKindMapping">
+            <id property="id" column="id" jdbcType="INTEGER"/>
+            <result property="insuranceCompanyCode" column="insurance_company_code" jdbcType="VARCHAR"/>
+            <result property="groupCode" column="group_code" jdbcType="VARCHAR"/>
+            <result property="groupName" column="group_name" jdbcType="VARCHAR"/>
+            <result property="insurance" column="insurance" jdbcType="VARCHAR"/>
+            <result property="insuranceCode" column="insurance_code" jdbcType="VARCHAR"/>
+            <result property="platformCode" column="platform_code" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,insurance_company_code,group_code,
+        group_name,insurance,insurance_code,
+        platform_code
+    </sql>
+
+</mapper>

+ 28 - 0
tenant/insurance/quotation-zhongmei/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-zhongmei</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>

+ 8 - 0
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quote/zhongmei/api/service/ZhongMeiApiRequest.java

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

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

@@ -0,0 +1,19 @@
+package com.jzg.quote.zhongmei.api.service.impl;
+
+
+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
+@RequiredArgsConstructor
+public class ZhongMeiApiRequestImpl implements ZhongMeiApiRequest {
+
+    @Override
+    public QuoteResultsVo quote(QuoteVo quoteVo) {
+        return null;
+    }
+
+}

+ 0 - 153
tenant/insurance/yongcheng/dependency-reduced-pom.xml

@@ -1,153 +0,0 @@
-<?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/maven-v4_0_0.xsd">
-  <parent>
-    <artifactId>insurance</artifactId>
-    <groupId>com.jzg</groupId>
-    <version>1.0-SNAPSHOT</version>
-  </parent>
-  <modelVersion>4.0.0</modelVersion>
-  <artifactId>yongcheng</artifactId>
-  <name>yongcheng Maven Webapp</name>
-  <url>http://maven.apache.org</url>
-  <build>
-    <finalName>yongcheng</finalName>
-  </build>
-  <dependencies>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>3.8.1</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.fasterxml.jackson.dataformat</groupId>
-      <artifactId>jackson-dataformat-xml</artifactId>
-      <version>2.9.0</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-webflux</artifactId>
-      <version>3.0.0</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>io.projectreactor.netty</groupId>
-      <artifactId>reactor-netty-core</artifactId>
-      <version>1.1.0</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>mysql</groupId>
-      <artifactId>mysql-connector-java</artifactId>
-      <version>8.0.26</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.baomidou</groupId>
-      <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
-      <version>3.5.7</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.baomidou</groupId>
-      <artifactId>mybatis-plus</artifactId>
-      <version>3.5.7</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.baomidou</groupId>
-      <artifactId>mybatis-plus-extension</artifactId>
-      <version>3.5.7</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.jzg</groupId>
-      <artifactId>commons</artifactId>
-      <version>1.0-SNAPSHOT</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.projectlombok</groupId>
-      <artifactId>lombok</artifactId>
-      <version>1.18.24</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-test</artifactId>
-      <version>3.0.0</version>
-      <scope>test</scope>
-      <exclusions>
-        <exclusion>
-          <artifactId>spring-boot-test</artifactId>
-          <groupId>org.springframework.boot</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>spring-boot-test-autoconfigure</artifactId>
-          <groupId>org.springframework.boot</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>json-path</artifactId>
-          <groupId>com.jayway.jsonpath</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>assertj-core</artifactId>
-          <groupId>org.assertj</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>hamcrest</artifactId>
-          <groupId>org.hamcrest</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>junit-jupiter</artifactId>
-          <groupId>org.junit.jupiter</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>mockito-core</artifactId>
-          <groupId>org.mockito</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>mockito-junit-jupiter</artifactId>
-          <groupId>org.mockito</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>jsonassert</artifactId>
-          <groupId>org.skyscreamer</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>spring-test</artifactId>
-          <groupId>org.springframework</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>xmlunit-core</artifactId>
-          <groupId>org.xmlunit</groupId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-aop</artifactId>
-      <version>3.0.0</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-validation</artifactId>
-      <version>3.0.0</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.springframework.statemachine</groupId>
-      <artifactId>spring-statemachine-core</artifactId>
-      <version>4.0.0</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.alibaba</groupId>
-      <artifactId>fastjson</artifactId>
-      <version>2.0.43</version>
-      <scope>provided</scope>
-    </dependency>
-  </dependencies>
-</project>