wks 2 лет назад
Родитель
Сommit
6e43a7c611
17 измененных файлов с 455 добавлено и 32 удалено
  1. 18 0
      src/main/java/com/ydtech/modules/order/components/bohai/BoHaiRequestApiComponent.java
  2. 37 7
      src/main/java/com/ydtech/modules/order/controller/BoHaiOrderApiController.java
  3. 24 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/AuditStatus.java
  4. 18 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/PayResult.java
  5. 2 2
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/ResponseCode.java
  6. 55 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/ManualReviewRequest.java
  7. 21 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/PaymentCallbackRequest.java
  8. 2 5
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/PaymentRequest.java
  9. 25 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/StatusDocumentsRequest.java
  10. 36 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/CallbackResponse.java
  11. 6 12
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/PaymentResponse.java
  12. 49 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/StatusDocumentsResponse.java
  13. 12 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/VehicleTypeQueryResponse.java
  14. 0 1
      src/main/java/com/ydtech/modules/order/entity/api/zhongmei/request/ApprovedRequest.java
  15. 28 0
      src/main/java/com/ydtech/modules/order/service/BoHaiOrderApiService.java
  16. 111 5
      src/main/java/com/ydtech/modules/order/service/impl/BoHaiOrderApiServiceImpl.java
  17. 11 0
      src/main/java/com/ydtech/modules/order/utils/SignatureUtils.java

+ 18 - 0
src/main/java/com/ydtech/modules/order/components/bohai/BoHaiRequestApiComponent.java

@@ -186,5 +186,23 @@ public class BoHaiRequestApiComponent {
         return post(electronicPolicyRequest, properties.getUrl(), ElectronicPolicyResponse.class);
     }
 
+    /**
+     * 核保请求
+     *
+     * @param statusDocumentsRequest 核保请求
+     * @return 响应
+     */
+    public StatusDocumentsResponse statusDocuments(StatusDocumentsRequest statusDocumentsRequest) throws Exception {
+        return post(statusDocumentsRequest, properties.getUrl(), StatusDocumentsResponse.class);
+    }
+
+
+    public String encryptionCallbackResponse(ResponseCode responseCode, String requestNo) throws Exception {
+        CallbackResponse callbackResponse = new CallbackResponse(responseCode, requestNo);
+        String json = JSON.toJSONString(callbackResponse, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
+        Map<String, String> stringStringMap = SignatureUtils.encryptAndSign(properties.getSelfPrivateKey(),
+                properties.getBoHaiPublicKey(), json, false, true);
+        return stringStringMap.get("content");
+    }
 
 }

+ 37 - 7
src/main/java/com/ydtech/modules/order/controller/BoHaiOrderApiController.java

@@ -2,26 +2,24 @@ package com.ydtech.modules.order.controller;
 
 
 import com.ydtech.aop.request.RequestSingleParam;
+import com.ydtech.config.properties.BohaiApiConfigurationProperties;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.ins.model.vo.QuoteRespVo;
 import com.ydtech.modules.order.aop.QuoteVerification;
 import com.ydtech.modules.order.components.InsOrdersComponents;
+import com.ydtech.modules.order.entity.api.bohai.BoHaiEncrypted;
+import com.ydtech.modules.order.entity.api.bohai.request.ManualReviewRequest;
+import com.ydtech.modules.order.entity.api.bohai.request.PaymentCallbackRequest;
 import com.ydtech.modules.order.entity.api.bohai.response.NonAutomotiveProductsDetailsResponse;
 import com.ydtech.modules.order.entity.api.bohai.response.NonAutomotiveProductsResponse;
