Преглед изворни кода

大家财险爬虫 全流程

wks пре 1 година
родитељ
комит
e0de8a6ef8
12 измењених фајлова са 234 додато и 28 уклоњено
  1. 9 2
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/component/RequestComponent.java
  2. 9 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/image/InsuranceImageVo.java
  3. 45 19
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/component/DaJiaCrawlerRequestComponent.java
  4. 1 1
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/constant/enums/RequestUrl.java
  5. 10 2
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/po/DaJiaCrawlerOrder.java
  6. 24 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/DaJiaCrawlerUploadRequest.java
  7. 24 1
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/DaJiaCrawlerUploadSignsRequest.java
  8. 31 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/response/DaJiaCrawlerQrcodeResponse.java
  9. 1 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/response/DaJiaCrawlerUploadResponse.java
  10. 43 2
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/service/impl/DaJiaCrawlerRequestImpl.java
  11. 1 1
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/utils/DESEncryption.java
  12. 36 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/utils/ImagesEncrypt.java

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

@@ -3,6 +3,7 @@ package com.jzg.quotation.commons.component;
 
 import com.alibaba.fastjson2.JSON;
 import com.jzg.commons.exception.SystemException;
+import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.core.ParameterizedTypeReference;
@@ -22,11 +23,18 @@ import java.util.function.Consumer;
  * @author: wenks
  * @date: 2025/2/15 11:59
  **/
