Переглянути джерело

Merge remote-tracking branch 'origin/master'

lixiaolong 2 місяців тому
батько
коміт
97b18f4110
17 змінених файлів з 282 додано та 65 видалено
  1. 4 0
      commons/src/main/java/com/jzg/commons/entity/dto/GenerateQrcodeParam.java
  2. 4 6
      commons/src/main/java/com/jzg/commons/entity/scheme/vo/PtlSchemeSaveVo.java
  3. 3 0
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/crawler/entity/request/GuoRenCrawlerCreateOrderRequest.java
  4. 11 6
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/crawler/entity/request/GuoRenCrawlerProposalNoSaveRequest.java
  5. 1 1
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/crawler/service/impl/GuoRenCrawlerQuoteProcessServiceImpl.java
  6. 28 26
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/crawler/service/impl/GuoRenCrawlerRequestImpl.java
  7. 20 15
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerQuoteimmediatelyRequest.java
  8. 32 2
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/client/LocalLivingClient.java
  9. 48 6
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/RightsGrantController.java
  10. 3 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java
  11. 17 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/entity/dto/ChannelProductInfoQueryDTO.java
  12. 29 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/entity/dto/ChannelRightsCategoryDto.java
  13. 17 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/entity/vo/ChannelCategoryVo.java
  14. 41 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/entity/vo/ChannelProductInfoVo.java
  15. 4 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/interceptor/LiveServiceTokenInterceptor.java
  16. 5 2
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlSchemeServiceImpl.java
  17. 15 0
      tenant/organization/src/main/resources/mapper/SysUserJzgInfoMapper.xml

+ 4 - 0
commons/src/main/java/com/jzg/commons/entity/dto/GenerateQrcodeParam.java

@@ -16,5 +16,9 @@ public class GenerateQrcodeParam {
      */
     private String query;
 
+    private String phone;
+
+    private String number;
+
 
 }

+ 4 - 6
commons/src/main/java/com/jzg/commons/entity/scheme/vo/PtlSchemeSaveVo.java

@@ -5,20 +5,15 @@ import com.jzg.commons.constants.ProductsType;
 import com.jzg.commons.entity.po.PtlAgreementUndwrtRulesAttr;
 import com.jzg.commons.entity.po.PtlAgreementUndwrtRulesDictLabal;
 import com.jzg.commons.entity.scheme.po.*;
-import com.jzg.commons.entity.vo.AgreementRulesVo;
 import com.jzg.commons.exception.ValidateException;
 import com.jzg.commons.util.idgen.IdGenerate;
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.Valid;
-import jakarta.validation.constraints.Max;
 import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import org.hibernate.validator.constraints.Length;