-import com.ydtech.modules.order.entity.api.zijin.request.PaymentCallbacksRequest;
-import com.ydtech.modules.order.entity.api.zijin.request.SubmitVerifyRequest;
-import com.ydtech.modules.order.entity.api.zijin.response.QueryClauseDataResponse;
-import com.ydtech.modules.order.entity.api.zijin.response.QueryVehicProductsResponse;
 import com.ydtech.modules.order.entity.crawler.vo.CrawlerPolicyPrintVo;
 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.SpecialAuditVo;
 import com.ydtech.modules.order.entity.vo.bohai.ProductDetailsQueryVo;
 import com.ydtech.modules.order.entity.vo.bohai.ProductQueryVo;
 import com.ydtech.modules.order.entity.vo.zj.ZjQuoteAccidentVo;
-import com.ydtech.modules.order.entity.vo.zj.ZjVehicleProductsQueryVo;
 import com.ydtech.modules.order.service.BoHaiOrderApiService;
+import com.ydtech.modules.order.utils.SignatureUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
@@ -44,6 +42,9 @@ public class BoHaiOrderApiController {
 
     private final InsOrdersComponents insOrdersComponents;
 
+    private final BohaiApiConfigurationProperties properties;
+
+
     @PostMapping("/productQuery")
     @ApiOperation("车+X产品查询接口")
     public HttpResult<List<NonAutomotiveProductsResponse.DataDTO.ProductsDTO>> productQuery(@RequestBody ProductQueryVo productQueryVo) throws Exception {
@@ -82,4 +83,33 @@ public class BoHaiOrderApiController {
         return this.boHaiOrderApiService.getPolicyPrint(companyId);
     }
 
+    @PostMapping("/getOrderDetail")
+    @ApiOperation(value = "订单状态查询")
+    public HttpResult<Object> getOrderDetail(@RequestSingleParam(value = "companyId") String companyId) throws Exception {
+        return this.boHaiOrderApiService.getOrderDetail(companyId);
+    }
+
+    @PostMapping("/auditStatusQuery")
+    @ApiOperation(value = "核保状态查询")
+    public HttpResult<Object> auditStatusQuery(@RequestSingleParam(value = "companyId") String companyId) throws Exception {
+        return this.boHaiOrderApiService.auditStatusQuery(companyId);
+    }
+
+    @PostMapping("/underwritingCallback")
+    @ApiOperation(value = "支付回调")
+    public String underwritingCallback(@RequestBody BoHaiEncrypted s) throws Exception {
+        PaymentCallbackRequest coverageRequest = SignatureUtils.decryptMessage(s.getBizContent(), PaymentCallbackRequest.class, "承保回调",
+                properties.getSelfPrivateKey());
+        return this.boHaiOrderApiService.underwritingCallback(coverageRequest);
+    }
+
+    @PostMapping("/auditCallback")
+    @ApiOperation(value = "审核回调")
+    public String auditCallback(@RequestBody BoHaiEncrypted s) throws Exception {
+        ManualReviewRequest approvedRequest = SignatureUtils.decryptMessage(s.getBizContent(), ManualReviewRequest.class, "审核回调",
+                properties.getSelfPrivateKey());
+        return this.boHaiOrderApiService.auditCallback(approvedRequest);
+    }
+
+
 }

+ 24 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/AuditStatus.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @description: 核保状态
+ * @author: wenks
+ * @date: 2024/3/11 14:05
+ **/
+@Getter
+@AllArgsConstructor
+public enum AuditStatus {
+
+    A_0("0", "失败"),
+    A_1("1", "成功");
+
+    private final String code;
+
+    private final String desc;
+
+
+}

+ 18 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/PayResult.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum PayResult {
+
+    P_0("0", "支付失败"),
+    P_1("1", "支付成功");
+
+    private final String code;
+
+    private final String desc;
+
+}

+ 2 - 2
src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/ResponseCode.java

@@ -14,9 +14,9 @@ import lombok.Getter;
 @Getter
 public enum ResponseCode {
 
-    R_Z00001("Z00001", "失败"),
+    R_Z00001("Z00001", "处理成功"),
     R_Z00002("Z00002", "再次调用此接口确认"),
-    R_Z00004("Z00004", "成功");
+    R_Z00004("Z00004", "处理失败");
 
     private final String code;
 

+ 55 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/ManualReviewRequest.java

@@ -0,0 +1,55 @@
+package com.ydtech.modules.order.entity.api.bohai.request;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+/**
+ * @description: 人工审核回调
+ * @author: wenks
+ * @date: 2024/3/11 10:11
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class ManualReviewRequest extends BoHaiBaseRequest {
+
+    private static final long serialVersionUID = 417258276820521247L;
+
+    @JsonProperty("underwritingCallBackReq")
+    private UnderwritingCallBackReqDTO underwritingCallBackReq;
+
+    @NoArgsConstructor
+    @Data
+    public static class UnderwritingCallBackReqDTO implements Serializable {
+
+        private static final long serialVersionUID = 7879707923246950311L;
+
+        @JsonProperty("busUniqueId")
+        private String busUniqueId;
+        @JsonProperty("underwritingBacks")
+        private List<UnderwritingBacksDTO> underwritingBacks;
+
+        @NoArgsConstructor
+        @Data
+        public static class UnderwritingBacksDTO implements Serializable {
+
+            private static final long serialVersionUID = -4487438107644788942L;
+
+            @JsonProperty("applicationNo")
+            private String applicationNo;
+            @JsonProperty("insuranceType")
+            private String insuranceType;
+            @JsonProperty("auditOpinion")
+            private String auditOpinion;
+            @JsonProperty("auditStatus")
+            private String auditStatus;
+        }
+    }
+}

+ 21 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/PaymentCallbackRequest.java

@@ -0,0 +1,21 @@
+package com.ydtech.modules.order.entity.api.bohai.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class PaymentCallbackRequest extends BoHaiBaseRequest  {
+
+    private static final long serialVersionUID = -5849125843812787335L;
+
+    @JsonProperty("busUniqueId")
+    private String busUniqueId;
+
+    @JsonProperty("payResult")
+    private String payResult;
+
+}

+ 2 - 5
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/PaymentRequest.java

@@ -9,7 +9,7 @@ import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
 /**
- * @description: 渤海财险 支付
+ * @description: 渤海财险 电子签名支付
  * @author: wenks
  * @date: 2024/3/7 18:34
  **/
@@ -20,14 +20,11 @@ public class PaymentRequest extends BoHaiBaseRequest{
 
     private static final long serialVersionUID = 7772208518421837950L;
 
-    @JsonProperty("payWay")
-    private String payWay;
-
     @JsonProperty("busUniqueId")
     private String busUniqueId;
 
     public PaymentRequest(BoHaiConfigureParameters parameters, String orderNo, String insOrderNo) {
-        this.setBaseParam(parameters, RequestType.Z00008.getCode(), orderNo);
+        this.setBaseParam(parameters, RequestType.Z00013.getCode(), orderNo);
         this.busUniqueId = insOrderNo;
     }
 

+ 25 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/StatusDocumentsRequest.java

@@ -0,0 +1,25 @@
+package com.ydtech.modules.order.entity.api.bohai.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.bohai.constants.RequestType;
+import com.ydtech.modules.order.entity.config.BoHaiConfigureParameters;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class StatusDocumentsRequest extends BoHaiBaseRequest{
+
+    private static final long serialVersionUID = 8373969827791168689L;
+
+    @JsonProperty("applicationNo")
+    private String applicationNo;
+
+    public StatusDocumentsRequest(BoHaiConfigureParameters parameters, String id, String applicationNo) {
+        this.setBaseParam(parameters, RequestType.Z00021.getCode(), id);
+        this.applicationNo = applicationNo;
+    }
+
+}

+ 36 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/response/CallbackResponse.java

@@ -0,0 +1,36 @@
+package com.ydtech.modules.order.entity.api.bohai.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.bohai.constants.ResponseCode;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@NoArgsConstructor
+@Data
+public class CallbackResponse {
+
+    @JsonProperty("responseCode")
+    private String responseCode;
+
+    @JsonProperty("responseMsg")
+    private String responseMsg;
+
+    @JsonProperty("baseParam")
+    private BaseParamDTO baseParam;
+
+
+    public CallbackResponse(ResponseCode responseCode, String requestNo) {
+        this.responseCode = responseCode.getCode();
+        this.responseMsg = responseCode.getDesc();
+        this.baseParam = new BaseParamDTO(requestNo);
+    }
+
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @Data
+    public static class BaseParamDTO {
+        @JsonProperty("requestNo")
+        private String requestNo;
+    }
+}

+ 6 - 12
src/main/java/com/ydtech/modules/order/entity/api/bohai/response/PaymentResponse.java

@@ -30,19 +30,13 @@ public class PaymentResponse extends BoHaiBaseResponse {
 
         private static final long serialVersionUID = 3700311849033773101L;
 
-        @JsonProperty("payNo")
-        private String payNo;
+        @JsonProperty("proposalNo")
+        private String proposalNo;
 
-        @JsonProperty("checkCode")
-        private String checkCode;
+        @JsonProperty("qrCodeUrl")
+        private String qrCodeUrl;
 
-        @JsonProperty("amount")
-        private String amount;
-
-        @JsonProperty("payUrl")
-        private String payUrl;
-
-        @JsonProperty("paymentEndDate")
-        private String paymentEndDate;
+        @JsonProperty("signQRCodeDateValid")
+        private String signQRCodeDateValid;
     }
 }

+ 49 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/response/StatusDocumentsResponse.java

@@ -0,0 +1,49 @@
+package com.ydtech.modules.order.entity.api.bohai.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class StatusDocumentsResponse extends BoHaiBaseResponse {
+
+    private static final long serialVersionUID = -7045419658816145147L;
+
+    @JsonProperty("data")
+    private DataDTO data;
+
+    @NoArgsConstructor
+    @Data
+    public static class DataDTO implements Serializable {
+
+        private static final long serialVersionUID = -5453411109595535336L;
+
+        @JsonProperty("documentList")
+        private List<DocumentListDTO> documentList;
+
+        @NoArgsConstructor
+        @Data
+        public static class DocumentListDTO implements Serializable {
+
+            private static final long serialVersionUID = 1631342435902346361L;
+
+            @JsonProperty("policyNo")
+            private String policyNo;
+
+            @JsonProperty("insuranceType")
+            private String insuranceType;
+
+            @JsonProperty("applicationNo ")
+            private String applicationNo;
+
+            @JsonProperty("status")
+            private String status;
+        }
+    }
+}

+ 12 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/response/VehicleTypeQueryResponse.java

@@ -3,6 +3,7 @@ package com.ydtech.modules.order.entity.api.bohai.response;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.ydtech.modules.order.entity.filter.CarModelsFilter;
+import com.ydtech.modules.order.entity.vo.CoreModelsVo;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
@@ -91,6 +92,17 @@ public class VehicleTypeQueryResponse extends BoHaiBaseResponse {
             public String getCarYear() {
                 return yearPattern;
             }
+
+            public CoreModelsVo toCoreModelsVo(){
+                CoreModelsVo coreModelsVo = new CoreModelsVo();
+                coreModelsVo.setModelCode(this.getModelCode());
+                coreModelsVo.setModelCode(this.getModelCode());
+                coreModelsVo.setSeatCount(this.seatCount);
+                coreModelsVo.setCarYear(this.getCarYear());
+                coreModelsVo.setPurchasePrice(this.getPurchasePrice());
+                coreModelsVo.setEnginedesc(this.getEngineCapacity());
+                return coreModelsVo;
+            }
         }
     }
 }