+@Getter
 @Slf4j
 @Component
 @RequiredArgsConstructor
 public class RequestComponent {
 
+    /**
+     * -- GETTER --
+     *  获取webClient
+     *
+     * @return webClient
+     */
     private final WebClient webClient;
 
     /**
@@ -35,7 +43,7 @@ public class RequestComponent {
      * @param headers 请求头
      * @return Consumer<HttpHeaders>
      */
-    private Consumer<HttpHeaders> setHeaders(HttpHeaders headers) {
+    public Consumer<HttpHeaders> setHeaders(HttpHeaders headers) {
         Consumer<HttpHeaders> consumer = httpHeaders -> {
             httpHeaders.add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36");
         };
@@ -92,7 +100,6 @@ public class RequestComponent {
         return bodyIsEmpty(responseEntity, description);
     }
 
-
     /**
      * @param url           请求地址
      * @param param         拼接的请求参数

+ 9 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/image/InsuranceImageVo.java

@@ -40,6 +40,10 @@ public class InsuranceImageVo {
 
         @Serial
         private static final long serialVersionUID = -8193683303365881496L;
+        /**
+         * 影像唯一id
+         */
+        private String imageId;
         /**
          * 影像名称
          */
@@ -48,6 +52,11 @@ public class InsuranceImageVo {
          * 影像base64 影像类型
          */
         private String imageBase64Str;
+        /**
+         * 影像大小
+         */
+        private String imageSize;
+
 
     }
 }

+ 45 - 19
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/component/DaJiaCrawlerRequestComponent.java

@@ -19,9 +19,12 @@ import org.redisson.api.RMap;
 import org.redisson.api.RedissonClient;
 import org.springframework.core.ParameterizedTypeReference;
 import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
 import org.springframework.util.StringUtils;
+import org.springframework.web.reactive.function.BodyInserters;
+import reactor.core.publisher.Mono;
 
 import java.lang.reflect.InvocationTargetException;
 import java.time.Duration;
@@ -91,10 +94,7 @@ public class DaJiaCrawlerRequestComponent {
         if (frequency <= 0) {
             throw new SystemException("验证码异常");
         }
-        Map<String, Object> map = Map.of("imgId", UUID
-                .randomUUID()
-                .toString()
-                .replaceAll("-", ""));
+        Map<String, Object> map = Map.of("imgId", UUID.randomUUID().toString().replaceAll("-", ""));
         // 请求
         DaJiaCrawlerBaseResponse request = requestComponent.requestGET(RequestUrl.CAPTCHA.getRequestUrl(daJiaCrawlerProperties.getBaseUrl()), map, "", DaJiaCrawlerBaseResponse.class);
         DaJiaCrawlerCaptchaResponse daJiaCrawlerCaptchaResponse = DESEncryption.decrypt(request.getResult(), DaJiaCrawlerCaptchaResponse.class);
@@ -123,8 +123,7 @@ public class DaJiaCrawlerRequestComponent {
         try {
             Map<String, Object> describe = PropertyUtils.describe(request);
             DaJiaCrawlerCompaniesResponse daJiaCrawlerCompaniesResponse = requestComponent.get(RequestUrl.CAPTCHA.getRequestUrl(daJiaCrawlerProperties.getBaseUrl()), describe, "", DaJiaCrawlerCompaniesResponse.class, headers);
-            return daJiaCrawlerCompaniesResponse
-                    .getList()
+            return daJiaCrawlerCompaniesResponse.getList()
                     .stream()
                     .filter(x -> cDptCde.equals(x.getCDptCde()))
                     .findFirst()
@@ -147,8 +146,7 @@ public class DaJiaCrawlerRequestComponent {
             Map<String, Object> describe = PropertyUtils.describe(request);
             List<DaJiaCrawlerChannelPackagesResponse> responses = requestComponent.get(RequestUrl.CAPTCHA.getRequestUrl(daJiaCrawlerProperties.getBaseUrl()), describe, "", new ParameterizedTypeReference<>() {
             }, headers);
-            return responses
-                    .stream()
+            return responses.stream()
                     .filter(x -> packagesName.equals(x.getName()))
                     .findFirst()
                     .orElseThrow(() -> new SystemException(""));
@@ -171,10 +169,7 @@ public class DaJiaCrawlerRequestComponent {
         // 登录存入缓存当中
         DaJiaCrawlerAuthenticateRequest request = new DaJiaCrawlerAuthenticateRequest(captcha, username, password);
         ResponseEntity<DaJiaCrawlerBaseResponse> responseEntity = requestComponent.objectPost(RequestUrl.AUTHENTICATE.getRequestUrl(daJiaCrawlerProperties.getVhlUrl()), request, DaJiaCrawlerBaseResponse.class);
-        DaJiaCrawlerBaseResponse response = Optional
-                .of(responseEntity)
-                .map(ResponseEntity::getBody)
-                .orElseThrow();
+        DaJiaCrawlerBaseResponse response = Optional.of(responseEntity).map(ResponseEntity::getBody).orElseThrow();
 
         if ("200".equals(response.getCode())) {
             DaJiaCrawlerAuthenticateResponse daJiaCrawlerCaptchaResponse = DESEncryption.decrypt(response.getResult(), DaJiaCrawlerAuthenticateResponse.class);
@@ -186,8 +181,7 @@ public class DaJiaCrawlerRequestComponent {
         }
         loginsNumber = loginsNumber - 1;
         if (loginsNumber <= 0) {
-            String message = Optional
-                    .ofNullable(responseEntity.getBody())
+            String message = Optional.ofNullable(responseEntity.getBody())
                     .map(DaJiaCrawlerBaseResponse::getMessage)
                     .orElseThrow(() -> new SystemException("登录失败"));
             throw new SystemException(message);
@@ -208,8 +202,7 @@ public class DaJiaCrawlerRequestComponent {
      * @return
      */
     public HttpHeaders getHeaders(String username, String password) {
-        String authorization = (String) redissonClient
-                .getMap(CacheConstant.DAJIA_AUTHORIZATION + username)
+        String authorization = (String) redissonClient.getMap(CacheConstant.DAJIA_AUTHORIZATION + username)
                 .get(AUTHORIZATION);
         if (!StringUtils.hasLength(authorization)) {
             authorization = authenticate(username, password, LOGINS_NUMBER);
@@ -226,9 +219,7 @@ public class DaJiaCrawlerRequestComponent {
      * @return userCode
      */
     public String getUserCode(String username) {
-        return (String) redissonClient
-                .getMap(CacheConstant.DAJIA_AUTHORIZATION + username)
-                .get(USER_CODE);
+        return (String) redissonClient.getMap(CacheConstant.DAJIA_AUTHORIZATION + username).get(USER_CODE);
     }
 
     public <DaJiaResponse> DaJiaResponse requestUnencrypted(CrawlerRequestUrlStandard crawlerRequestUrlStandard, Object request, Class<DaJiaResponse> responseClass, HttpHeaders headers) {
@@ -299,10 +290,45 @@ public class DaJiaCrawlerRequestComponent {
         return requestUnencrypted(RequestUrl.UPLOAD_SIGNS, request, DaJiaCrawlerUploadSignsResponse.class, headers);
     }
 
+    public DaJiaCrawlerUploadRequest.FileListDTO uploadFile(String url, String base64Str) {
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
+        byte[] fileData = Base64.getDecoder().decode(base64Str);
+        return requestComponent.getWebClient()
+                .put()
+                .uri(url)
+                .headers(requestComponent.setHeaders(headers))
+                .body(BodyInserters.fromValue(fileData))
+                .exchangeToMono(response -> {
+                    String obsRequestId = response.headers().header("x-obs-request-id").stream().findFirst().orElse("");
+                    DaJiaCrawlerUploadRequest.FileListDTO fileListDTO = new DaJiaCrawlerUploadRequest.FileListDTO();
+                    fileListDTO.setObsRequestId(obsRequestId);
+                    fileListDTO.setOperateResult(1);
+                    return Mono.just(fileListDTO);
+                })
+                .block();
+    }
+
     public DaJiaCrawlerUploadResponse upload(DaJiaCrawlerUploadRequest request, HttpHeaders headers) {
         return requestUnencrypted(RequestUrl.UPLOAD, request, DaJiaCrawlerUploadResponse.class, headers);
     }
 
+    /**
+     * 支付
+     *
+     * @param orderNo
+     * @param operatorCode
+     * @param headers
+     * @return
+     */
+    public String qrcode(String orderNo, String operatorCode, HttpHeaders headers) {
+        String url = RequestUrl.QRCODE.getRequestUrl(daJiaCrawlerProperties.getBaseUrl()) + "/" + orderNo + "/1";
+        Map<String, Object> map = Map.of("operatorCode", operatorCode);
+        DaJiaCrawlerBaseResponse daJiaCrawlerBaseResponse = requestComponent.get(url, map, "", DaJiaCrawlerBaseResponse.class, headers);
+        DaJiaCrawlerQrcodeResponse daJiaCrawlerCaptchaResponse = DESEncryption.decrypt(daJiaCrawlerBaseResponse.getResult(), DaJiaCrawlerQrcodeResponse.class);
+        return daJiaCrawlerCaptchaResponse.getUrl();
+    }
+
     /**
      * 提交核保
      *

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

@@ -29,7 +29,7 @@ public enum RequestUrl implements CrawlerRequestUrlStandard {
     // 提交核保
     GENERATE("generate", "生成订单(核保)"),
     // 支付二维码
-    NEXT_STEP("next_step", "支付二维码"),
+    QRCODE("qrcode", "支付二维码"),
     // 下载保单
     ELECTRON_POLICY_IO_DOWNLOAD("electronPolicyIODownload", "下载保单"),
     // 状态查询

+ 10 - 2
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/po/DaJiaCrawlerOrder.java

@@ -33,12 +33,20 @@ public class DaJiaCrawlerOrder {
      */
     private String appName;
     /**
-     * 交强险保单号
+     * 交强投保单号
      */
     private String ciPolicyNumber;
     /**
-     * 商业险保单号
+     * 商业投保单号
      */
     private String biPolicyNumber;
+    /**
+     * 交强险保单号
+     */
+    private String ciPolicyNo;
+    /**
+     * 商业险保单号
+     */
+    private String biPolicyNo;
 
 }

+ 24 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/DaJiaCrawlerUploadRequest.java

@@ -1,9 +1,12 @@
 package com.jzg.quotation.dajia.crawler.entity.request;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.springframework.util.StringUtils;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @NoArgsConstructor
@@ -28,6 +31,16 @@ public class DaJiaCrawlerUploadRequest {
     @JsonProperty("fileList")
     private List<FileListDTO> fileList;
 
+    public DaJiaCrawlerUploadRequest(String businessNo, String imageCode, String createBy, String ciBussNo, String biBussNo) {
+        this.category = imageCode;
+        this.createBy = createBy;
+        this.businessNo = businessNo;
+        this.businessType = "XKCXT";
+        this.busiInfoList = BusiInfoListDTO.setBusiInfoListDTO(ciBussNo, biBussNo);
+        this.fileList = new ArrayList<>();
+    }
+
+    @AllArgsConstructor
     @NoArgsConstructor
     @Data
     public static class BusiInfoListDTO {
@@ -40,6 +53,17 @@ public class DaJiaCrawlerUploadRequest {
 
         @JsonProperty("bussName")
         private String bussName;
+
+        public static List<BusiInfoListDTO> setBusiInfoListDTO(String ciBussNo, String biBussNo) {
+            ArrayList<BusiInfoListDTO> busiInfoListDTOS = new ArrayList<>();
+            if (StringUtils.hasLength(ciBussNo)) {
+                busiInfoListDTOS.add(new BusiInfoListDTO(ciBussNo, "交强险投保单号", "proNoE"));
+            }
+            if (StringUtils.hasLength(biBussNo)) {
+                busiInfoListDTOS.add(new BusiInfoListDTO(ciBussNo, "商业险投保单号", "proNoB"));
+            }
+            return busiInfoListDTOS;
+        }
     }
 
     @NoArgsConstructor

+ 24 - 1
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/DaJiaCrawlerUploadSignsRequest.java

@@ -1,11 +1,15 @@
 package com.jzg.quotation.dajia.crawler.entity.request;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.commons.entity.vo.image.InsuranceImageVo;
+import com.jzg.quotation.dajia.crawler.utils.ImagesEncrypt;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.springframework.http.MediaType;
 
+import java.util.ArrayList;
 import java.util.List;
-
+import java.util.stream.Collectors;
 
 
 @NoArgsConstructor
@@ -24,6 +28,18 @@ public class DaJiaCrawlerUploadSignsRequest {
     @JsonProperty("uploadFileList")
     private List<UploadFileListDTO> uploadFileList;
 
+
+    public DaJiaCrawlerUploadSignsRequest(String businessNo, String imageCode, List<InsuranceImageVo.ImageDTO> imageBase64List) {
+        this.businessNo = businessNo;
+        this.businessType = "XKCXT";
+        this.category = imageCode;
+        this.uploadFileList = imageBase64List.stream()
+                .collect(Collectors.collectingAndThen(Collectors.toMap(InsuranceImageVo.ImageDTO::getImageId, o -> o, (k1, k2) -> k2), x -> new ArrayList<>(x.values())))
+                .stream()
+                .map(UploadFileListDTO::new)
+                .collect(Collectors.toList());
+    }
+
     @NoArgsConstructor
     @Data
     public static class UploadFileListDTO {
@@ -40,5 +56,12 @@ public class DaJiaCrawlerUploadSignsRequest {
         @JsonProperty("method")
         private String method;
 
+        public UploadFileListDTO(InsuranceImageVo.ImageDTO imageDTO) {
+            this.fileName = imageDTO.getImageName();
+            this.contentType = MediaType.APPLICATION_OCTET_STREAM_VALUE;
+            this.contentMD5 = ImagesEncrypt.encrypt(imageDTO.getImageBase64Str());
+            this.method = "PUT";
+        }
     }
+
 }

+ 31 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/response/DaJiaCrawlerQrcodeResponse.java

@@ -0,0 +1,31 @@
+package com.jzg.quotation.dajia.crawler.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@NoArgsConstructor
+@Data
+public class DaJiaCrawlerQrcodeResponse {
+
+    @JsonProperty("imageContent")
+    private String imageContent;
+
+    @JsonProperty("url")
+    private String url;
+
+    @JsonProperty("message")
+    private String message;
+
+    @JsonProperty("expireTime")
+    private String expireTime;
+
+    @JsonProperty("startTime")
+    private String startTime;
+
+    @JsonProperty("showMessage")
+    private String showMessage;
+
+    @JsonProperty("showFlag")
+    private String showFlag;
+}

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

@@ -22,6 +22,7 @@ public class DaJiaCrawlerUploadResponse {
     @NoArgsConstructor
     @Data
     public static class DataDTO {
+
         @JsonProperty("indexName")
         private String indexName;
 

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

@@ -8,6 +8,7 @@ import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.UnderwritingVo;
 import com.jzg.quotation.commons.entity.vo.base.LoginBase;
 import com.jzg.quotation.commons.entity.vo.base.OrderBase;
+import com.jzg.quotation.commons.entity.vo.image.InsuranceImageVo;
 import com.jzg.quotation.commons.entity.vo.quote.AttributionInformationVo;
 import com.jzg.quotation.commons.filter.CarModelsFilterUtils;
 import com.jzg.quotation.commons.standard.conversion.ConfigureParametersConversion;
@@ -16,6 +17,7 @@ import com.jzg.quotation.dajia.crawler.component.BuildingAttributionInformation;
 import com.jzg.quotation.dajia.crawler.component.DaJiaCacheComponent;
 import com.jzg.quotation.dajia.crawler.component.DaJiaCrawlerRequestComponent;
 import com.jzg.quotation.dajia.crawler.entity.DaJiaCrawlerConfigureParameters;
+import com.jzg.quotation.dajia.crawler.entity.po.DaJiaCrawlerOrder;
 import com.jzg.quotation.dajia.crawler.entity.request.*;
 import com.jzg.quotation.dajia.crawler.entity.request.quote.ProposalInfoDTO;
 import com.jzg.quotation.dajia.crawler.entity.response.*;
@@ -24,8 +26,11 @@ import com.jzg.quotation.dajia.crawler.service.DaJiaCrawlerRequest;
 import lombok.RequiredArgsConstructor;
 import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @Service(value = InsuranceCode.INSURANCE_DJPC)
 @RequiredArgsConstructor
@@ -94,13 +99,47 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
 
     @Override
     public String getPaymentLink(OrderBase orderBase) {
-
-
+        AttributionInformationVo attributionInformationVo = orderBase.getAttributionInformationVo();
+        DaJiaCrawlerOrder daJiaCrawlerOrder = daJiaCrawlerOrderService.getById(orderBase.getOrdersNo());
+        HttpHeaders headers = daJiaCrawlerRequestComponent.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
+        String userCode = daJiaCrawlerRequestComponent.getUserCode(attributionInformationVo.getUsername());
+        daJiaCrawlerRequestComponent.qrcode(daJiaCrawlerOrder.getOrdersNo(),userCode, headers);
         return "";
     }
 
     @Override
     public void uploadImage(InsuranceUploadImageVo insuranceUploadImageVo) {
+        AttributionInformationVo attributionInformationVo = insuranceUploadImageVo.getOrder()
+                .getAttributionInformationVo();
+        HttpHeaders headers = daJiaCrawlerRequestComponent.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
+        String userCode = daJiaCrawlerRequestComponent.getUserCode(attributionInformationVo.getUsername());
+        DaJiaCrawlerOrder daJiaCrawlerOrder = daJiaCrawlerOrderService.getById(insuranceUploadImageVo.getOrder()
+                .getOrdersNo());
+        String policyNumber = StringUtils.hasLength(daJiaCrawlerOrder.getCiPolicyNumber()) ? daJiaCrawlerOrder.getCiPolicyNumber() : daJiaCrawlerOrder.getBiPolicyNo();
+        String businessNo = "8" + policyNumber.substring(6, 9) + policyNumber.substring(0, 5) + policyNumber.substring(9);
+
+        List<InsuranceImageVo> imageVoList = insuranceUploadImageVo.getImageVoList();
+        imageVoList.forEach(imageVo -> {
+            // 上传文件标志
+            DaJiaCrawlerUploadSignsRequest daJiaCrawlerUploadSignsRequest = new DaJiaCrawlerUploadSignsRequest(businessNo, imageVo.getImageCode(), imageVo.getImageBase64List());
+            DaJiaCrawlerUploadSignsResponse daJiaCrawlerUploadSignsResponse = daJiaCrawlerRequestComponent.uploadSigns(daJiaCrawlerUploadSignsRequest, headers);
+            Map<String, DaJiaCrawlerUploadSignsResponse.DataDTO> dataDTOMap = daJiaCrawlerUploadSignsResponse.getData()
+                    .stream()
+                    .collect(Collectors.toMap(DaJiaCrawlerUploadSignsResponse.DataDTO::getFileName, x -> x));
+
+            DaJiaCrawlerUploadRequest daJiaCrawlerUploadRequest = new DaJiaCrawlerUploadRequest(businessNo, imageVo.getImageCode(), userCode, daJiaCrawlerOrder.getCiPolicyNumber(), daJiaCrawlerOrder.getBiPolicyNumber());
+            // 上传文件
+            imageVo.getImageBase64List().forEach(imageBase64 -> {
+                DaJiaCrawlerUploadSignsResponse.DataDTO dataDTO = dataDTOMap.get(imageBase64.getImageName());
+                DaJiaCrawlerUploadRequest.FileListDTO fileListDTO = daJiaCrawlerRequestComponent.uploadFile(dataDTO.getFileURL(), imageBase64.getImageBase64Str());
+                fileListDTO.setName(dataDTO.getFileName());
+                fileListDTO.setPath(dataDTO.getFilePath());
+                fileListDTO.setSize(Integer.valueOf(imageBase64.getImageSize()));
+                daJiaCrawlerUploadRequest.getFileList().add(fileListDTO);
+            });
+            // 统一上传文件信息
+            daJiaCrawlerRequestComponent.upload(daJiaCrawlerUploadRequest, headers);
+        });
 
     }
 
@@ -108,6 +147,7 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
     public void downloadPolicy(OrderBase orderBase) {
         AttributionInformationVo attributionInformationVo = orderBase.getAttributionInformationVo();
         HttpHeaders headers = daJiaCrawlerRequestComponent.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
+
         DaJiaCrawlerDownloadRequest daJiaCrawlerDownloadRequest = new DaJiaCrawlerDownloadRequest();
         DaJiaCrawlerDownloadResponse response = daJiaCrawlerRequestComponent.electronPolicyIODownload(daJiaCrawlerDownloadRequest, headers);
     }
@@ -117,6 +157,7 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
         AttributionInformationVo attributionInformationVo = orderBase.getAttributionInformationVo();
         HttpHeaders headers = daJiaCrawlerRequestComponent.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
         String userCode = daJiaCrawlerRequestComponent.getUserCode(attributionInformationVo.getUsername());
+
         DaJiaCrawlerOrderListRevisedRequest daJiaCrawlerOrderListRevisedRequest = new DaJiaCrawlerOrderListRevisedRequest();
         DaJiaCrawlerOrderListRevisedResponse.ListDTO listDTO = daJiaCrawlerRequestComponent.orderListRevised(daJiaCrawlerOrderListRevisedRequest, headers);
     }

+ 1 - 1
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/utils/DESEncryption.java

@@ -19,7 +19,7 @@ import java.time.format.DateTimeFormatter;
 public final class DESEncryption {
 
     private DESEncryption() {
-        throw new AssertionError();
+        throw new IllegalStateException("Utility class");
     }
 
     private static final String SIGN = "DJCX";

+ 36 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/utils/ImagesEncrypt.java

@@ -0,0 +1,36 @@
+package com.jzg.quotation.dajia.crawler.utils;
+
+import cn.hutool.crypto.digest.MD5;
+
+import java.util.Base64;
+
+/**
+ * @description: 大家财险上传影像
+ * @author: wenks
+ * @date: 2025/3/6 11:54
+ **/
+public final class ImagesEncrypt {
+
+    private ImagesEncrypt() {
+        throw new IllegalStateException("Utility class");
+    }
+
+    public static final MD5 MD5;
+
+    static {
+        MD5 = new MD5();
+    }
+
+    /**
+     * 加密
+     *
+     * @param base64String 影像的base64
+     * @return
+     */
+    public static String encrypt(String base64String) {
+        byte[] decodedBytes = Base64.getDecoder().decode(base64String);
+        byte[] md5Bytes = MD5.digest(decodedBytes);
+        return Base64.getEncoder().encodeToString(md5Bytes);
+    }
+
+}