Kaynağa Gözat

1.国任增加特别约定

wks 2 yıl önce
ebeveyn
işleme
0456ff2280
18 değiştirilmiş dosya ile 458 ekleme ve 109 silme
  1. 20 3
      src/main/java/com/ydtech/constants/enums/InsuranceRisk.java
  2. 9 0
      src/main/java/com/ydtech/modules/admin/controller/SysUserController.java
  3. 13 12
      src/main/java/com/ydtech/modules/admin/service/impl/SysAreaServiceImpl.java
  4. 94 45
      src/main/java/com/ydtech/modules/ins/model/guoren/PremiumReq.java
  5. 10 3
      src/main/java/com/ydtech/modules/order/controller/GuoRenOrderApiController.java
  6. 28 0
      src/main/java/com/ydtech/modules/order/entity/api/guoren/constants/GuoRenRiskCode.java
  7. 3 0
      src/main/java/com/ydtech/modules/order/entity/api/guoren/constants/PlatformInterfaceCode.java
  8. 30 0
      src/main/java/com/ydtech/modules/order/entity/api/guoren/request/SpecialAgreementRequest.java
  9. 72 0
      src/main/java/com/ydtech/modules/order/entity/api/guoren/response/SpecialAgreementResponse.java
  10. 38 0
      src/main/java/com/ydtech/modules/order/entity/vo/guoren/GuoRenQuoteVo.java
  11. 27 0
      src/main/java/com/ydtech/modules/order/entity/vo/guoren/GuoRenSpecialAgreement.java
  12. 41 0
      src/main/java/com/ydtech/modules/order/entity/vo/guoren/GuoRenSpecialAgreementVo.java
  13. 5 3
      src/main/java/com/ydtech/modules/order/entity/vo/guoren/GuorenAccidentalDrivingVo.java
  14. 10 3
      src/main/java/com/ydtech/modules/order/service/GuorenOrderApiService.java
  15. 1 0
      src/main/java/com/ydtech/modules/order/service/InsOrdersService.java
  16. 32 25
      src/main/java/com/ydtech/modules/order/service/impl/GuorenOrderApiServiceImpl.java
  17. 22 13
      src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java
  18. 3 2
      src/main/resources/application-prod.yml

+ 20 - 3
src/main/java/com/ydtech/constants/enums/InsuranceRisk.java