+ 0 - 1
src/main/java/com/ydtech/modules/order/entity/api/zhongmei/request/ApprovedRequest.java

@@ -1,7 +1,6 @@
 package com.ydtech.modules.order.entity.api.zhongmei.request;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.ydtech.modules.order.entity.api.zhongmei.response.SubmitResponse;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;

+ 28 - 0
src/main/java/com/ydtech/modules/order/service/BoHaiOrderApiService.java

@@ -2,6 +2,8 @@ package com.ydtech.modules.order.service;
 
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.ins.model.vo.QuoteRespVo;
+import com.ydtech.modules.order.entity.api.bohai.request.ManualReviewRequest;
+import com.ydtech.modules.order.entity.api.bohai.request.PaymentCallbackRequest;
 import com.ydtech.modules.order.entity.api.bohai.response.NonAutomotiveProductsDetailsResponse;
 import com.ydtech.modules.order.entity.api.bohai.response.NonAutomotiveProductsResponse;
 import com.ydtech.modules.order.entity.crawler.vo.CrawlerPolicyPrintVo;
@@ -60,5 +62,31 @@ public interface BoHaiOrderApiService {
      */
     HttpResult<CrawlerPolicyPrintVo> getPolicyPrint(String subOrderNo) throws Exception;
 
+    /**
+     * 订单状态查询
+     *
+     * @param subOrderNo 子订单号
+     * @return
+     */
+    HttpResult<Object> getOrderDetail(String subOrderNo) throws Exception;
+
+    /**
+     * 核保状态查询
+     *
+     * @param subOrderNo 子订单号
+     * @return
+     */
+    HttpResult<Object> auditStatusQuery(String subOrderNo) throws Exception;
 
+    /**
+     * @param coverageRequest
+     * @return
+     */
+    String underwritingCallback(PaymentCallbackRequest coverageRequest) throws Exception;
+
+    /**
+     * @param approvedRequest
+     * @return
+     */
+    String auditCallback(ManualReviewRequest approvedRequest) throws Exception;
 }