-import org.springframework.beans.BeanUtils;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -77,6 +72,9 @@ public class PtlSchemeSaveVo {
         @Schema(description = "驾意险列表")
         private List<PtlSchemeInsuranceDrivingIntention> drivingIntentionList  = new ArrayList<>();
 
+        @Schema(description = "驾意险列表")
+        private List<PtlSchemeInsuranceDrivingIntention> drivingList  = new ArrayList<>();
+
     }
 
     public PtlSchemeSaveVo(PtlScheme ptlScheme,PtlSchemeInfo ptlSchemeInfo,
@@ -278,7 +276,7 @@ public class PtlSchemeSaveVo {
     public List<PtlSchemeInsuranceDrivingIntention> getPtlSchemeInsuranceDrivingIntentionList(){
         List<PtlSchemeInsuranceDrivingIntention> ptlSchemeInsuranceDrivingIntentionList = new ArrayList<>();
         for (Scheme scheme : schemeList) {
-            scheme.drivingIntentionList.forEach(drivingIntention -> {
+            scheme.getDrivingList().forEach(drivingIntention -> {
                 PtlSchemeInsuranceDrivingIntention ptlSchemeInsuranceDrivingIntention = new PtlSchemeInsuranceDrivingIntention();
                 ptlSchemeInsuranceDrivingIntention.setId(IdGenerate.nextId());
                 ptlSchemeInsuranceDrivingIntention.setSchemeInfoId(scheme.getId());

+ 3 - 0
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/crawler/entity/request/GuoRenCrawlerCreateOrderRequest.java

@@ -44,6 +44,9 @@ public class GuoRenCrawlerCreateOrderRequest implements Serializable {
     @JsonProperty("requestTime")
     private String requestTime;
 
+    @JsonProperty("orderCode")
+    private String orderCode;
+
     public GuoRenCrawlerCreateOrderRequest(QuoteVo quoteVo,
                                            GuoRenCrawlerCalculationPremiumRequest calculationPremiumRequest,
                                            List<GuoRenCrawlerQueryQuotationData.LiabDTO> queryLiabList) {

+ 11 - 6
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/crawler/entity/request/GuoRenCrawlerProposalNoSaveRequest.java

@@ -4,9 +4,9 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.quotation.guoren.crawler.entity.dto.GuoRenBcDTO;
 import com.jzg.quotation.guoren.crawler.entity.response.GuoRenCrawlerCalculationPremiumData;
-import org.springframework.util.StringUtils;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.springframework.util.StringUtils;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -32,19 +32,25 @@ public class GuoRenCrawlerProposalNoSaveRequest implements Serializable {
     @JsonProperty("ci")
     private GuoRenCrawlerCalculationPremiumData.CiDTO ci;
 
+    @JsonProperty("order")
+    private String order;
+
+
     public GuoRenCrawlerProposalNoSaveRequest(QuoteVo quoteVo, GuoRenCrawlerCalculationPremiumData guoRenCrawlerCalculationPremiumData, GuoRenCrawlerCalculationPremiumRequest calculationPremiumRequest, GuoRenCrawlerCreateOrderRequest createOrderRequest) {
         GuoRenCrawlerCalculationPremiumData.CiDTO ciDto = guoRenCrawlerCalculationPremiumData.getCi();
         ciDto.setPrptengageList(calculationPremiumRequest.getCi().getPrptengageList());
         GuoRenCrawlerCalculationPremiumData.BiDTO biDto = guoRenCrawlerCalculationPremiumData.getBi();
         biDto.setPrptengageList(calculationPremiumRequest.getBi().getPrptengageList());
+        this.bc = calculationPremiumRequest.getBc();
+        this.bc.getPrpTmain().setCaptcha("");
+        this.bc.getPrpTmain().setEProposalFlag("1");
         if (createOrderRequest != null) {
             List<GuoRenCrawlerCreateOrderRequest.OrderMainDTO> orderMainList = new ArrayList<>();
             orderMainList.add(createOrderRequest.getData().getOrderList().get(0).getOrderMain());
             calculationPremiumRequest.getBc().setOrderMainList(orderMainList);
+            this.order = createOrderRequest.getOrderCode();
+            this.bc.getPrpTmain().setOrderNo(createOrderRequest.getOrderCode());
         }
-        this.bc = calculationPremiumRequest.getBc();
-        this.bc.getPrpTmain().setCaptcha("");
-        this.bc.getPrpTmain().setEProposalFlag("1");
         this.basePartVo = calculationPremiumRequest.getBasePartVo();
         guoRenCrawlerCalculationPremiumData.getCi().getCiInsureDemand().setTonCount(quoteVo.getCarInfoVo().getTonCount());
         guoRenCrawlerCalculationPremiumData.getCi().getCiInsureDemand().setSeatCount(quoteVo.getCarInfoVo().getSeatCount());
@@ -106,8 +112,7 @@ public class GuoRenCrawlerProposalNoSaveRequest implements Serializable {
             }
             // 传播demandNo到ciCarShipTaxQGDemandSchema
             if (this.ci != null && this.ci.getCiCarShipTaxQGDemandSchema() != null) {
-                String effectiveDemandNo = StringUtils.hasText(ciDemandNo) ? ciDemandNo
-                        : (this.ci.getCiInsureDemand() != null ? this.ci.getCiInsureDemand().getDemandNo() : null);
+                String effectiveDemandNo = StringUtils.hasText(ciDemandNo) ? ciDemandNo : (this.ci.getCiInsureDemand() != null ? this.ci.getCiInsureDemand().getDemandNo() : null);
                 if (StringUtils.hasText(effectiveDemandNo)) {
                     this.ci.getCiCarShipTaxQGDemandSchema().setDemandNo(effectiveDemandNo);
                 }

+ 1 - 1
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/crawler/service/impl/GuoRenCrawlerQuoteProcessServiceImpl.java

@@ -111,7 +111,7 @@ public class GuoRenCrawlerQuoteProcessServiceImpl implements GuoRenCrawlerQuoteP
     public HttpHeaders getHeaders(String username) {
         HttpHeaders headers = new HttpHeaders();
         String token = guoRenCrawlerCacheComponent.getToken(username);
-//        String token = "eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJXMzAwMDM5OSIsInVzZXJJZCI6IjQ5NjE4MSIsIm5hbWUiOiLmnY7mmKXmooUiLCJleHAiOjE3ODEyNDU1NDJ9.YsfJuQ58NaPa-7aUrYjh0SdvRkxhsiejP648H39j6h1PztC0b5Rdb8GOi5oGkVew_CI-T5j0VeaYfSFF-DrqrT_LReqtbl-iM0_OeN8acFLNcXbhfv80mRz1HqPZrUXrwngS-8Q6eF42gOJVxAX_nSFNdJpX5977A3_KJdmVbxs";
+//        String token = "eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJXMzAwMDM5OSIsInVzZXJJZCI6IjQ5NjE4MSIsIm5hbWUiOiLmnY7mmKXmooUiLCJleHAiOjE3ODM2NzExMTZ9.M9ATzYxnqCtuqRmrChaHOoM0u67ULQK253xZFdZlPZIYqvloAEcU-FFXf0znSxoMD1xOqIbMgAvNlsHdNV33AQFndbvuA3A9t8wz5ys0ny-JZ7ik_mMW75RfkwwhB1pBWCGi4WcsVUqwXdGu_8if_Q-6X4aDq-kC2R1DK57FLd4";
         if (!StringUtils.hasText(token)) {
             throw new TokenExpireException("500", "国任财险账号登录过期,请重新登录");
         }

+ 28 - 26
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/crawler/service/impl/GuoRenCrawlerRequestImpl.java

@@ -139,32 +139,6 @@ public class GuoRenCrawlerRequestImpl implements GuoRenCrawlerRequest {
                 crawlerCalculationPremiumRequest.getBi().getPrpTmain().setOrderFlag("N");
             }
         }
-        // 驾意险(非车险)处理:查询 → 校验 → 投保
-        String niPolicyNumber = null;
-        GuoRenCrawlerCreateOrderRequest createOrderRequest = null;
-        if (CollUtil.isNotEmpty(quoteVo.getAccidentalDrivings())) {
-            // 驾意险查询:获取liabList用于订单创建
-            GuoRenCrawlerQueryQuotationRequest queryQuotationRequest = new GuoRenCrawlerQueryQuotationRequest(quoteVo,  crawlerCalculationPremiumRequest.getBc().getPrpTitemCar());
-            GuoRenCrawlerBaseResponse<GuoRenCrawlerQueryQuotationData> queryResponse = guoRenCrawlerRequestComponent.queryQuotation(queryQuotationRequest, headers);
-            List<GuoRenCrawlerQueryQuotationData.LiabDTO> queryLiabList = null;
-            if ("0000".equals(queryResponse.getCode()) && queryResponse.getData() != null) {
-                queryLiabList = queryResponse.getData().getLiabList();
-            }
-            createOrderRequest = new GuoRenCrawlerCreateOrderRequest(quoteVo, crawlerCalculationPremiumRequest, queryLiabList);
-            // 第一步:驾意险校验
-            GuoRenCrawlerBaseResponse<GuoRenCrawlerCreateOrderCheckData> checkResponse = guoRenCrawlerRequestComponent.createOrderCheck(createOrderRequest, headers);
-            if (!checkResponse.getCode().equals("0000")) {
-                throw new SystemException("驾意险订单校验失败:" + checkResponse.getMessage());
-            }
-            // 第二步:驾意险投保
-            GuoRenCrawlerBaseResponse<GuoRenCrawlerCreateOrderDataData> dataResponse = guoRenCrawlerRequestComponent.createOrderData(createOrderRequest, headers);
-            if (!dataResponse.getCode().equals("0000")) {
-                throw new SystemException("驾意险投保失败:" + dataResponse.getMessage());
-            }
-            if (dataResponse.getData() != null) {
-                niPolicyNumber = dataResponse.getData().getOrderCode();
-            }
-        }
 
         GuoRenCrawlerBaseResponse<GuoRenCrawlerCalculationPremiumData> calculationPremium = guoRenCrawlerRequestComponent.calculationPremium(crawlerCalculationPremiumRequest, headers);
         // 处理重复投保
@@ -219,6 +193,34 @@ public class GuoRenCrawlerRequestImpl implements GuoRenCrawlerRequest {
         } else if (calculationPremium.getResultCode() == 1) {
             return GuoRenCrawlerQuoteResultsVoBuild.buildFailQuoteResultsVo(quoteVo, calculationPremium);
         }
+        // 驾意险(非车险)处理:查询 → 校验 → 投保
+        String niPolicyNumber = null;
+        GuoRenCrawlerCreateOrderRequest createOrderRequest = null;
+        if (CollUtil.isNotEmpty(quoteVo.getAccidentalDrivings())) {
+            // 驾意险查询:获取liabList用于订单创建
+            GuoRenCrawlerQueryQuotationRequest queryQuotationRequest = new GuoRenCrawlerQueryQuotationRequest(quoteVo,  crawlerCalculationPremiumRequest.getBc().getPrpTitemCar());
+            GuoRenCrawlerBaseResponse<GuoRenCrawlerQueryQuotationData> queryResponse = guoRenCrawlerRequestComponent.queryQuotation(queryQuotationRequest, headers);
+            List<GuoRenCrawlerQueryQuotationData.LiabDTO> queryLiabList = null;
+            if ("0000".equals(queryResponse.getCode()) && queryResponse.getData() != null) {
+                queryLiabList = queryResponse.getData().getLiabList();
+            }
+            createOrderRequest = new GuoRenCrawlerCreateOrderRequest(quoteVo, crawlerCalculationPremiumRequest, queryLiabList);
+            // 第一步:驾意险校验
+            GuoRenCrawlerBaseResponse<GuoRenCrawlerCreateOrderCheckData> checkResponse = guoRenCrawlerRequestComponent.createOrderCheck(createOrderRequest, headers);
+            if (!checkResponse.getCode().equals("0000")) {
+                throw new SystemException("驾意险订单校验失败:" + checkResponse.getMessage());
+            }
+            // 第二步:驾意险投保
+            GuoRenCrawlerBaseResponse<GuoRenCrawlerCreateOrderDataData> dataResponse = guoRenCrawlerRequestComponent.createOrderData(createOrderRequest, headers);
+            if (!dataResponse.getCode().equals("0000")) {
+                throw new SystemException("驾意险投保失败:" + dataResponse.getMessage());
+            }
+            if (dataResponse.getData() != null) {
+                niPolicyNumber = dataResponse.getData().getOrderCode();
+                createOrderRequest.setOrderCode(niPolicyNumber);
+            }
+        }
+
 
         // 投保验证码处理
         GuoRenCrawlerCalculationPremiumData calculationPremiumData = guoRenCrawlerQuoteProcessService.insuranceVerificationCodeProcessing(crawlerCalculationPremiumRequest, calculationPremium.getData(), headers);

+ 20 - 15
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerQuoteimmediatelyRequest.java

@@ -30,8 +30,7 @@ public class HbCrawlerQuoteimmediatelyRequest extends HbBaseRequest {
     @Serial
     private static final long serialVersionUID = -4097447719083993314L;
 
-    public HbCrawlerQuoteimmediatelyRequest(QuoteVo quoteVo, HbEncDTO saleInfo, String depreciationPrice,
-                                            HengBangCrawlerConfigureParameters parameters, HbCrawlerQueryCarResponse.ContentDTO contentDTO) {
+    public HbCrawlerQuoteimmediatelyRequest(QuoteVo quoteVo, HbEncDTO saleInfo, String depreciationPrice, HengBangCrawlerConfigureParameters parameters, HbCrawlerQueryCarResponse.ContentDTO contentDTO) {
         CustomerInfoVo ownersInfo = quoteVo.getOwnersInfo();//车主
         CustomerInfoVo policyHolderInfo = quoteVo.getPolicyHolderInfo();//投保人
         CustomerInfoVo insuredPersonInfo = quoteVo.getInsuredPersonInfo();//被保人
@@ -69,14 +68,16 @@ public class HbCrawlerQuoteimmediatelyRequest extends HbBaseRequest {
         carInsureItemDTO.setModelCode(contentDTO.getModelCode());
         carInsureItemDTO.setFamilyName(contentDTO.getFamilyName());
         carInsureItemDTO.setAttachNature(carInfoVo.getPropertyCode());
-        carInsureItemDTO.setCiModelCode(StringUtils.isNotBlank(contentDTO.getCimodelCode())? contentDTO.getCimodelCode() : contentDTO.getCimodelCodeC());
+        carInsureItemDTO.setCiModelCode(StringUtils.isNotBlank(contentDTO.getCimodelCode()) ? contentDTO.getCimodelCode() : contentDTO.getCimodelCodeC());
         carInsureItemDTO.setPurchasePriceNotTax(Double.parseDouble(contentDTO.getPurchasePriceNotTax()));
         carInsureItemDTO.setStyleUniqueId(contentDTO.getVehicleStyleUniqueId());
         carInsureItemDTO.setCountyCode(ownersInfo.getCountyCode());
-        carInsureItemDTO.setCountyNameArray(new StringBuilder(ownersInfo.getProvince()).append(",").append(ownersInfo.getCity()).append(",").append(ownersInfo.getCounty()).toString());
-        carInsureItemDTO.setCountyCodeArray(new StringBuilder(ownersInfo.getProvinceCode()).append(",").append(ownersInfo.getCityCode()).append(",").append(ownersInfo.getCountyCode()).toString());
+        if (StringUtils.isNotEmpty(policyHolderInfo.getProvince())) {
+            carInsureItemDTO.setCountyNameArray(new StringBuilder(ownersInfo.getProvince()).append(",").append(ownersInfo.getCity()).append(",").append(ownersInfo.getCounty()).toString());
+            carInsureItemDTO.setCountyCodeArray(new StringBuilder(ownersInfo.getProvinceCode()).append(",").append(ownersInfo.getCityCode()).append(",").append(ownersInfo.getCountyCode()).toString());
+        }
         carInsureItemDTO.setPostCode(ownersInfo.getCountyCode());
-        carInsureItemDTO.setChgownerFlag(carInfoVo.isTransfer()? "1" : "0");
+        carInsureItemDTO.setChgownerFlag(carInfoVo.isTransfer() ? "1" : "0");
         carInsureItemDTO.setSpecialCarFlag("1");
         carInsureItemDTO.setTotalTonCount("0.00");
         carInsureItemDTO.setNoticeType(contentDTO.getNoticeType());
@@ -94,8 +95,10 @@ public class HbCrawlerQuoteimmediatelyRequest extends HbBaseRequest {
         riskRelatedPartyDTO.setEmail(insuredPersonInfo.getEmail());
         riskRelatedPartyDTO.setCountyCode(insuredPersonInfo.getCountyCode());
         riskRelatedPartyDTO.setPostCode(insuredPersonInfo.getCountyCode());
-        riskRelatedPartyDTO.setCountyNameArray(new StringBuilder(insuredPersonInfo.getProvince()).append(",").append(insuredPersonInfo.getCity()).append(",").append(insuredPersonInfo.getCounty()).toString());
-        riskRelatedPartyDTO.setCountyCodeArray(new StringBuilder(insuredPersonInfo.getProvinceCode()).append(",").append(insuredPersonInfo.getCityCode()).append(",").append(insuredPersonInfo.getCountyCode()).toString());
+        if (StringUtils.isNotEmpty(policyHolderInfo.getProvince())) {
+            riskRelatedPartyDTO.setCountyNameArray(new StringBuilder(insuredPersonInfo.getProvince()).append(",").append(insuredPersonInfo.getCity()).append(",").append(insuredPersonInfo.getCounty()).toString());
+            riskRelatedPartyDTO.setCountyCodeArray(new StringBuilder(insuredPersonInfo.getProvinceCode()).append(",").append(insuredPersonInfo.getCityCode()).append(",").append(insuredPersonInfo.getCountyCode()).toString());
+        }
         riskRelatedPartyDTO.setSex(insuredPersonInfo.getGender());
         riskRelatedPartyDTO.setAddress(insuredPersonInfo.getAddr());
         riskRelatedPartyDTO.setValidityBegintime(dateFormat(insuredPersonInfo.getIdentifyValidDate()));
@@ -105,7 +108,7 @@ public class HbCrawlerQuoteimmediatelyRequest extends HbBaseRequest {
         riskRelatedPartyDTO.setPosition("60");
         riskRelatedPartyDTO.setCustomerType("00");
         riskRelatedPartyDTO.setVipInd("0");
-        riskRelatedPartyDTO.setRelationshipToInsrnt(policyHolderInfo.getName().equals(insuredPersonInfo.getName())? "6" : "0");
+        riskRelatedPartyDTO.setRelationshipToInsrnt(policyHolderInfo.getName().equals(insuredPersonInfo.getName()) ? "6" : "0");
         this.carInsureRiskRelatedParty = riskRelatedPartyDTO;
         //设置投保人数据
         CarInsureRelatedPartyDTO carInsureRelatedPartyDTO = new CarInsureRelatedPartyDTO();
@@ -117,8 +120,10 @@ public class HbCrawlerQuoteimmediatelyRequest extends HbBaseRequest {
         carInsureRelatedPartyDTO.setEmail(policyHolderInfo.getEmail());
         carInsureRelatedPartyDTO.setCountyCode(policyHolderInfo.getCountyCode());
         carInsureRelatedPartyDTO.setPostCode(policyHolderInfo.getCountyCode());
-        carInsureRelatedPartyDTO.setCountyNameArray(new StringBuilder(policyHolderInfo.getProvince()).append(",").append(policyHolderInfo.getCity()).append(",").append(policyHolderInfo.getCounty()).toString());
-        carInsureRelatedPartyDTO.setCountyCodeArray(new StringBuilder(policyHolderInfo.getProvinceCode()).append(",").append(policyHolderInfo.getCityCode()).append(",").append(policyHolderInfo.getCountyCode()).toString());
+        if (StringUtils.isNotEmpty(policyHolderInfo.getProvince())) {
+            carInsureRelatedPartyDTO.setCountyNameArray(new StringBuilder(policyHolderInfo.getProvince()).append(",").append(policyHolderInfo.getCity()).append(",").append(policyHolderInfo.getCounty()).toString());
+            carInsureRelatedPartyDTO.setCountyCodeArray(new StringBuilder(policyHolderInfo.getProvinceCode()).append(",").append(policyHolderInfo.getCityCode()).append(",").append(policyHolderInfo.getCountyCode()).toString());
+        }
         carInsureRelatedPartyDTO.setSex(policyHolderInfo.getGender());
         carInsureRelatedPartyDTO.setAddress(policyHolderInfo.getAddr());
         carInsureRelatedPartyDTO.setValidityBegintime(dateFormat(policyHolderInfo.getIdentifyValidDate()));
@@ -160,14 +165,14 @@ public class HbCrawlerQuoteimmediatelyRequest extends HbBaseRequest {
         this.carInsureMain = carInsureMainDTO;
     }
 
-    private String dateFormat(String date){
+    private String dateFormat(String date) {
         // 空字符串直接返回
-        if (date == null || date.trim().isEmpty()){
+        if (date == null || date.trim().isEmpty()) {
             return date;
         }
         // 1. 解析为 LocalDateTime
         ZonedDateTime zdt = null;
-        if (date.length() == 10){
+        if (date.length() == 10) {
             DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
             LocalDate ld = LocalDate.parse(date, formatter);
             // 2. 补上 00:00:00,变成 LocalDateTime
@@ -176,7 +181,7 @@ public class HbCrawlerQuoteimmediatelyRequest extends HbBaseRequest {
             // 3. 设置时区为 +08:00(北京/上海)
             ZoneId zone = ZoneId.of("Asia/Shanghai");
             zdt = ldt.atZone(zone);
-        }else{
+        } else {
             DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
             LocalDateTime ldt = LocalDateTime.parse(date, formatter);
             // 2. 指定时区(这里用 +08:00)

+ 32 - 2
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/client/LocalLivingClient.java

@@ -1,6 +1,7 @@
 package com.jzg.quotation.summary.client;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.GenerateQrcodeParam;
@@ -10,6 +11,8 @@ import com.jzg.commons.entity.vo.LotteryCountVO;
 import com.jzg.commons.entity.vo.UnifiedUserClientVO;
 import com.jzg.quotation.summary.entity.Result;
 import com.jzg.quotation.summary.entity.dto.*;
+import com.jzg.quotation.summary.entity.vo.ChannelCategoryVo;
+import com.jzg.quotation.summary.entity.vo.ChannelProductInfoVo;
 import com.jzg.quotation.summary.entity.vo.ChannelRightsPackageVO;
 import com.jzg.quotation.summary.entity.vo.ChannelRightsVO;
 import com.jzg.quotation.summary.utils.FeignConfig;
@@ -52,7 +55,7 @@ public interface LocalLivingClient {
      * @return 分页结果
      */
     @PostMapping(value = "/channel/api/rightsGrant/package/list")
-    Result<IPage<ChannelRightsPackageVO>> queryRightsPackagePage(@RequestBody ChannelRightsPackageQueryDTO queryDTO);
+    Result<Page<ChannelRightsPackageVO>> queryRightsPackagePage(@RequestBody ChannelRightsPackageQueryDTO queryDTO);
 
     /**
      * 查询权益套餐明细
@@ -68,7 +71,34 @@ public interface LocalLivingClient {
      * @return 分页结果
      */
     @PostMapping(value = "/channel/api/rightsGrant/rights/list")
-    Result<IPage<ChannelRightsVO>> queryRightsPage(@RequestBody ChannelRightsQueryDTO queryDTO);
+    Result<Page<ChannelRightsVO>> queryRightsPage(@RequestBody ChannelRightsQueryDTO queryDTO);
+
+    /**
+     * 查询权益分类
+     *
+     * @param
+     * @return
+     */
+    @PostMapping("/channel/api/rightsGrant/get/category/list")
+    Result<List<ChannelRightsCategoryDto>> queryCategoryList();
+
+    /**
+     * 查询权益分类-二级页面
+     *
+     * @param
+     * @return
+     */
+    @PostMapping("/channel/api/rightsGrant/get/category")
+    Result<List<ChannelCategoryVo>> queryCategory();
+
+    /**
+     * 优惠券商品详情
+     *
+     * @param channelProductInfoQueryDTO
+     * @return
+     */
+    @PostMapping("/channel/api/rightsGrant/get/product")
+    Result<List<ChannelProductInfoVo>> getProduct(@RequestBody ChannelProductInfoQueryDTO channelProductInfoQueryDTO);
 
     /**
      * 查询抽奖活动规则

+ 48 - 6
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/RightsGrantController.java

@@ -1,10 +1,13 @@
 package com.jzg.quotation.summary.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.quotation.summary.client.LocalLivingClient;
 import com.jzg.quotation.summary.entity.Result;
 import com.jzg.quotation.summary.entity.dto.*;
+import com.jzg.quotation.summary.entity.vo.ChannelCategoryVo;
+import com.jzg.quotation.summary.entity.vo.ChannelProductInfoVo;
 import com.jzg.quotation.summary.entity.vo.ChannelRightsPackageVO;
 import com.jzg.quotation.summary.entity.vo.ChannelRightsVO;
 import io.swagger.v3.oas.annotations.Operation;
@@ -74,11 +77,11 @@ public class RightsGrantController {
 
     @Operation(summary = "权益套餐-分页查询")
     @PostMapping(value = "package/list")
-    public HttpResult<IPage<ChannelRightsPackageVO>> queryRightsPackagePage(@RequestBody ChannelRightsPackageQueryDTO queryDTO) {
+    public HttpResult<Page<ChannelRightsPackageVO>> queryRightsPackagePage(@RequestBody ChannelRightsPackageQueryDTO queryDTO) {
         //调生活服务平台
-        Result<IPage<ChannelRightsPackageVO>> result = localLivingClient.queryRightsPackagePage(queryDTO);
+        Result<Page<ChannelRightsPackageVO>> result = localLivingClient.queryRightsPackagePage(queryDTO);
         //把生活服务平台查询到的数据封装成返回jzg前端HttpResult对象
-        HttpResult<IPage<ChannelRightsPackageVO>> rightsPackageResult = new HttpResult<>();
+        HttpResult<Page<ChannelRightsPackageVO>> rightsPackageResult = new HttpResult<>();
 
         rightsPackageResult.setData(result.getResult());
         rightsPackageResult.setCode(result.getCode());
@@ -107,14 +110,53 @@ public class RightsGrantController {
      */
     @Operation(summary = "权益券-分页查询")
     @PostMapping(value = "/rights/list")
-    public HttpResult<IPage<ChannelRightsVO>> queryRightsPage(@RequestBody ChannelRightsQueryDTO queryDTO) {
+    public HttpResult<Page<ChannelRightsVO>> queryRightsPage(@RequestBody ChannelRightsQueryDTO queryDTO) {
         //调生活服务平台
-        Result<IPage<ChannelRightsVO>> result = localLivingClient.queryRightsPage(queryDTO);
+        Result<Page<ChannelRightsVO>> result = localLivingClient.queryRightsPage(queryDTO);
         //把生活服务平台查询到的数据封装成返回jzg前端HttpResult对象
-        HttpResult<IPage<ChannelRightsVO>> rightsResult = new HttpResult<>();
+        HttpResult<Page<ChannelRightsVO>> rightsResult = new HttpResult<>();
         rightsResult.setData(result.getResult());
         rightsResult.setCode(result.getCode());
         rightsResult.setMsg(result.getMessage());
         return rightsResult;
     }
+
+    @Operation(summary = "权益券-分类查询")
+    @PostMapping(value = "/get/category/list")
+    public HttpResult<List<ChannelRightsCategoryDto>> getCategoryList() {
+        //调生活服务平台
+        Result<List<ChannelRightsCategoryDto>> result = localLivingClient.queryCategoryList();
+        //把生活服务平台查询到的数据封装成返回jzg前端HttpResult对象
+        HttpResult<List<ChannelRightsCategoryDto>> categoryResult = new HttpResult<>();
+        categoryResult.setData(result.getResult());
+        categoryResult.setCode(result.getCode());
+        categoryResult.setMsg(result.getMessage());
+        return categoryResult;
+    }
+
+    @Operation(summary = "权益券-二级分类查询")
+    @PostMapping(value = "/get/category")
+    public HttpResult<List<ChannelCategoryVo>> getCategory() {
+        //调生活服务平台
+        Result<List<ChannelCategoryVo>> result = localLivingClient.queryCategory();
+        //把生活服务平台查询到的数据封装成返回jzg前端HttpResult对象
+        HttpResult<List<ChannelCategoryVo>> categoryResult = new HttpResult<>();
+        categoryResult.setData(result.getResult());
+        categoryResult.setCode(result.getCode());
+        categoryResult.setMsg(result.getMessage());
+        return categoryResult;
+    }
+
+    @Operation(summary = "权益券商品详情")
+    @PostMapping(value = "/get/product")
+    public HttpResult<List<ChannelProductInfoVo>> getProduct(@RequestBody ChannelProductInfoQueryDTO channelProductInfoQueryDTO) {
+        //调生活服务平台
+        Result<List<ChannelProductInfoVo>> channelApplicableStoresVo = localLivingClient.getProduct(channelProductInfoQueryDTO);
+        //把生活服务平台查询到的数据封装成返回jzg前端HttpResult对象
+        HttpResult<List<ChannelProductInfoVo>> productResult = new HttpResult<>();
+        productResult.setData(channelApplicableStoresVo.getResult());
+        productResult.setCode(channelApplicableStoresVo.getCode());
+        productResult.setMsg(channelApplicableStoresVo.getMessage());
+        return productResult;
+    }
 }

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

@@ -947,6 +947,7 @@ public class UnifyOrderManager {
         if (orderStatusResultVo.getOrderStatus() == InsOrderStatusEnum.UNDERWRITED) {
             doSomethingAfterUnderwited(insOrders);
         }
+
         return HttpResult.ok("状态刷新成功");
     }
 
@@ -1086,6 +1087,8 @@ public class UnifyOrderManager {
                         insOrders.getRealQuoteUserId(), CLIENT_ID, baseController.getUserSystemCode());
                 GenerateQrcodeParam qparam = new GenerateQrcodeParam();
                 qparam.setActivityId(activity.getId());
+                qparam.setPhone(quoteUserId);
+                qparam.setNumber(rule.getUwLotteryNum());
                 qparam.setQuery("i="+activity.getId()+"&t=1&n="+rule.getUwLotteryNum());
                 Result<String> stringResult = localLivingClient.generateQrcode(qparam);
                 if(stringResult.isSuccess() && !stringResult.getResult().isEmpty()){

+ 17 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/entity/dto/ChannelProductInfoQueryDTO.java

@@ -0,0 +1,17 @@
+package com.jzg.quotation.summary.entity.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author quchen
+ * @date 2026/7/7 8:51
+ */
+
+@Data
+public class ChannelProductInfoQueryDTO implements Serializable {
+    @Schema(description = "权益卷id")
+    private String rightsId;
+}

+ 29 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/entity/dto/ChannelRightsCategoryDto.java

@@ -0,0 +1,29 @@
+package com.jzg.quotation.summary.entity.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author quchen
+ * @date 2026/7/6 18:33
+ */
+
+@Data
+public class ChannelRightsCategoryDto {
+    private static final long serialVersionUID = 4916889390133265848L;
+
+    @Schema(description = "ID")
+    private String id;
+
+    @Schema(description = "父级ID")
+    private String pid;
+
+    @Schema(description = "分类名称")
+    private String name;
+
+    @Schema(description = "分类编码")
+    private String code;
+
+    @Schema(description = "分类")
+    private String serveSum;
+}

+ 17 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/entity/vo/ChannelCategoryVo.java

@@ -0,0 +1,17 @@
+package com.jzg.quotation.summary.entity.vo;
+
+import com.jzg.quotation.summary.entity.dto.ChannelRightsCategoryDto;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ * @author quchen
+ * @date 2026/7/7 10:46
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ChannelCategoryVo extends ChannelRightsCategoryDto {
+    private List<ChannelCategoryVo> children;
+}

+ 41 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/entity/vo/ChannelProductInfoVo.java

@@ -0,0 +1,41 @@
+package com.jzg.quotation.summary.entity.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author quchen
+ * @date 2026/7/7 8:52
+ */
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class ChannelProductInfoVo {
+    @Schema(description = "商品ID")
+    private String productId;
+
+    @Schema(description = "商品名称")
+    private String productName;
+
+    @Schema(description = "商品图片")
+    private String productImage;
+
+    @Schema(description = "价格")
+    private String price;
+
+    @Schema(description = "售价")
+    private String soldPrice;
+
+    @Schema(description = "购买数量")
+    private String buyersNumber;
+
+    @Schema(description = "是否是权益商品")
+    private String isRights;
+
+    @Schema(description = "分类id")
+    private String categoryId;
+}

+ 4 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/interceptor/LiveServiceTokenInterceptor.java

@@ -29,7 +29,10 @@ public class LiveServiceTokenInterceptor implements RequestInterceptor {
             "/rightsGrant/package/detail",
             "/rightsGrant/rights/list",
             "/rightsGrant/apiGrant",
-            "/rightsGrant/native/distribution"
+            "/rightsGrant/native/distribution",
+            "/rightsGrant/get/category/list",
+            "/rightsGrant/get/category",
+            "/rightsGrant/get/product"
     );
     @Override
     public void apply(RequestTemplate requestTemplate) {

+ 5 - 2
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlSchemeServiceImpl.java

@@ -515,8 +515,11 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
             if ("XDCX".equals(company.getCode())) {
                 CustomerInfoVo ownerInfo = schemeRuleFilterVo.getOwnerInfo();
                 CustomerInfoVo applyInfo = schemeRuleFilterVo.getApplyInfo();
-                if (ObjectUtil.isNotNull(ownerInfo) && ObjectUtil.isNotNull(applyInfo)
-                        && !StrUtil.equals(ownerInfo.getIdentifyNumber(), applyInfo.getIdentifyNumber())) {
+                String ownerIdentifyNumber = ObjectUtil.isNotNull(ownerInfo) ? StrUtil.trim(ownerInfo.getIdentifyNumber()) : null;
+                String applyIdentifyNumber = ObjectUtil.isNotNull(applyInfo) ? StrUtil.trim(applyInfo.getIdentifyNumber()) : null;
+                log.info("国任车主约定判断 - 车主身份证号:[{}], 投保人身份证号:[{}]", ownerIdentifyNumber, applyIdentifyNumber);
+                if (StrUtil.isNotBlank(ownerIdentifyNumber) && StrUtil.isNotBlank(applyIdentifyNumber)
+                        && !StrUtil.equals(ownerIdentifyNumber, applyIdentifyNumber)) {
                     CompanyClauseVo clauseVo = new CompanyClauseVo();
                     clauseVo.setCompanyId(company.getId());
                     clauseVo.setClauseCode("T0028");

+ 15 - 0
tenant/organization/src/main/resources/mapper/SysUserJzgInfoMapper.xml

@@ -190,6 +190,13 @@
                 or  suji.work_number = #{sysUserInfoListVo.salesman}
                 or  su.id = #{sysUserInfoListVo.salesman})
             </if>
+            <if test="sysUserInfoListVo.name != null and sysUserInfoListVo.name != ''">
+                AND (
+                suji.name LIKE CONCAT('%',#{sysUserInfoListVo.name},'%')
+                OR su.username LIKE CONCAT('%',#{sysUserInfoListVo.name},'%')
+                OR su.mobile LIKE CONCAT('%',#{sysUserInfoListVo.name},'%')
+                )
+            </if>
         </where>
         order by suji.create_time desc
     </select>
@@ -273,6 +280,14 @@
                     and sujis.type_attr != 2 AND sujis.type_attr != 3
                 </if>
             </if>
+
+            <if test="sysUserInfoListVo.name != null and sysUserInfoListVo.name != ''">
+                AND (
+                suji.name LIKE CONCAT('%',#{sysUserInfoListVo.name},'%')
+                OR su.username LIKE CONCAT('%',#{sysUserInfoListVo.name},'%')
+                OR su.mobile LIKE CONCAT('%',#{sysUserInfoListVo.name},'%')
+                )
+            </if>
         </where>
         group by suji.id, soul.organization_id, so.name
         order by suji.create_time desc