@@ -4,6 +4,9 @@ package com.ydtech.constants.enums;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.Getter;
 
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
 /**
  * @description: 晋掌柜 险种代码
  * @description: 晋掌柜 险种代码
  * @author: wenks
  * @author: wenks
@@ -13,11 +16,11 @@ import lombok.Getter;
 @AllArgsConstructor
 @AllArgsConstructor
 public enum InsuranceRisk {
 public enum InsuranceRisk {
 
 
-    TRAFFIC("0507", "机动车交通事故责任强制保险"),
+    TRAFFIC("0507", "机动车交通事故责任强制保险", "交强"),
 
 
-    BUSINESS("0510", "机动车商业保险"),
+    BUSINESS("0510", "机动车商业保险", "商业"),
 
 
-    ACCIDENT("0513", "意外险");
+    ACCIDENT("0513", "意外险", "非车");
 
 
     public static final String TRAFFIC_CODE = "0507";
     public static final String TRAFFIC_CODE = "0507";
 
 
@@ -25,7 +28,21 @@ public enum InsuranceRisk {
 
 
     public static final String ACCIDENT_CODE = "0513";
     public static final String ACCIDENT_CODE = "0513";
 
 
+    private static final List<InsuranceRisk> INSURANCE_RISK = new ArrayList<>();
+
+    static {
+        INSURANCE_RISK.add(TRAFFIC);
+        INSURANCE_RISK.add(BUSINESS);
+    }
+
+    public static List<InsuranceRisk> getInsuranceRisk() {
+        return INSURANCE_RISK;
+    }
+
     private final String code;
     private final String code;
 
 
     private final String desc;
     private final String desc;
+
+    private final String shortName;
+
 }
 }

+ 9 - 0
src/main/java/com/ydtech/modules/admin/controller/SysUserController.java

@@ -23,6 +23,7 @@ import com.ydtech.modules.esm.model.EsmUserReferrer;
 import com.ydtech.modules.esm.model.vo.EsmUserImageQueryVo;
 import com.ydtech.modules.esm.model.vo.EsmUserImageQueryVo;
 import com.ydtech.modules.esm.service.EsmUserImageService;
 import com.ydtech.modules.esm.service.EsmUserImageService;
 import com.ydtech.modules.esm.service.EsmUserReferrerService;
 import com.ydtech.modules.esm.service.EsmUserReferrerService;
+import com.ydtech.modules.protocol.utils.AssertionUtils;
 import com.ydtech.security.utils.PasswordUtils;
 import com.ydtech.security.utils.PasswordUtils;
 import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.excel.ExcelEasypoiUtils;
 import com.ydtech.utils.excel.ExcelEasypoiUtils;
@@ -454,6 +455,14 @@ public class SysUserController extends BaseController {
 
 
     }
     }
 
 
+    @ApiOperation(value = "(new)是否绑定微信")
+    @GetMapping(value = "/isBindWechat")
+    public HttpResult<Object> isBindWechat() {
+        SysUser sysUser = sysUserService.getById(getUserId());
+        String openid = sysUser.getOpenid();
+        AssertionUtils.isStringEmpty(openid, "未绑定微信");
+        return HttpResult.ok();
+    }
 
 
     /**
     /**
      * 个代注册
      * 个代注册

+ 13 - 12
src/main/java/com/ydtech/modules/admin/service/impl/SysAreaServiceImpl.java

@@ -59,12 +59,15 @@ public class SysAreaServiceImpl extends ServiceImpl<SysAreaMapper, SysArea>
         //被保人 赛选出的地址条件
         //被保人 赛选出的地址条件
         List<SysArea> collect = sysAreaVos.stream().filter(item -> address.contains(item.getAreaCname())).collect(Collectors.toList());
         List<SysArea> collect = sysAreaVos.stream().filter(item -> address.contains(item.getAreaCname())).collect(Collectors.toList());
         //截取身份证的省级代码
         //截取身份证的省级代码
-        String provincesCode  = idcard.substring(0, 3);
+        String provincesCode = idcard.substring(0, 3);
         //获取省级的区划
         //获取省级的区划
-        if(collect.size() > 0) {
-            List<SysArea> provincesArea = collect.stream().filter(item -> item.getAreaCode().substring(0, 3).equals(provincesCode)).collect(Collectors.toList());
+        if (!collect.isEmpty()) {
+            List<SysArea> provincesArea = collect.stream()
+                    .filter(item -> item.getAreaCode().substring(0, 3).equals(provincesCode))
+                    .collect(Collectors.toList());
+
             //如果查不出来默认使用赛选出的第一个
             //如果查不出来默认使用赛选出的第一个
-            if (provincesArea.size() == 0) {
+            if (provincesArea.isEmpty()) {
                 provincesArea.add(collect.get(0));
                 provincesArea.add(collect.get(0));
             }
             }
             List<SysArea> sysAreas = this.queryAllParent(provincesArea.get(0));
             List<SysArea> sysAreas = this.queryAllParent(provincesArea.get(0));
@@ -86,16 +89,14 @@ public class SysAreaServiceImpl extends ServiceImpl<SysAreaMapper, SysArea>
                     personAreaVo.setCountyCode(Integer.valueOf(sysAreas.get(2).getAreaCode()));
                     personAreaVo.setCountyCode(Integer.valueOf(sysAreas.get(2).getAreaCode()));
                     personAreaVo.setCountyName(sysAreas.get(2).getAreaCname());
                     personAreaVo.setCountyName(sysAreas.get(2).getAreaCname());
                 }
                 }
-            } else {
-                personAreaVo.setProvinceCode(Integer.parseInt(idcard.substring(0, 2) + "0000"));
-                personAreaVo.setCityCode(Integer.parseInt(idcard.substring(0, 4) + "00"));
-                personAreaVo.setCountyCode(Integer.parseInt(idcard.substring(0, 6)));
+                return personAreaVo;
             }
             }
-        }else{
-            personAreaVo.setProvinceCode(Integer.parseInt(idcard.substring(0, 2) + "0000"));
-            personAreaVo.setCityCode(Integer.parseInt(idcard.substring(0, 4) + "00"));
-            personAreaVo.setCountyCode(Integer.parseInt(idcard.substring(0, 6)));
         }
         }
+
+        personAreaVo.setProvinceCode(Integer.parseInt(idcard.substring(0, 2) + "0000"));
+        personAreaVo.setCityCode(Integer.parseInt(idcard.substring(0, 4) + "00"));
+        personAreaVo.setCountyCode(Integer.parseInt(idcard.substring(0, 6)));
+
         return personAreaVo;
         return personAreaVo;
     }
     }
 
 

+ 94 - 45
src/main/java/com/ydtech/modules/ins/model/guoren/PremiumReq.java

@@ -7,13 +7,13 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.ydtech.constants.enums.InsurKind;
 import com.ydtech.constants.enums.InsurKind;
 import com.ydtech.constants.enums.InsurKindGuoRen;
 import com.ydtech.constants.enums.InsurKindGuoRen;
-import com.ydtech.modules.ins.model.dto.CarInsDateDto;
+import com.ydtech.constants.enums.InsuranceRisk;
 import com.ydtech.modules.ins.model.vo.CustomerInfoVo;
 import com.ydtech.modules.ins.model.vo.CustomerInfoVo;
 import com.ydtech.modules.ins.model.vo.KindInfoVo;
 import com.ydtech.modules.ins.model.vo.KindInfoVo;
 import com.ydtech.modules.ins.model.vo.RiskInfoVo;
 import com.ydtech.modules.ins.model.vo.RiskInfoVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
+import com.ydtech.modules.order.entity.vo.guoren.GuoRenSpecialAgreementVo;
 import com.ydtech.utils.DateTimeUtil;
 import com.ydtech.utils.DateTimeUtil;
-import com.ydtech.utils.InsUtils;
 import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.StringUtils;
 import lombok.Data;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.NoArgsConstructor;
@@ -23,6 +23,7 @@ import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.Date;
 import java.util.List;
 import java.util.List;
+import java.util.stream.Collectors;
 
 
 
 
 /**
 /**
@@ -60,7 +61,9 @@ public class PremiumReq {
      */
      */
     @JsonIgnore
     @JsonIgnore
     public static PremiumReq buildQuoteParam(BaseQuoteInfoVo yaQuoteInfoVo, CarPriceResp.DataDTO carPriceResult,
     public static PremiumReq buildQuoteParam(BaseQuoteInfoVo yaQuoteInfoVo, CarPriceResp.DataDTO carPriceResult,
-                                             VinQueryResp.DataDTO vinQ, boolean isNoCar) {
+                                             VinQueryResp.DataDTO vinQ, boolean isNoCar,
+                                             List<GuoRenSpecialAgreementVo> specialAgreementVo) {
+
         CustomerInfoVo ownerInfo = yaQuoteInfoVo.getOwnerInfo();
         CustomerInfoVo ownerInfo = yaQuoteInfoVo.getOwnerInfo();
 
 
         List<RiskInfoVo> riskList = yaQuoteInfoVo.getRiskList();
         List<RiskInfoVo> riskList = yaQuoteInfoVo.getRiskList();
@@ -69,13 +72,17 @@ public class PremiumReq {
         PremiumReq quoteReq = new PremiumReq();
         PremiumReq quoteReq = new PremiumReq();
 
 
         riskList.forEach(a -> {
         riskList.forEach(a -> {
-            if (a.getRiskCode().equals("0507")) {
-                CiDTO ciDto = buildCiDto(ownerInfo, a, isNoCar);
+            if (a.getRiskCode().equals(InsuranceRisk.TRAFFIC_CODE)) {
+                List<GuoRenSpecialAgreementVo> trafficSpecialAgreement =
+                        specialAgreementVo.stream().filter(x -> InsuranceRisk.TRAFFIC_CODE.equals(x.getRiskCode())).collect(Collectors.toList());
+                CiDTO ciDto = buildCiDto(ownerInfo, a, isNoCar, trafficSpecialAgreement);
                 ciDto.setTrafficTime(a.getStartDate());
                 ciDto.setTrafficTime(a.getStartDate());
                 quoteReq.setCi(ciDto);
                 quoteReq.setCi(ciDto);
             }
             }
-            if (a.getRiskCode().equals("0510")) {
-                BiDTO biDto = buildBiDto(ownerInfo, a, kindInfoVList, carPriceResult, vinQ, isNoCar);
+            if (a.getRiskCode().equals(InsuranceRisk.BUSINESS_CODE)) {
+                List<GuoRenSpecialAgreementVo> businessSpecialAgreement =
+                        specialAgreementVo.stream().filter(x -> InsuranceRisk.BUSINESS_CODE.equals(x.getRiskCode())).collect(Collectors.toList());
+                BiDTO biDto = buildBiDto(ownerInfo, a, kindInfoVList, carPriceResult, vinQ, isNoCar, businessSpecialAgreement);
                 biDto.setBusinessTime(a.getStartDate());
                 biDto.setBusinessTime(a.getStartDate());
                 quoteReq.setBi(biDto);
                 quoteReq.setBi(biDto);
             }
             }
@@ -83,12 +90,12 @@ public class PremiumReq {
 
 
         //未投保交强
         //未投保交强
         if (null == quoteReq.getCi()) {
         if (null == quoteReq.getCi()) {
-            CiDTO ciDto = buildCiDto(ownerInfo, null, false);
+            CiDTO ciDto = buildCiDto(ownerInfo, null, false, new ArrayList<>());
             quoteReq.setCi(ciDto);
             quoteReq.setCi(ciDto);
         }
         }
         //未投保商业
         //未投保商业
         if (null == quoteReq.getBi()) {
         if (null == quoteReq.getBi()) {
-            BiDTO biDto = buildBiDto(ownerInfo, null, null, null, null, false);
+            BiDTO biDto = buildBiDto(ownerInfo, null, null, null, null, false, new ArrayList<>());
             quoteReq.setBi(biDto);
             quoteReq.setBi(biDto);
         }
         }
 
 
@@ -108,7 +115,8 @@ public class PremiumReq {
      * @date: 2023-08-15
      * @date: 2023-08-15
      */
      */
     @JsonIgnore
     @JsonIgnore
-    public static CiDTO buildCiDto(CustomerInfoVo ownerInfo, RiskInfoVo ciRiskInfo, boolean isNoCar) {
+    public static CiDTO buildCiDto(CustomerInfoVo ownerInfo, RiskInfoVo ciRiskInfo, boolean isNoCar,
+                                   List<GuoRenSpecialAgreementVo> specialAgreementVo) {
         CiDTO ciDto = new CiDTO();
         CiDTO ciDto = new CiDTO();
         ciDto.setPrpTrenewal(new ArrayList<>());
         ciDto.setPrpTrenewal(new ArrayList<>());
         ciDto.setPrpTmainRate(new CiDTO.PrpTmainRateDTO());
         ciDto.setPrpTmainRate(new CiDTO.PrpTmainRateDTO());
@@ -137,16 +145,6 @@ public class PremiumReq {
             //构造保险日期
             //构造保险日期
             ciDto.setInputRisk("1");
             ciDto.setInputRisk("1");
 
 
-//            CarInsDateDto cidd = InsUtils.buildCiInsDate(ciRiskInfo.getStartDate(), ciRiskInfo.getEndDate());
-//            ciPrpTmain.setStartDate(cidd.getStartDate());
-//            ciPrpTmain.setEndDate(cidd.getEndDate());
-//            //即时起保标识	immeValiFlag	字符串	N	即时起保必传1
-//            ciPrpTmain.setImmeValiFlag(cidd.isForthwith() ? "1" : "");
-//            //即时终保时间	immeValidEndDate	字符串	N	即时起保必传
-//            ciPrpTmain.setImmeValidStartDate(cidd.isForthwith() ? cidd.getStartDate() : "");
-//            //即时终保时间	immeValidEndDate	字符串	N	即时起保必传 (YYYY-MM-DD HH:MM:SS)
-//            ciPrpTmain.setImmeValidEndDate(cidd.isForthwith() ? cidd.getEndDate() : "");
-
             //转保验证码
             //转保验证码
             ciPrpTmain.setAnswer("");
             ciPrpTmain.setAnswer("");
             if (isNoCar) {
             if (isNoCar) {
@@ -186,11 +184,10 @@ public class PremiumReq {
         ciDto.setPrpTitemCar(ciPrpTitemCar);
         ciDto.setPrpTitemCar(ciPrpTitemCar);
         ciDto.setPrptitemkindList(prptitemkindList);
         ciDto.setPrptitemkindList(prptitemkindList);
         ciDto.setPrpTmain(ciPrpTmain);
         ciDto.setPrpTmain(ciPrpTmain);
-//        /**
-//         * 特别约定
-//         */
-//        CiDTO.PrptengageListDTO prptengageList = new CiDTO.PrptengageListDTO();
 
 
+        // 特别约定
+        List<PrptengageListDTO> prptengageListDTO = GuoRenSpecialAgreementVo.toPrptengageListDTO(specialAgreementVo);
+        ciDto.setPrptengageList(prptengageListDTO);
 
 
         return ciDto;
         return ciDto;
     }
     }
@@ -203,7 +200,9 @@ public class PremiumReq {
      */
      */
     @JsonIgnore
     @JsonIgnore
     public static BiDTO buildBiDto(CustomerInfoVo ownerInfo, RiskInfoVo biRiskInfo, List<KindInfoVo> kindInfoVList,
     public static BiDTO buildBiDto(CustomerInfoVo ownerInfo, RiskInfoVo biRiskInfo, List<KindInfoVo> kindInfoVList,
-                                   CarPriceResp.DataDTO carPriceResult, VinQueryResp.DataDTO vinQ, boolean isNoCar) {
+                                   CarPriceResp.DataDTO carPriceResult, VinQueryResp.DataDTO vinQ, boolean isNoCar,
+                                   List<GuoRenSpecialAgreementVo> specialAgreementVo) {
+
         BiDTO biDto = new BiDTO();
         BiDTO biDto = new BiDTO();
         biDto.setPrpTmainRate(new BiDTO.PrpTmainRateDTO());
         biDto.setPrpTmainRate(new BiDTO.PrpTmainRateDTO());
         biDto.setPrpTChargingPostDataList(new ArrayList<>());
         biDto.setPrpTChargingPostDataList(new ArrayList<>());
@@ -213,7 +212,9 @@ public class PremiumReq {
         biDto.setCiInsureDemandPay(new ArrayList<>());
         biDto.setCiInsureDemandPay(new ArrayList<>());
         biDto.setCiInsureDemandWarningClaim(new ArrayList<>());
         biDto.setCiInsureDemandWarningClaim(new ArrayList<>());
         biDto.setPrpTrenewal(new ArrayList<>());
         biDto.setPrpTrenewal(new ArrayList<>());
-        biDto.setPrptengageList(new ArrayList<>());
+
+        List<PrptengageListDTO> prptengageListDTO = GuoRenSpecialAgreementVo.toPrptengageListDTO(specialAgreementVo);
+        biDto.setPrptengageList(prptengageListDTO);
 
 
         /**
         /**
          * 主信息
          * 主信息
@@ -227,11 +228,9 @@ public class PremiumReq {
 
 
         biPrpTitemCar.setTermsSystem("04");
         biPrpTitemCar.setTermsSystem("04");
         biPrpTitemCar.setClauseType("F54");
         biPrpTitemCar.setClauseType("F54");
-
         biPrpTitemCar.setCarOwner(ownerInfo.getName());
         biPrpTitemCar.setCarOwner(ownerInfo.getName());
         biPrpTitemCar.setCarOwnerIdentifyNumber(ownerInfo.getIdentifyNumber());
         biPrpTitemCar.setCarOwnerIdentifyNumber(ownerInfo.getIdentifyNumber());
         biPrpTitemCar.setOtherNature("0");
         biPrpTitemCar.setOtherNature("0");
-
         biPrpTitemCar.setCiInsureDemandPay(new ArrayList<>());
         biPrpTitemCar.setCiInsureDemandPay(new ArrayList<>());
         biPrpTitemCar.setCiInsureDemandWarningClaim(new ArrayList<>());
         biPrpTitemCar.setCiInsureDemandWarningClaim(new ArrayList<>());
         biPrpTitemCar.setPrpTrenewal("");
         biPrpTitemCar.setPrpTrenewal("");
@@ -252,11 +251,6 @@ public class PremiumReq {
             biPrpTmain.setInputDate(DateUtil.formatDate(new Date()));
             biPrpTmain.setInputDate(DateUtil.formatDate(new Date()));
             biPrpTmain.setSignDate(DateUtil.formatDate(new Date()));
             biPrpTmain.setSignDate(DateUtil.formatDate(new Date()));
 
 
-//            CarInsDateDto biCidd = InsUtils.buildBiInsDate(biRiskInfo.getStartDate(), biRiskInfo.getEndDate());
-//
-//            biPrpTmain.setStartDate(biCidd.getStartDate());
-//            biPrpTmain.setEndDate(biCidd.getEndDate());
-
             if (isNoCar) {
             if (isNoCar) {
                 // 非车标识      车+非车必传:1
                 // 非车标识      车+非车必传:1
                 biPrpTmain.setNoCarFlag("1");
                 biPrpTmain.setNoCarFlag("1");
@@ -267,7 +261,6 @@ public class PremiumReq {
             List<BiDTO.PrptitemkindListDTO> prptitemkindList = buildBiKindList(kindInfoVList, carPriceResult, biRiskInfo, vinQ);
             List<BiDTO.PrptitemkindListDTO> prptitemkindList = buildBiKindList(kindInfoVList, carPriceResult, biRiskInfo, vinQ);
             biDto.setPrptitemkindList(prptitemkindList);
             biDto.setPrptitemkindList(prptitemkindList);
 
 
-
         } else {
         } else {
             biPrpTmain.setStartDate("");
             biPrpTmain.setStartDate("");
             biPrpTmain.setEndDate("");
             biPrpTmain.setEndDate("");
@@ -310,10 +303,10 @@ public class PremiumReq {
             BigDecimal passengerNum = BigDecimal.valueOf(StringUtils.toInt(vinQ.getSeatCountBC()) - 1);
             BigDecimal passengerNum = BigDecimal.valueOf(StringUtils.toInt(vinQ.getSeatCountBC()) - 1);
 
 
             boolean isEnergy = false;
             boolean isEnergy = false;
-            if("1,2,3,".contains(vinQ.getFuelType()+",")) {//纯电动 燃料电池 插电式混合动力 归属为新能源产品
+            if ("1,2,3,".contains(vinQ.getFuelType() + ",")) {//纯电动 燃料电池 插电式混合动力 归属为新能源产品
                 isEnergy = true;
                 isEnergy = true;
             }
             }
-            ;
+
             //起保时间
             //起保时间
             prptitemkind.setStartDate(biRiskInfo.getStartDate());
             prptitemkind.setStartDate(biRiskInfo.getStartDate());
             prptitemkind.setEndDate(biRiskInfo.getEndDate());
             prptitemkind.setEndDate(biRiskInfo.getEndDate());
@@ -326,12 +319,12 @@ public class PremiumReq {
 
 
             //第三者责任险
             //第三者责任险
             if (k.getKindCode().equals(InsurKind.B.getCode())) {
             if (k.getKindCode().equals(InsurKind.B.getCode())) {
-                if(isEnergy){
+                if (isEnergy) {
                     prptitemkind.setKindCode(InsurKindGuoRen.B_N.getCode());
                     prptitemkind.setKindCode(InsurKindGuoRen.B_N.getCode());
                     prptitemkind.setKindName(InsurKindGuoRen.B_N.getDesc());
                     prptitemkind.setKindName(InsurKindGuoRen.B_N.getDesc());
                     prptitemkind.setItemKindNo(InsurKindGuoRen.B_N.getItemKindNo());
                     prptitemkind.setItemKindNo(InsurKindGuoRen.B_N.getItemKindNo());
                     prptitemkind.setFlag(InsurKindGuoRen.B_N.getFlag());
                     prptitemkind.setFlag(InsurKindGuoRen.B_N.getFlag());
-                }else{
+                } else {
                     prptitemkind.setKindCode(InsurKindGuoRen.B.getCode());
                     prptitemkind.setKindCode(InsurKindGuoRen.B.getCode());
                     prptitemkind.setKindName(InsurKindGuoRen.B.getDesc());
                     prptitemkind.setKindName(InsurKindGuoRen.B.getDesc());
                     prptitemkind.setItemKindNo(InsurKindGuoRen.B.getItemKindNo());
                     prptitemkind.setItemKindNo(InsurKindGuoRen.B.getItemKindNo());
@@ -343,12 +336,12 @@ public class PremiumReq {
             }
             }
             //乘客责任险
             //乘客责任险
             if (k.getKindCode().equals(InsurKind.D4.getCode())) {
             if (k.getKindCode().equals(InsurKind.D4.getCode())) {
-                if(isEnergy){
+                if (isEnergy) {
                     prptitemkind.setKindCode(InsurKindGuoRen.D4_N.getCode());
                     prptitemkind.setKindCode(InsurKindGuoRen.D4_N.getCode());
                     prptitemkind.setKindName(InsurKindGuoRen.D4_N.getDesc());
                     prptitemkind.setKindName(InsurKindGuoRen.D4_N.getDesc());
                     prptitemkind.setItemKindNo(InsurKindGuoRen.D4_N.getItemKindNo());
                     prptitemkind.setItemKindNo(InsurKindGuoRen.D4_N.getItemKindNo());
                     prptitemkind.setFlag(InsurKindGuoRen.D4_N.getFlag());
                     prptitemkind.setFlag(InsurKindGuoRen.D4_N.getFlag());
-                }else {
+                } else {
                     prptitemkind.setKindCode(InsurKindGuoRen.D4.getCode());
                     prptitemkind.setKindCode(InsurKindGuoRen.D4.getCode());
                     prptitemkind.setKindName(InsurKindGuoRen.D4.getDesc());
                     prptitemkind.setKindName(InsurKindGuoRen.D4.getDesc());
                     prptitemkind.setItemKindNo(InsurKindGuoRen.D4.getItemKindNo());
                     prptitemkind.setItemKindNo(InsurKindGuoRen.D4.getItemKindNo());
@@ -362,12 +355,12 @@ public class PremiumReq {
             }
             }
             //机动车损失险
             //机动车损失险
             if (k.getKindCode().equals(InsurKind.A.getCode())) {
             if (k.getKindCode().equals(InsurKind.A.getCode())) {
-                if(isEnergy){
+                if (isEnergy) {
                     prptitemkind.setKindCode(InsurKindGuoRen.A_N.getCode());
                     prptitemkind.setKindCode(InsurKindGuoRen.A_N.getCode());
                     prptitemkind.setKindName(InsurKindGuoRen.A_N.getDesc());
                     prptitemkind.setKindName(InsurKindGuoRen.A_N.getDesc());
                     prptitemkind.setItemKindNo(InsurKindGuoRen.A_N.getItemKindNo());
                     prptitemkind.setItemKindNo(InsurKindGuoRen.A_N.getItemKindNo());
                     prptitemkind.setFlag(InsurKindGuoRen.A_N.getFlag());
                     prptitemkind.setFlag(InsurKindGuoRen.A_N.getFlag());
-                }else {
+                } else {
                     prptitemkind.setKindCode(InsurKindGuoRen.A.getCode());
                     prptitemkind.setKindCode(InsurKindGuoRen.A.getCode());
                     prptitemkind.setKindName(InsurKindGuoRen.A.getDesc());
                     prptitemkind.setKindName(InsurKindGuoRen.A.getDesc());
                     prptitemkind.setItemKindNo(InsurKindGuoRen.A.getItemKindNo());
                     prptitemkind.setItemKindNo(InsurKindGuoRen.A.getItemKindNo());
@@ -382,12 +375,12 @@ public class PremiumReq {
             }
             }
             //司机责任险
             //司机责任险
             if (k.getKindCode().equals(InsurKind.D3.getCode())) {
             if (k.getKindCode().equals(InsurKind.D3.getCode())) {
-                if(isEnergy){
+                if (isEnergy) {
                     prptitemkind.setKindCode(InsurKindGuoRen.D3_N.getCode());
                     prptitemkind.setKindCode(InsurKindGuoRen.D3_N.getCode());
                     prptitemkind.setKindName(InsurKindGuoRen.D3_N.getDesc());
                     prptitemkind.setKindName(InsurKindGuoRen.D3_N.getDesc());
                     prptitemkind.setItemKindNo(InsurKindGuoRen.D3_N.getItemKindNo());
                     prptitemkind.setItemKindNo(InsurKindGuoRen.D3_N.getItemKindNo());
                     prptitemkind.setFlag(InsurKindGuoRen.D3_N.getFlag());
                     prptitemkind.setFlag(InsurKindGuoRen.D3_N.getFlag());
-                }else {
+                } else {
                     prptitemkind.setKindCode(InsurKindGuoRen.D3.getCode());
                     prptitemkind.setKindCode(InsurKindGuoRen.D3.getCode());
                     prptitemkind.setKindName(InsurKindGuoRen.D3.getDesc());
                     prptitemkind.setKindName(InsurKindGuoRen.D3.getDesc());
                     prptitemkind.setItemKindNo(InsurKindGuoRen.D3.getItemKindNo());
                     prptitemkind.setItemKindNo(InsurKindGuoRen.D3.getItemKindNo());
@@ -543,6 +536,13 @@ public class PremiumReq {
         @JSONField(name = "prpTitemCar")
         @JSONField(name = "prpTitemCar")
         private PrpTitemCarDTO prpTitemCar;
         private PrpTitemCarDTO prpTitemCar;
 
 
+        /**
+         * 特别约定
+         */
+        @JsonProperty(value = "prptengageList")
+        @JSONField(name = "prptengageList")
+        private List<PrptengageListDTO> prptengageList;
+
         @JsonProperty(value = "prpTmain")
         @JsonProperty(value = "prpTmain")
         @JSONField(name = "prpTmain")
         @JSONField(name = "prpTmain")
         private PrpTmainDTO prpTmain;
         private PrpTmainDTO prpTmain;
@@ -768,6 +768,54 @@ public class PremiumReq {
         }
         }
     }
     }
 
 
+    @NoArgsConstructor
+    @Data
+    public static class PrptengageListDTO {
+
+        /**
+         * 序号
+         */
+        @JsonProperty(value = "serialNo")
+        @JSONField(name = "serialNo")
+        private String serialNo;
+
+        /**
+         * 特约编码
+         */
+        @JsonProperty(value = "clauseCode")
+        @JSONField(name = "clauseCode")
+        private String clauseCode;
+
+        /**
+         * 特约名
+         */
+        @JsonProperty(value = "clauses")
+        @JSONField(name = "clauses")
+        private String clauses;
+
+        /**
+         * 特约内容
+         */
+        @JsonProperty(value = "clausesContext")
+        @JSONField(name = "clausesContext")
+        private String clausesContext;
+
+        /**
+         * 投保单号
+         */
+        @JsonProperty(value = "proposalNo")
+        @JSONField(name = "proposalNo")
+        private String proposalNo;
+
+        public PrptengageListDTO(GuoRenSpecialAgreementVo guoRenSpecialAgreementVo, int i) {
+            this.serialNo = String.valueOf(i);
+            this.clauseCode = guoRenSpecialAgreementVo.getClauseCode();
+            this.clauses = guoRenSpecialAgreementVo.getClauses();
+            this.clausesContext = guoRenSpecialAgreementVo.getClausesContext();
+        }
+
+    }
+
     @NoArgsConstructor
     @NoArgsConstructor
     @Data
     @Data
     public static class BiDTO {
     public static class BiDTO {
@@ -778,7 +826,7 @@ public class PremiumReq {
 
 
         @JsonProperty(value = "prptengageList")
         @JsonProperty(value = "prptengageList")
         @JSONField(name = "prptengageList")
         @JSONField(name = "prptengageList")
-        private List<?> prptengageList;
+        private List<PrptengageListDTO> prptengageList;
 
 
         @JsonProperty(value = "prpTitemCar")
         @JsonProperty(value = "prpTitemCar")
         @JSONField(name = "prpTitemCar")
         @JSONField(name = "prpTitemCar")
@@ -852,6 +900,7 @@ public class PremiumReq {
             });
             });
         }
         }
 
 
+
         @NoArgsConstructor
         @NoArgsConstructor
         @Data
         @Data
         public static class PrpTitemCarDTO {
         public static class PrpTitemCarDTO {

+ 10 - 3
src/main/java/com/ydtech/modules/order/controller/GuoRenOrderApiController.java

@@ -5,10 +5,11 @@ import com.ydtech.aop.request.RequestSingleParam;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.ins.model.guoren.CarModelResp;
 import com.ydtech.modules.ins.model.guoren.CarModelResp;
 import com.ydtech.modules.ins.model.vo.CarInfoVo;
 import com.ydtech.modules.ins.model.vo.CarInfoVo;
+import com.ydtech.modules.order.entity.vo.guoren.GuoRenQuoteVo;
 import com.ydtech.modules.order.entity.api.guoren.constants.GoodsClassifyList;
 import com.ydtech.modules.order.entity.api.guoren.constants.GoodsClassifyList;
-import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
+import com.ydtech.modules.order.entity.api.guoren.response.SpecialAgreementResponse;
 import com.ydtech.modules.order.entity.vo.PolicyPrintVo;
 import com.ydtech.modules.order.entity.vo.PolicyPrintVo;
-import com.ydtech.modules.order.entity.vo.guoren.GuorenAccidentalDrivingVo;
+import com.ydtech.modules.order.entity.vo.guoren.GuoRenSpecialAgreement;
 import com.ydtech.modules.order.entity.vo.guoren.NonAutoInsuranceList;
 import com.ydtech.modules.order.entity.vo.guoren.NonAutoInsuranceList;
 import com.ydtech.modules.order.entity.vo.guoren.NonAutoInsuranceQueryVo;
 import com.ydtech.modules.order.entity.vo.guoren.NonAutoInsuranceQueryVo;
 import com.ydtech.modules.order.service.GuorenOrderApiService;
 import com.ydtech.modules.order.service.GuorenOrderApiService;
@@ -58,7 +59,7 @@ public class GuoRenOrderApiController {
     })
     })
     @ApiOperation(value = "报价")
     @ApiOperation(value = "报价")
     @PostMapping("/quote")
     @PostMapping("/quote")
-    public HttpResult quoteApi(@RequestBody BaseQuoteVo<GuorenAccidentalDrivingVo> quoteVo) {
+    public HttpResult quoteApi(@RequestBody GuoRenQuoteVo quoteVo) {
         return guorenOrderApiService.quoteApi(quoteVo);
         return guorenOrderApiService.quoteApi(quoteVo);
     }
     }
 
 
@@ -80,6 +81,12 @@ public class GuoRenOrderApiController {
         return guorenOrderApiService.auditApi(companyId);
         return guorenOrderApiService.auditApi(companyId);
     }
     }
 
 
+    @PostMapping(value = "/queryClauseData")
+    @ApiOperation(value = "特约查询")
+    public HttpResult<List<GuoRenSpecialAgreement>> queryClauseData(@RequestSingleParam(value = "agreementId") String agreementId) {
+        return this.guorenOrderApiService.queryClauseData(agreementId);
+    }
+
     @ApiOperation(value = "更新订单信息")
     @ApiOperation(value = "更新订单信息")
     @PostMapping("/updateOrderInfo")
     @PostMapping("/updateOrderInfo")
     public HttpResult updateOrderInfoByIns(@RequestSingleParam(value = "companyId") String companyId) {
     public HttpResult updateOrderInfoByIns(@RequestSingleParam(value = "companyId") String companyId) {

+ 28 - 0
src/main/java/com/ydtech/modules/order/entity/api/guoren/constants/GuoRenRiskCode.java

@@ -0,0 +1,28 @@
+package com.ydtech.modules.order.entity.api.guoren.constants;
+
+import com.ydtech.constants.enums.InsuranceRisk;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum GuoRenRiskCode {
+
+    R_0507("0507", "交强"),
+    R_0518("0518", "商业");
+
+    private final String code;
+
+    private final String desc;
+
+
+    public static String toInsuranceRisk(String code) {
+        if (InsuranceRisk.TRAFFIC.getCode().equals(code)) {
+            return R_0507.getCode();
+        } else if (InsuranceRisk.BUSINESS.getCode().equals(code)) {
+            return R_0518.getCode();
+        }
+        return "";
+    }
+
+}

+ 3 - 0
src/main/java/com/ydtech/modules/order/entity/api/guoren/constants/PlatformInterfaceCode.java

@@ -13,6 +13,8 @@ public enum PlatformInterfaceCode {
 
 
     API_IIRBT00004("IIRBT00004", "保费计算"),
     API_IIRBT00004("IIRBT00004", "保费计算"),
 
 
+    API_IIRBT00005("IIRBT00005", "获取特别约定"),
+
     API_IIRBT00006("IIRBT00006", "投保单保存"),
     API_IIRBT00006("IIRBT00006", "投保单保存"),
 
 
     API_IIRBT00007("IIRBT00007", "提交核保"),
     API_IIRBT00007("IIRBT00007", "提交核保"),
@@ -35,6 +37,7 @@ public enum PlatformInterfaceCode {
 
 
     API_IIIRBT00053("IIIRBT00053", "查询非车商品信息"),
     API_IIIRBT00053("IIIRBT00053", "查询非车商品信息"),
 
 
+
     API_IIIRBT00055("IIIRBT00055", "通过二维码扫描获取电子投保单签名"),
     API_IIIRBT00055("IIIRBT00055", "通过二维码扫描获取电子投保单签名"),
 
 
     API_IIIRBT00054("IIIRBT00054", "创建非车订单"),
     API_IIIRBT00054("IIIRBT00054", "创建非车订单"),

+ 30 - 0
src/main/java/com/ydtech/modules/order/entity/api/guoren/request/SpecialAgreementRequest.java

@@ -0,0 +1,30 @@
+package com.ydtech.modules.order.entity.api.guoren.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+/**
+ * @description: 特别约定 请求参数
+ * @author: wenks
+ * @date: 2023/11/28 16:59
+ **/
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+public class SpecialAgreementRequest implements Serializable {
+
+    private static final long serialVersionUID = -2173972139119759609L;
+
+    @JsonProperty("comCode")
+    private String comCode;
+
+    @JsonProperty("riskCode")
+    private String riskCode;
+
+}

+ 72 - 0
src/main/java/com/ydtech/modules/order/entity/api/guoren/response/SpecialAgreementResponse.java

@@ -0,0 +1,72 @@
+package com.ydtech.modules.order.entity.api.guoren.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+/**
+ * @description: 特别约定 响应参数
+ * @author: wenks
+ * @date: 2023/11/28 16:59
+ **/
+@NoArgsConstructor
+@Data
+public class SpecialAgreementResponse implements Serializable {
+
+    private static final long serialVersionUID = -6179311923603299038L;
+
+    @JsonProperty("resultCode")
+    private Integer resultCode;
+
+    @JsonProperty("resultMsg")
+    private String resultMsg;
+
+    @JsonProperty("data")
+    private List<DataDTO> data;
+
+    @NoArgsConstructor
+    @Data
+    public static class DataDTO implements Serializable {
+
+        private static final long serialVersionUID = 332244006008397574L;
+
+        @ApiModelProperty("特约编码")
+        @JsonProperty("clauseCode")
+        private String clauseCode;
+
+        @ApiModelProperty("特约名")
+        @JsonProperty("clauses")
+        private String clauses;
+
+        @JsonProperty("flag")
+        private String flag;
+
+        @ApiModelProperty("特约内容")
+        @JsonProperty("clausesContext")
+        private String clausesContext;
+
+        @JsonProperty("status")
+        private String status;
+
+        @JsonProperty("readOnly")
+        private String readOnly;
+
+        @JsonProperty("total")
+        private String total;
+
+        public DataDTO(DataDTO dataDTO) {
+            this.clauseCode = dataDTO.clauseCode;
+            this.clauses = dataDTO.clauses;
+            this.flag = dataDTO.flag;
+            this.clausesContext = dataDTO.clausesContext;
+            this.status = dataDTO.status;
+            this.readOnly = dataDTO.readOnly;
+            this.total = dataDTO.total;
+        }
+    }
+}

+ 38 - 0
src/main/java/com/ydtech/modules/order/entity/vo/guoren/GuoRenQuoteVo.java

@@ -0,0 +1,38 @@
+package com.ydtech.modules.order.entity.vo.guoren;
+
+
+import com.ydtech.modules.order.entity.vo.guoren.GuoRenSpecialAgreementVo;
+import com.ydtech.modules.order.entity.vo.guoren.GuorenAccidentalDrivingVo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @description: 国任报价实体
+ * @author: wenks
+ * @date: 2023/11/28 18:24
+ **/
+@Data
+public class GuoRenQuoteVo implements Serializable {
+
+    private static final long serialVersionUID = -1474563895846828537L;
+
+    @ApiModelProperty("订单号")
+    private String orderNo;
+
+    @ApiModelProperty("保险公司编号")
+    private String companyId;
+
+    @ApiModelProperty(value = "协议id", required = true)
+    private String agreementId;
+
+    @ApiModelProperty("驾意险")
+    private GuorenAccidentalDrivingVo accidentalDrivingVo;
+
+    @ApiModelProperty("特别约定")
+    private List<GuoRenSpecialAgreementVo> guoRenSpecialAgreementVo;
+
+
+}

+ 27 - 0
src/main/java/com/ydtech/modules/order/entity/vo/guoren/GuoRenSpecialAgreement.java

@@ -0,0 +1,27 @@
+package com.ydtech.modules.order.entity.vo.guoren;
+
+import com.ydtech.constants.enums.InsuranceRisk;
+import com.ydtech.modules.order.entity.api.guoren.response.SpecialAgreementResponse;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class GuoRenSpecialAgreement extends SpecialAgreementResponse.DataDTO {
+
+    private static final long serialVersionUID = 1693753292254250743L;
+
+    @ApiModelProperty("险种编号")
+    private String riskCode;
+
+    @ApiModelProperty("险种名称")
+    private String riskName;
+
+    public GuoRenSpecialAgreement(SpecialAgreementResponse.DataDTO x, InsuranceRisk insuranceRisk) {
+        super(x);
+        this.riskName = insuranceRisk.getShortName();
+        this.riskCode = insuranceRisk.getCode();
+    }
+
+}

+ 41 - 0
src/main/java/com/ydtech/modules/order/entity/vo/guoren/GuoRenSpecialAgreementVo.java

@@ -0,0 +1,41 @@
+package com.ydtech.modules.order.entity.vo.guoren;
+
+
+import com.ydtech.modules.ins.model.guoren.PremiumReq;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class GuoRenSpecialAgreementVo implements Serializable {
+
+    private static final long serialVersionUID = -581259958411143292L;
+
+    @ApiModelProperty("特约编码")
+    private String clauseCode;
+
+    @ApiModelProperty("特约名")
+    private String clauses;
+
+    @ApiModelProperty("特约内容")
+    private String clausesContext;
+
+    @ApiModelProperty("险种编号")
+    private String riskCode;
+
+    @ApiModelProperty("险种名称")
+    private String riskName;
+
+    public static List<PremiumReq.PrptengageListDTO> toPrptengageListDTO(List<GuoRenSpecialAgreementVo> specialAgreementVo) {
+        List<PremiumReq.PrptengageListDTO> prptengageListDTOS = new ArrayList<>();
+        for (int i = 0; i < specialAgreementVo.size(); i++) {
+            PremiumReq.PrptengageListDTO prptengageListDTO = new PremiumReq.PrptengageListDTO(specialAgreementVo.get(i), i + 1);
+            prptengageListDTOS.add(prptengageListDTO);
+        }
+
+        return prptengageListDTOS;
+    }
+}

+ 5 - 3
src/main/java/com/ydtech/modules/order/entity/vo/guoren/GuorenAccidentalDrivingVo.java

@@ -1,15 +1,17 @@
 package com.ydtech.modules.order.entity.vo.guoren;
 package com.ydtech.modules.order.entity.vo.guoren;
 
 
 
 
-import com.alibaba.fastjson.annotation.JSONField;
-import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Data;
 
 
+import java.io.Serializable;
+
 @Data
 @Data
 @ApiModel(value = "国任非车险参数")
 @ApiModel(value = "国任非车险参数")
-public class GuorenAccidentalDrivingVo {
+public class GuorenAccidentalDrivingVo implements Serializable {
+
+    private static final long serialVersionUID = -3580765931341578327L;
 
 
     @ApiModelProperty("商品号")
     @ApiModelProperty("商品号")
     private String goodsCode;
     private String goodsCode;

+ 10 - 3
src/main/java/com/ydtech/modules/order/service/GuorenOrderApiService.java

@@ -3,9 +3,10 @@ package com.ydtech.modules.order.service;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.ins.model.guoren.CarModelResp;
 import com.ydtech.modules.ins.model.guoren.CarModelResp;
 import com.ydtech.modules.ins.model.vo.CarInfoVo;
 import com.ydtech.modules.ins.model.vo.CarInfoVo;
-import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
+import com.ydtech.modules.order.entity.vo.guoren.GuoRenQuoteVo;
+import com.ydtech.modules.order.entity.api.guoren.response.SpecialAgreementResponse;
 import com.ydtech.modules.order.entity.vo.PolicyPrintVo;
 import com.ydtech.modules.order.entity.vo.PolicyPrintVo;
-import com.ydtech.modules.order.entity.vo.guoren.GuorenAccidentalDrivingVo;
+import com.ydtech.modules.order.entity.vo.guoren.GuoRenSpecialAgreement;
 import com.ydtech.modules.order.entity.vo.guoren.NonAutoInsuranceList;
 import com.ydtech.modules.order.entity.vo.guoren.NonAutoInsuranceList;
 import com.ydtech.modules.order.entity.vo.guoren.NonAutoInsuranceQueryVo;
 import com.ydtech.modules.order.entity.vo.guoren.NonAutoInsuranceQueryVo;
 
 
@@ -27,10 +28,15 @@ public interface GuorenOrderApiService {
      */
      */
     HttpResult<CarModelResp> modelsQueryApi(CarInfoVo carInfo);
     HttpResult<CarModelResp> modelsQueryApi(CarInfoVo carInfo);
 
 
+    /**
+     * 特约查询
+     */
+    HttpResult<List<GuoRenSpecialAgreement>> queryClauseData(String agreementId);
+
     /**
     /**
      * 2 报价
      * 2 报价
      */
      */
-    HttpResult quoteApi(BaseQuoteVo<GuorenAccidentalDrivingVo> quoteVo);
+    HttpResult quoteApi(GuoRenQuoteVo quoteVo);
 
 
 
 
     /**
     /**
@@ -55,6 +61,7 @@ public interface GuorenOrderApiService {
 
 
     /**
     /**
      * 获取非车列表
      * 获取非车列表
+     *
      * @param nonAutoInsuranceQueryVo
      * @param nonAutoInsuranceQueryVo
      * @return
      * @return
      */
      */

+ 1 - 0
src/main/java/com/ydtech/modules/order/service/InsOrdersService.java

@@ -22,6 +22,7 @@ import java.util.List;
  */
  */
 public interface InsOrdersService extends IService<InsOrders> {
 public interface InsOrdersService extends IService<InsOrders> {
 
 
+
     /**
     /**
      * 通过 部门id 获取协议授权权限
      * 通过 部门id 获取协议授权权限
      *
      *

+ 32 - 25
src/main/java/com/ydtech/modules/order/service/impl/GuorenOrderApiServiceImpl.java

@@ -23,18 +23,18 @@ import com.ydtech.modules.order.dao.InsTaskImagesMapper;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.api.guoren.constants.GoodsClassifyList;
 import com.ydtech.modules.order.entity.api.guoren.constants.GoodsClassifyList;
+import com.ydtech.modules.order.entity.api.guoren.constants.GuoRenRiskCode;
 import com.ydtech.modules.order.entity.api.guoren.constants.PlatformInterfaceCode;
 import com.ydtech.modules.order.entity.api.guoren.constants.PlatformInterfaceCode;
 import com.ydtech.modules.order.entity.api.guoren.request.ApplicationDetailsRequest;
 import com.ydtech.modules.order.entity.api.guoren.request.ApplicationDetailsRequest;
 import com.ydtech.modules.order.entity.api.guoren.request.NonAutoInsuranceRequest;
 import com.ydtech.modules.order.entity.api.guoren.request.NonAutoInsuranceRequest;
+import com.ydtech.modules.order.entity.api.guoren.request.SpecialAgreementRequest;
 import com.ydtech.modules.order.entity.api.guoren.response.NonAutoInsOrderResponse;
 import com.ydtech.modules.order.entity.api.guoren.response.NonAutoInsOrderResponse;
 import com.ydtech.modules.order.entity.api.guoren.response.SignatureResponse;
 import com.ydtech.modules.order.entity.api.guoren.response.SignatureResponse;
+import com.ydtech.modules.order.entity.api.guoren.response.SpecialAgreementResponse;
 import com.ydtech.modules.order.entity.dto.InsUploadImagesDto;
 import com.ydtech.modules.order.entity.dto.InsUploadImagesDto;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
-import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
 import com.ydtech.modules.order.entity.vo.PolicyPrintVo;
 import com.ydtech.modules.order.entity.vo.PolicyPrintVo;
-import com.ydtech.modules.order.entity.vo.guoren.GuorenAccidentalDrivingVo;
-import com.ydtech.modules.order.entity.vo.guoren.NonAutoInsuranceList;
-import com.ydtech.modules.order.entity.vo.guoren.NonAutoInsuranceQueryVo;
+import com.ydtech.modules.order.entity.vo.guoren.*;
 import com.ydtech.modules.order.service.GuorenOrderApiService;
 import com.ydtech.modules.order.service.GuorenOrderApiService;
 import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.modules.order.service.InsOrdersService;
 import com.ydtech.modules.order.service.InsOrdersService;
@@ -44,6 +44,7 @@ import com.ydtech.utils.HttpUtil;
 import com.ydtech.utils.InsUtils;
 import com.ydtech.utils.InsUtils;
 import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.baidu.FileUtil;
 import com.ydtech.utils.baidu.FileUtil;
+import lombok.RequiredArgsConstructor;
 import org.apache.commons.httpclient.methods.multipart.FilePart;
 import org.apache.commons.httpclient.methods.multipart.FilePart;
 import org.apache.commons.httpclient.methods.multipart.Part;
 import org.apache.commons.httpclient.methods.multipart.Part;
 import org.apache.commons.httpclient.methods.multipart.StringPart;
 import org.apache.commons.httpclient.methods.multipart.StringPart;
@@ -65,6 +66,7 @@ import java.util.stream.Collectors;
 
 
 
 
 @Service
 @Service
+@RequiredArgsConstructor
 public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
 public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
 
 
     private static final Logger log = LoggerFactory.getLogger("guoRen");
     private static final Logger log = LoggerFactory.getLogger("guoRen");
@@ -95,22 +97,6 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
     private final GuorenRequestApiComponent guorenRequestApiComponent;
     private final GuorenRequestApiComponent guorenRequestApiComponent;
 
 
 
 
-    public GuorenOrderApiServiceImpl(GuorenApiConfigurationProperties properties, InsOrdersComponents insOrdersComponents,
-                                     GuorenRequestApiComponent guorenRequestApiComponent, InsAreaCompanyService insAreaCompanyService,
-                                     InsOrdersService insOrdersService, EsmInsCompanyService esmInsCompanyService,
-                                     ConfigureParametersComponents configureParametersComponents, InsTaskImagesMapper insTaskImagesMapper
-    ) {
-        this.properties = properties;
-        this.insOrdersComponents = insOrdersComponents;
-        this.guorenRequestApiComponent = guorenRequestApiComponent;
-        this.insAreaCompanyService = insAreaCompanyService;
-        this.insOrdersService = insOrdersService;
-        this.esmInsCompanyService = esmInsCompanyService;
-        this.configureParametersComponents = configureParametersComponents;
-        this.insTaskImagesMapper = insTaskImagesMapper;
-
-    }
-
     /**
     /**
      * 获取渠道信息
      * 获取渠道信息
      *
      *
@@ -135,12 +121,30 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
         return HttpResult.ok(request);
         return HttpResult.ok(request);
     }
     }
 
 
+    @Override
+    public HttpResult<List<GuoRenSpecialAgreement>> queryClauseData(String agreementId) {
+        // 获取协议配置信息
+        ChannelInfoDto channelInfo = gainChannelConfigInfo(agreementId);
+        List<GuoRenSpecialAgreement> list = new ArrayList<>();
+        for (InsuranceRisk insuranceRisk : InsuranceRisk.getInsuranceRisk()) {
+            String riskCode = GuoRenRiskCode.toInsuranceRisk(insuranceRisk.getCode());
+            SpecialAgreementRequest specialAgreementRequest = new SpecialAgreementRequest(channelInfo.getComCode(), riskCode);
+            SpecialAgreementResponse response = guorenRequestApiComponent.request(specialAgreementRequest,
+                    PlatformInterfaceCode.API_IIRBT00005, SpecialAgreementResponse.class);
+            List<GuoRenSpecialAgreement> collect = response.getData().stream()
+                    .map(x -> new GuoRenSpecialAgreement(x, insuranceRisk))
+                    .collect(Collectors.toList());
+            list.addAll(collect);
+        }
+
+        return HttpResult.ok(list);
+    }
 
 
     /**
     /**
      * 2 报价-
      * 2 报价-
      */
      */
     @Override
     @Override
-    public HttpResult quoteApi(BaseQuoteVo<GuorenAccidentalDrivingVo> quoteVo) {
+    public HttpResult quoteApi(GuoRenQuoteVo quoteVo) {
         log.debug("--------报价开始,订单号:{},协议号:{}--------------", quoteVo.getOrderNo(), quoteVo.getAgreementId());
         log.debug("--------报价开始,订单号:{},协议号:{}--------------", quoteVo.getOrderNo(), quoteVo.getAgreementId());
         // 获取协议配置信息
         // 获取协议配置信息
         ChannelInfoDto channelInfo = gainChannelConfigInfo(quoteVo.getAgreementId());
         ChannelInfoDto channelInfo = gainChannelConfigInfo(quoteVo.getAgreementId());
@@ -174,9 +178,11 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
             isNoCar = true;
             isNoCar = true;
             jsPremium = accidentalDrivingVo.getPremium();
             jsPremium = accidentalDrivingVo.getPremium();
         }
         }
+        // 特别约定
+        List<GuoRenSpecialAgreementVo> specialAgreementVo = quoteVo.getGuoRenSpecialAgreementVo();
 
 
         // 4、保费计算
         // 4、保费计算
-        PremiumResp.DataDTO premiumResult = premiumQuery(yaQuoteInfoVo, carPriceResult, vinQ, isNoCar);
+        PremiumResp.DataDTO premiumResult = premiumQuery(yaQuoteInfoVo, carPriceResult, vinQ, isNoCar, specialAgreementVo);
         AssertionUtils.isEmpty(premiumResult, "保费计算失败");
         AssertionUtils.isEmpty(premiumResult, "保费计算失败");
 
 
         // 5、 生成订单
         // 5、 生成订单
@@ -188,6 +194,7 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
         if (insuranceSlip.getResultCode() == 1) {
         if (insuranceSlip.getResultCode() == 1) {
             return HttpResult.error(insuranceSlip.getResultMsg());
             return HttpResult.error(insuranceSlip.getResultMsg());
         }
         }
+
         iac.setJqapplyno(insuranceSlip.getData().getProposalNoDetailVo().getProposalNoCI());
         iac.setJqapplyno(insuranceSlip.getData().getProposalNoDetailVo().getProposalNoCI());
         iac.setSyapplyno(insuranceSlip.getData().getProposalNoDetailVo().getProposalNoBI());
         iac.setSyapplyno(insuranceSlip.getData().getProposalNoDetailVo().getProposalNoBI());
         //生成订单扩展
         //生成订单扩展
@@ -528,7 +535,7 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
      * @author: lig
      * @author: lig
      * @date: 2023-10-18
      * @date: 2023-10-18
      */
      */
-    private InsAreaCompany responseOrder(InsOrders insOrder, QuoteRespVo quoteRespVo, BaseQuoteVo<GuorenAccidentalDrivingVo> quoteVo) {
+    private InsAreaCompany responseOrder(InsOrders insOrder, QuoteRespVo quoteRespVo, GuoRenQuoteVo quoteVo) {
         EsmInsCompany eic = esmInsCompanyService.getById(quoteVo.getCompanyId());
         EsmInsCompany eic = esmInsCompanyService.getById(quoteVo.getCompanyId());
         //保存订单信息
         //保存订单信息
         InsAreaCompany insAreaCompany = new InsAreaCompany();
         InsAreaCompany insAreaCompany = new InsAreaCompany();
@@ -870,13 +877,13 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
      * 保费计算
      * 保费计算
      */
      */
     public PremiumResp.DataDTO premiumQuery(BaseQuoteInfoVo yaQuoteInfoVo, CarPriceResp.DataDTO carPriceResult, VinQueryResp.DataDTO vinQ
     public PremiumResp.DataDTO premiumQuery(BaseQuoteInfoVo yaQuoteInfoVo, CarPriceResp.DataDTO carPriceResult, VinQueryResp.DataDTO vinQ
-            , boolean isNoCar) {
+            , boolean isNoCar, List<GuoRenSpecialAgreementVo> specialAgreementVo) {
 
 
         //请求信息列表
         //请求信息列表
         List<String> requestInfoList = new ArrayList<>();
         List<String> requestInfoList = new ArrayList<>();
         boolean boo;
         boolean boo;
         //构造请求参数
         //构造请求参数
-        PremiumReq req = PremiumReq.buildQuoteParam(yaQuoteInfoVo, carPriceResult, vinQ, isNoCar);
+        PremiumReq req = PremiumReq.buildQuoteParam(yaQuoteInfoVo, carPriceResult, vinQ, isNoCar, specialAgreementVo);
         PremiumResp resp;
         PremiumResp resp;
 
 
         for (; ; ) {
         for (; ; ) {

+ 22 - 13
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -16,7 +16,6 @@ import com.ydtech.modules.admin.model.SysUserRole;
 import com.ydtech.modules.admin.service.SysDeptService;
 import com.ydtech.modules.admin.service.SysDeptService;
 import com.ydtech.modules.admin.service.SysUserRoleService;
 import com.ydtech.modules.admin.service.SysUserRoleService;
 import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.modules.admin.service.SysUserService;
-import com.ydtech.modules.esm.model.EsmUserReferrer;
 import com.ydtech.modules.esm.service.EsmUserReferrerService;
 import com.ydtech.modules.esm.service.EsmUserReferrerService;
 import com.ydtech.modules.fee.service.impl.FeeRuleSchemeServiceImpl;
 import com.ydtech.modules.fee.service.impl.FeeRuleSchemeServiceImpl;
 import com.ydtech.modules.fnc.entity.InsFeeAudit;
 import com.ydtech.modules.fnc.entity.InsFeeAudit;
@@ -45,10 +44,12 @@ import org.springframework.context.annotation.Lazy;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 import org.springframework.util.ObjectUtils;
-import tk.mybatis.mapper.additional.idlist.IdListMapper;
 
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotBlank;
-import java.util.*;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
@@ -102,6 +103,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         this.insFeeAuditService = insFeeAuditService;
         this.insFeeAuditService = insFeeAuditService;
     }
     }
 
 
+
     @Override
     @Override
     public HttpResult<List<PtlAgreementInsCompanyDto>> getAgreementInsCompany(String deptId) {
     public HttpResult<List<PtlAgreementInsCompanyDto>> getAgreementInsCompany(String deptId) {
         List<PtlAgreementInsCompanyDto> agreementCompany = ptlAgreementService.getAgreementCompany(deptId);
         List<PtlAgreementInsCompanyDto> agreementCompany = ptlAgreementService.getAgreementCompany(deptId);
@@ -123,7 +125,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         InsAreaCompany insAreaCompany = insAreaCompanyService.getOne(wrapper);
         InsAreaCompany insAreaCompany = insAreaCompanyService.getOne(wrapper);
         if (!ObjectUtils.isEmpty(insAreaCompany)) {
         if (!ObjectUtils.isEmpty(insAreaCompany)) {
             InsOrders insOrders = getById(orderNo);
             InsOrders insOrders = getById(orderNo);
-            if(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode().equals(insOrders.getOrderstatus())){
+            if (InsOrderStatusEnum.ACCEPT_INSURANCE.getCode().equals(insOrders.getOrderstatus())) {
                 return;
                 return;
             }
             }
 
 
@@ -138,7 +140,6 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             insOrdersLambdaQueryWrapper.ne(InsOrders::getOrderstatus, InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
             insOrdersLambdaQueryWrapper.ne(InsOrders::getOrderstatus, InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
             insOrdersLambdaQueryWrapper.eq(InsOrders::getOrderno, orderNo);
             insOrdersLambdaQueryWrapper.eq(InsOrders::getOrderno, orderNo);
             update(insOrders, insOrdersLambdaQueryWrapper);
             update(insOrders, insOrdersLambdaQueryWrapper);
-
         }
         }
     }
     }
 
 
@@ -183,6 +184,11 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         if (ObjectUtils.isEmpty(insOrders1)) {
         if (ObjectUtils.isEmpty(insOrders1)) {
             insOrders1 = insOrders;
             insOrders1 = insOrders;
         }
         }
+
+        if (!quoteInfoVo.getCarInfo().getLicenseNo().equals(insOrders1.getLicenseno())) {
+            throw new SystemException("1001", "车牌与此订单不符,请重新录单");
+        }
+
         // 3 订单操作
         // 3 订单操作
         if (!userId.equals(insOrders1.getUserid()) || StringUtils.isEmpty(quoteInfoVo.getOrderNo())) {
         if (!userId.equals(insOrders1.getUserid()) || StringUtils.isEmpty(quoteInfoVo.getOrderNo())) {
             // 存入订单
             // 存入订单
@@ -193,8 +199,6 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                 throw new SystemException("订单生成失败");
                 throw new SystemException("订单生成失败");
             }
             }
 
 
-        } else if (!quoteInfoVo.getCarInfo().getLicenseNo().equals(insOrders.getLicenseno())) {
-            throw new SystemException("车牌与此订单不符,请重新录单");
         } else {
         } else {
             // 修改订单
             // 修改订单
             insOrders.setOrderno(quoteInfoVo.getOrderNo());
             insOrders.setOrderno(quoteInfoVo.getOrderNo());
@@ -252,28 +256,33 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                     list.stream().map(InsAreaCompany::getOrderno).distinct().collect(Collectors.toList());
                     list.stream().map(InsAreaCompany::getOrderno).distinct().collect(Collectors.toList());
             wrapper.in(InsOrders::getOrderno, collect);
             wrapper.in(InsOrders::getOrderno, collect);
         }
         }
+
         if (StringUtils.isNotEmpty(orderQueryVo.getAuditStatus())
         if (StringUtils.isNotEmpty(orderQueryVo.getAuditStatus())
-        &&orderQueryVo.getAuditStatus().equals("1")) {
+                && orderQueryVo.getAuditStatus().equals("1")) {
             List<InsFeeAudit> list = insFeeAuditService.query()
             List<InsFeeAudit> list = insFeeAuditService.query()
                     .select("DISTINCT orderno")
                     .select("DISTINCT orderno")
                     .eq("auditstatus", orderQueryVo.getAuditStatus())
                     .eq("auditstatus", orderQueryVo.getAuditStatus())
                     .list();
                     .list();
             List<String> collect = list.stream().map(InsFeeAudit::getOrderno).distinct().collect(Collectors.toList());
             List<String> collect = list.stream().map(InsFeeAudit::getOrderno).distinct().collect(Collectors.toList());
-            if(collect!=null && collect.size()>0){
+
+            if (!collect.isEmpty()) {
                 wrapper.in(InsOrders::getOrderno, collect);
                 wrapper.in(InsOrders::getOrderno, collect);
             }
             }
         }
         }
+
         if (StringUtils.isNotEmpty(orderQueryVo.getAuditStatus())
         if (StringUtils.isNotEmpty(orderQueryVo.getAuditStatus())
-                &&orderQueryVo.getAuditStatus().equals("0")) {
+                && orderQueryVo.getAuditStatus().equals("0")) {
             List<InsFeeAudit> list = insFeeAuditService.query()
             List<InsFeeAudit> list = insFeeAuditService.query()
                     .select("DISTINCT orderno")
                     .select("DISTINCT orderno")
                     .eq("auditstatus", "1")
                     .eq("auditstatus", "1")
                     .list();
                     .list();
             List<String> collect = list.stream().map(InsFeeAudit::getOrderno).distinct().collect(Collectors.toList());
             List<String> collect = list.stream().map(InsFeeAudit::getOrderno).distinct().collect(Collectors.toList());
-            if(collect!=null && collect.size()>0){
+
+            if (!collect.isEmpty()) {
                 wrapper.notIn(InsOrders::getOrderno, collect);
                 wrapper.notIn(InsOrders::getOrderno, collect);
             }
             }
         }
         }
+
         Page<InsOrders> insOrdersPage = page(page, wrapper);
         Page<InsOrders> insOrdersPage = page(page, wrapper);
         return new BasePageResult<>(orderQueryVo.getPageNum(), page.getSize(), insOrdersPage.getTotal(),
         return new BasePageResult<>(orderQueryVo.getPageNum(), page.getSize(), insOrdersPage.getTotal(),
                 page.getPages(), insOrdersPage.getRecords());
                 page.getPages(), insOrdersPage.getRecords());
@@ -315,8 +324,8 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             orderAndAreaCompany.setOrderFeeResult(orderFeeVoList);
             orderAndAreaCompany.setOrderFeeResult(orderFeeVoList);
         }
         }
         //查询费用审核状态
         //查询费用审核状态
-        List<InsFeeAudit> feeAuditList =insFeeAuditService.query().eq("ins_order_no",companyId).list();
-        if(feeAuditList!=null && feeAuditList.size()>0){
+        List<InsFeeAudit> feeAuditList = insFeeAuditService.query().eq("ins_order_no", companyId).list();
+        if (feeAuditList != null && feeAuditList.size() > 0) {
             orderAndAreaCompany.setFeeStatus(feeAuditList.get(0).getAuditstatus());
             orderAndAreaCompany.setFeeStatus(feeAuditList.get(0).getAuditstatus());
         }
         }
         //add 解决返回null页面错误  lig 2023-09-14
         //add 解决返回null页面错误  lig 2023-09-14

+ 3 - 2
src/main/resources/application-prod.yml

@@ -238,9 +238,10 @@ huatai:
     insuredCode: HT27f3c417f1e241ca01
     insuredCode: HT27f3c417f1e241ca01
     sourceCode: '016'
     sourceCode: '016'
     baseUrl: https://gears.pc.ehuatai.com:9040/interFaces/common/AutoInsuranceQuotation.do
     baseUrl: https://gears.pc.ehuatai.com:9040/interFaces/common/AutoInsuranceQuotation.do
-    selfPublicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBOtXf1T/no13LOuy5ti+/d+SADHns8hAv3+LjhDFsQRbHk3tHhnUNX7I8b25576AVmgraefS7jnpyB299f58PK8WkWZN+UB6pcyEpktrtqOnKcaQSTbkQzaseCW4sCRdoea0alzSXUuXC2FN0pHAE3JkT07e5doX3IHas2GJAkwIDAQAB
-    selfPrivateKey: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAME61d/VP+ejXcs67Lm2L7935IAMeezyEC/f4uOEMWxBFseTe0eGdQ1fsjxvbnnvoBWaCtp59LuOenIHb31/nw8rxaRZk35QHqlzISmS2u2o6cpxpBJNuRDNqx4JbiwJF2h5rRqXNJdS5cLYU3SkcATcmRPTt7l2hfcgdqzYYkCTAgMBAAECgYAwAAWRDNBLInHyQjj8CR3jWk0Q4giHq7oJqnwaOIRud9zIxwIgym3ZXKRSDvxKnhQOSa3Yh+MblFEmcmJnsoQ4OedLq7FVOw1eur/nw6jMcROT6ZiP512ZGgKZI1OdkQDpjCqM9Vg1brrFuGdV2RwI9ak2bjKbi7vs6slvd4r3AQJBAOqU+5xkyuaupg9cO/7TIxMgnTQH8W7IC1uDcx3f28QdkP+udJYfU/n1dYyGuhkW66KVANSqz4dsrEiAmfhvydECQQDS304+LEvPi4j8YmNlOXrs1o8H0tPB69svC9ER2YbrTjZf49XvY9fuor11XAprXZhBp8yvJu07FuRWilrQ8FkjAkEAop1qmqzIdweE+ErxECJfQygtsd77v9cPAH5sM752Q0pXtNbD3TmUZkeBGExg/3mDGW5/Z+2M9Y0hFRWJJs6fsQJAO11mV5Z82Tb9H6BLPyoJczeMGLW/q65MjFgVSaMlmoTwRdqMVdKT7bifAbUhscwtmv40X3LkAmiVa8+TdZLUZQJACu2NgPZkw6gjKCZf5xOfvKaC3PqKlhPghq+ypyutzTih9y81+EBJ25emLWNcd5BtIZ/AXmr3UUiGg0zX4s5njA==
+    selfPublicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCYUuKVmeF5N66v6MQmOR8pt4o33yrio/ZrDf2ehk/kHJ2BYdI+xE9dLrZW5dm0y8yPpIHN39JaLuYOlWz5DVsWJTSPj9eaq0hOiY9BGAHJ3yMHdX3wygpcD11BVc5v4wbX/kyAhmatK69sb4zzAtEve1NS/YwZVuGch0CrkGw3YQIDAQAB
+    selfPrivateKey: MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAJhS4pWZ4Xk3rq/oxCY5Hym3ijffKuKj9msN/Z6GT+QcnYFh0j7ET10utlbl2bTLzI+kgc3f0lou5g6VbPkNWxYlNI+P15qrSE6Jj0EYAcnfIwd1ffDKClwPXUFVzm/jBtf+TICGZq0rr2xvjPMC0S97U1L9jBlW4ZyHQKuQbDdhAgMBAAECgYAktOyXYoK8RFfbWjtSfrdsxScQub3K6foq6C8y8Wj1LpQiJqGUsJfze5tDK5agA/CiuODy7LnzM5QK9aVSCw7k0r8EeGpHcYRdLYZM0vXVFK2gIQctFemK4c6sg5p0Bn1LNRbJG7rgMMEA/OxcF6vyQahhFtPVtAQwc+dT0PV51QJBANd66rfTuxSRvIC/RE4W6iqzed2YZtx+0kd7KiN78Y4X6spposFCH4ALf4jUeRRXZAm+Qu71cq21m2GsQZ8bZdMCQQC096ilZXEjmEuvopQR3JvPbgAF+MtItusyDDsMR1CWwXq9XGMmxi6GhFY7r7C8b40j1IchVAEY5BcwxJwfjql7AkAp5QYZs5reBu/FgGqBXEcvAjIheW4WVLoBl9q7h2+RlujZbexs8rQ5KwMi0VyxLcSPeGR/HU2spHCPbvRbQPJtAkBANK4tIHSnwFz6D6ChRbgyPEDd3YuiXOPNefFpRdQd6L93d9Pl6eKP71v5CTiXYqyczcaz2G4bOrHPp7IMsD0JAkBO/q3ZMT+Nj2jdMn2AR1h+ngn38JnK46PznU0WoRPx72YoWbLxvaGWpu8scZAhpYeq/n+52NHFfu8ayDRNWjP2
     huaTaiPublicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCYyF2SBNzLOP5N5fFW2T2eQ5+iaI5wVpsedu+UY290TVuG152tkdtSuTXsx+8BKnd79/PF966/2aSP4EUm7vD9kvQUnX2EDUiMooorGvDTRxoHNXFGqOtxdMiUOuqx19HwNb4gOXZ1WdjWJwSmqC6ZP6OgxKIotCHJwe826Q/w8wIDAQAB
     huaTaiPublicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCYyF2SBNzLOP5N5fFW2T2eQ5+iaI5wVpsedu+UY290TVuG152tkdtSuTXsx+8BKnd79/PF966/2aSP4EUm7vD9kvQUnX2EDUiMooorGvDTRxoHNXFGqOtxdMiUOuqx19HwNb4gOXZ1WdjWJwSmqC6ZP6OgxKIotCHJwe826Q/w8wIDAQAB
+
 # api url
 # api url
 api:
 api:
   url: http://sxzgkj.baoxianzhanggui.com/web-api
   url: http://sxzgkj.baoxianzhanggui.com/web-api