+ 111 - 5
src/main/java/com/ydtech/modules/order/service/impl/BoHaiOrderApiServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ydtech.modules.order.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.core.page.HttpResult;
@@ -14,8 +15,7 @@ import com.ydtech.modules.order.components.bohai.BoHaiRequestApiComponent;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.TaxArrears;
-import com.ydtech.modules.order.entity.api.bohai.constants.Coverages;
-import com.ydtech.modules.order.entity.api.bohai.constants.ResponseCode;
+import com.ydtech.modules.order.entity.api.bohai.constants.*;
 import com.ydtech.modules.order.entity.api.bohai.request.*;
 import com.ydtech.modules.order.entity.api.bohai.response.*;
 import com.ydtech.modules.order.entity.config.BoHaiConfigureParameters;
@@ -31,6 +31,7 @@ import com.ydtech.modules.order.service.BoHaiOrderApiService;
 import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.modules.order.service.InsOrdersService;
 import com.ydtech.modules.order.service.InsTaskImagesService;
+import com.ydtech.modules.order.utils.SignatureUtils;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
 import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
 import com.ydtech.utils.CalculateUtils;
@@ -41,6 +42,7 @@ import org.springframework.stereotype.Service;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 
@@ -135,7 +137,7 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
         QuotationRequest quotationRequest = new QuotationRequest(parameters, quoteInfoVo.getRiskList(), quoteInfoVo.getKindList(),
                 currentValue, orderNo, carInfo);
         QuotationResponse response = boHaiRequestApiComponent.quotation(quotationRequest);
-        QuoteRespVo quoteRespVo = getQuoteRespVo(response, quoteInfoVo);
+        QuoteRespVo quoteRespVo = getQuoteRespVo(response, quoteInfoVo, vehicleModelsDTO);
         return responseOrder(response, quoteRespVo, ptlAgreementAttribution, orderNo);
     }
 
@@ -184,7 +186,7 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
             // 支付请求
             PaymentRequest paymentRequest = new PaymentRequest(parameters, insAreaCompany.getId(), insAreaCompany.getInsOrderNo());
             PaymentResponse paymentResponse = boHaiRequestApiComponent.payment(paymentRequest);
-            String payUrl = paymentResponse.getData().getPayUrl();
+            String payUrl = paymentResponse.getData().getQrCodeUrl();
             insAreaCompany.setPaymentLink(payUrl);
             insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
             return HttpResult.ok("核保通过");
@@ -230,7 +232,109 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
         return HttpResult.ok(crawlerPolicyPrintVo);
     }
 
-    public QuoteRespVo getQuoteRespVo(QuotationResponse response, BaseQuoteInfoVo yaQuoteInfoVo) {
+    @Override
+    public HttpResult<Object> getOrderDetail(String subOrderNo) throws Exception {
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(subOrderNo);
+        List<StatusDocumentsResponse.DataDTO.DocumentListDTO> documentList = getDocumentListDTO(insAreaCompany);
+        List<StatusDocumentsResponse.DataDTO.DocumentListDTO> documentListDTOS =
+                documentList.stream().filter(x -> ResultCode.RC_B5.getCode().equals(x.getStatus())).collect(Collectors.toList());
+        if (documentListDTOS.size() == documentList.size()) {
+            insAreaCompany.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
+            insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+            return HttpResult.ok("承保成功");
+        }
+        return HttpResult.error("承保失败");
+    }
+
+    @Override
+    public HttpResult<Object> auditStatusQuery(String subOrderNo) throws Exception {
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(subOrderNo);
+        List<StatusDocumentsResponse.DataDTO.DocumentListDTO> documentList = getDocumentListDTO(insAreaCompany);
+        List<StatusDocumentsResponse.DataDTO.DocumentListDTO> documentListDTOS =
+                documentList.stream().filter(x -> ResultCode.RC_A0.getCode().equals(x.getStatus())).collect(Collectors.toList());
+        if (documentListDTOS.size() == documentList.size()) {
+            // 支付请求
+            String payUrl = getQrCodeUrl(insAreaCompany);
+            insAreaCompany.setPaymentLink(payUrl);
+            insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());
+            insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+            return HttpResult.ok("人工核保成功");
+        }
+
+        return HttpResult.error("人工核保失败");
+    }
+
+    @Override
+    public String underwritingCallback(PaymentCallbackRequest coverageRequest)  throws Exception{
+        String requestNo = coverageRequest.getBaseParam().getRequestNo();
+        ResponseCode responseCode;
+        try {
+            String busUniqueId = coverageRequest.getBusUniqueId();
+            InsAreaCompany insAreaCompany = insAreaCompanyService.getByInsOrderNo(busUniqueId);
+            if (PayResult.P_1.getCode().equals(coverageRequest.getPayResult())) {
+                insAreaCompany.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
+                insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+            }
+            responseCode = ResponseCode.R_Z00001;
+        } catch (Exception e) {
+            responseCode = ResponseCode.R_Z00002;
+        }
+        return boHaiRequestApiComponent.encryptionCallbackResponse(responseCode, requestNo);
+    }
+
+    @Override
+    public String auditCallback(ManualReviewRequest approvedRequest) throws Exception{
+        String requestNo = approvedRequest.getBaseParam().getRequestNo();
+        ResponseCode responseCode;
+        try {
+            String busUniqueId = approvedRequest.getUnderwritingCallBackReq().getBusUniqueId();
+            InsAreaCompany insAreaCompany = insAreaCompanyService.getByInsOrderNo(busUniqueId);
+            List<ManualReviewRequest.UnderwritingCallBackReqDTO.UnderwritingBacksDTO> underwritingBacks =
+                    approvedRequest.getUnderwritingCallBackReq().getUnderwritingBacks();
+
+            List<ManualReviewRequest.UnderwritingCallBackReqDTO.UnderwritingBacksDTO> collect =
+                    underwritingBacks.stream().filter(x -> AuditStatus.A_1.getCode().equals(x.getAuditStatus())).collect(Collectors.toList());
+            if (collect.size() == underwritingBacks.size()) {
+                String payUrl = getQrCodeUrl(insAreaCompany);
+                insAreaCompany.setPaymentLink(payUrl);
+                insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());
+                insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+            }
+            responseCode = ResponseCode.R_Z00001;
+        } catch (Exception e) {
+            responseCode = ResponseCode.R_Z00002;
+        }
+        return boHaiRequestApiComponent.encryptionCallbackResponse(responseCode, requestNo);
+    }
+
+    private String getQrCodeUrl(InsAreaCompany insAreaCompany) throws Exception {
+        // 账号信息
+        PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(insAreaCompany.getAgreementId());
+        // 通过 协议id获取配置实体
+        BoHaiConfigureParameters parameters = configureParametersComponents.toEntity(BoHaiConfigureParameters.class,
+                ptlAgreementAttribution);
+        PaymentRequest paymentRequest = new PaymentRequest(parameters, insAreaCompany.getId(), insAreaCompany.getInsOrderNo());
+        PaymentResponse paymentResponse = boHaiRequestApiComponent.payment(paymentRequest);
+        return paymentResponse.getData().getQrCodeUrl();
+    }
+
+
+    private List<StatusDocumentsResponse.DataDTO.DocumentListDTO> getDocumentListDTO(InsAreaCompany insAreaCompany) throws Exception {
+        // 账号信息
+        PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(insAreaCompany.getAgreementId());
+        // 通过 协议id获取配置实体
+        BoHaiConfigureParameters parameters = configureParametersComponents.toEntity(BoHaiConfigureParameters.class,
+                ptlAgreementAttribution);
+
+        String applyno = StringUtils.isEmpty(insAreaCompany.getJqapplyno()) ? insAreaCompany.getJqapplyno() : insAreaCompany.getSyapplyno();
+        StatusDocumentsRequest statusDocumentsRequest = new StatusDocumentsRequest(parameters, insAreaCompany.getId(), applyno);
+        StatusDocumentsResponse response = boHaiRequestApiComponent.statusDocuments(statusDocumentsRequest);
+        return response.getData().getDocumentList();
+    }
+
+    public QuoteRespVo getQuoteRespVo(QuotationResponse response,
+                                      BaseQuoteInfoVo yaQuoteInfoVo,
+                                      VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO vehicleModelsDTO) {
         double jyPremium = 0;
         QuoteRespVo quoteRespVo = new QuoteRespVo();
         // 交强险
@@ -290,6 +394,7 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
         quoteRespVo.setSumPermium(CalculateUtils.add(jqPremium, syPremium, sumPayTax, jyPremium));//保费合计
         quoteRespVo.setTotalAdjustRate(0);
         quoteRespVo.setOrderno(yaQuoteInfoVo.getOrderNo()); //订单号
+        quoteRespVo.setCoreModels(vehicleModelsDTO.toCoreModelsVo());
         return quoteRespVo;
     }
 
@@ -314,4 +419,5 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
         return HttpResult.ok("报价成功", quoteRespVo);
     }
 
+
 }

+ 11 - 0
src/main/java/com/ydtech/modules/order/utils/SignatureUtils.java

@@ -1,6 +1,8 @@
 package com.ydtech.modules.order.utils;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.ydtech.constants.InsuranceEnum;
 import com.ydtech.exception.SystemException;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.util.Base64Utils;
@@ -331,4 +333,13 @@ public class SignatureUtils {
         return new String(Base64Utils.encode(signature.sign()));
     }
 
+
+    public static <T> T decryptMessage(String s, Class<T> c, String message, String sessionKey) {
+        InsuranceLog.infoLog(InsuranceEnum.ZMBX.getPinyin(), "\n\t---------> 解密前的参数:{}", s);
+        // 解密
+        String text = decryptByPrivateKey(s.replace("\n", ""), sessionKey);
+        InsuranceLog.infoLog(InsuranceEnum.ZMBX.getPinyin(), "\n\t---------> {}:{}", message, text);
+        return JSON.parseObject(text, c);
+    }
+
 }