|
|
@@ -1,18 +1,28 @@
|
|
|
package com.jzg.quotation.zhongan.crawler.service.Impl;
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
+import com.jzg.commons.constants.dict.InsOrderStatusEnum;
|
|
|
+import com.jzg.commons.entity.po.SysUploadFiles;
|
|
|
import com.jzg.commons.entity.quote.vo.AttributionInformationVo;
|
|
|
import com.jzg.commons.entity.quote.vo.CarInfoVo;
|
|
|
import com.jzg.commons.entity.quote.vo.QuoteVo;
|
|
|
import com.jzg.commons.entity.quote.vo.aggregated.*;
|
|
|
+import com.jzg.commons.exception.SystemException;
|
|
|
+import com.jzg.commons.util.MinioUtils;
|
|
|
+import com.jzg.commons.util.StringUtils;
|
|
|
import com.jzg.quotation.commons.annotation.QuoteCrawlerService;
|
|
|
+import com.jzg.quotation.commons.client.PlatformClient;
|
|
|
import com.jzg.quotation.commons.constant.InsuranceCode;
|
|
|
import com.jzg.commons.entity.quote.vo.base.LoginBase;
|
|
|
import com.jzg.commons.entity.quote.vo.base.OrderBase;
|
|
|
import com.jzg.commons.entity.quote.vo.image.InsuranceImageVo;
|
|
|
import com.jzg.quotation.commons.filter.CarModelsFilterUtils;
|
|
|
import com.jzg.quotation.commons.standard.conversion.ConfigureParametersConversion;
|
|
|
+import com.jzg.quotation.commons.utils.HttpUtil;
|
|
|
+import com.jzg.quotation.zhongan.crawler.JsonUtil;
|
|
|
import com.jzg.quotation.zhongan.crawler.build.ZhongAnCrawlerQuoteResultsVoBuild;
|
|
|
+import com.jzg.quotation.zhongan.crawler.component.ZhongAnCrawlerCacheComponent;
|
|
|
import com.jzg.quotation.zhongan.crawler.component.ZhongAnCrawlerRequestComponent;
|
|
|
import com.jzg.quotation.zhongan.crawler.constant.ZhongAnRequestConstant;
|
|
|
import com.jzg.quotation.zhongan.crawler.entity.ZhongAnCrawlerConfigureParameters;
|
|
|
@@ -22,13 +32,14 @@ import com.jzg.quotation.zhongan.crawler.entity.response.*;
|
|
|
import com.jzg.quotation.zhongan.crawler.service.ZhongAnCrawlerOrderService;
|
|
|
import com.jzg.quotation.zhongan.crawler.service.ZhongAnCrawlerRequest;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.http.HttpHeaders;
|
|
|
|
|
|
-import java.io.File;
|
|
|
-import java.io.FileNotFoundException;
|
|
|
-import java.io.FileOutputStream;
|
|
|
-import java.io.IOException;
|
|
|
+import java.io.*;
|
|
|
+import java.net.HttpURLConnection;
|
|
|
+import java.net.URL;
|
|
|
import java.util.Base64;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
|
@@ -45,8 +56,16 @@ public class ZhongAnCrawlerRequestImpl implements ZhongAnCrawlerRequest {
|
|
|
|
|
|
private final ZhongAnCrawlerOrderService zhongAnCrawlerOrderService;
|
|
|
|
|
|
+ private final ZhongAnCrawlerCacheComponent zhongAnCrawlerCacheComponent;
|
|
|
+
|
|
|
+ @Value("${zhongAn.id}")
|
|
|
+ private String zhongAnId;
|
|
|
+
|
|
|
+ private final PlatformClient platformClient;
|
|
|
+
|
|
|
/**
|
|
|
* 登录
|
|
|
+ *
|
|
|
* @param loginBase 登录信息
|
|
|
*/
|
|
|
@Override
|
|
|
@@ -62,38 +81,100 @@ public class ZhongAnCrawlerRequestImpl implements ZhongAnCrawlerRequest {
|
|
|
*/
|
|
|
@Override
|
|
|
public QuoteResultsVo quote(QuoteVo quoteVo) {
|
|
|
+ //登录众安
|
|
|
+ loginCookieCache(zhongAnId);
|
|
|
+ zhongAnCrawlerCacheComponent.setCache(quoteVo.getOwnersInfo().getIdentifyNumber(), quoteVo.getOrder().getOrdersNo() + ZhongAnCrawlerCacheComponent.IDENTIFY_NUMBER);
|
|
|
CarInfoVo carInfoVo = quoteVo.getCarInfoVo();
|
|
|
AttributionInformationVo attributionInformationVo = quoteVo.getOrder().getAttributionInformationVo();
|
|
|
//获取配置信息
|
|
|
ZhongAnCrawlerConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(ZhongAnCrawlerConfigureParameters.class, attributionInformationVo.getConfigInfo());
|
|
|
- HttpHeaders headers = zhongAnCrawlerRequestComponent.getHeaders(attributionInformationVo.getUsername());
|
|
|
+ HttpHeaders headers = zhongAnCrawlerRequestComponent.getHeaders(zhongAnId);
|
|
|
+ String flowId = parameters.getFlowId();
|
|
|
+ if (StringUtils.isEmpty(flowId)) {
|
|
|
+ parameters.setFlowId(zhongAnCrawlerCacheComponent.getFlowId(zhongAnId));
|
|
|
+ }
|
|
|
+ //校验key,缓存
|
|
|
+ ZhongAnCrawlerCacheInputRequest cacheInputRequest = new ZhongAnCrawlerCacheInputRequest(quoteVo, parameters);
|
|
|
+ String cacheInput = zhongAnCrawlerRequestComponent.CacheInput(cacheInputRequest, headers);
|
|
|
+
|
|
|
+ ZhongAnCrawlerInitDataRequest initDataRequest = new ZhongAnCrawlerInitDataRequest(parameters);
|
|
|
+ String initDataInfo = zhongAnCrawlerRequestComponent.initDataInfo(initDataRequest, headers);
|
|
|
+ //车架查询
|
|
|
+ ZhongAnCrawlerCarVinRequest carVinRequest = new ZhongAnCrawlerCarVinRequest(quoteVo, parameters);
|
|
|
+ String carVinQuery = zhongAnCrawlerRequestComponent.carVinQuery(carVinRequest, headers);
|
|
|
+
|
|
|
|
|
|
//车型查询
|
|
|
ZhongAnCrawlerCarQueryRequest carQueryRequest = new ZhongAnCrawlerCarQueryRequest(carInfoVo.getBrandName(), parameters);
|
|
|
List<ZhongAnCrawlerCarQueryResponse.ValueDTO.DataDTO.ResultDTO.VehicleDTO> vehicleDTOList = zhongAnCrawlerRequestComponent.carQuery(carQueryRequest, headers);
|
|
|
ZhongAnCrawlerCarQueryResponse.ValueDTO.DataDTO.ResultDTO.VehicleDTO vehicleDTO = CarModelsFilterUtils.to(vehicleDTOList, carInfoVo);
|
|
|
|
|
|
+ ZhongAnCrawlerQuerySpecialRequest querySpecialRequest = new ZhongAnCrawlerQuerySpecialRequest(quoteVo, parameters);
|
|
|
+ String querySpecial = zhongAnCrawlerRequestComponent.querySpecial(querySpecialRequest, headers);
|
|
|
+
|
|
|
+ ZhongAnCrawlerLicenseSwitchRequest licenseSwitchRequest = new ZhongAnCrawlerLicenseSwitchRequest(quoteVo, parameters);
|
|
|
+ String licenseSwitch = zhongAnCrawlerRequestComponent.licenseSwitch(licenseSwitchRequest, headers);
|
|
|
+
|
|
|
+
|
|
|
+ ZhongAnCrawlerCacheCarQueryRequest cacheCarQueryRequest = new ZhongAnCrawlerCacheCarQueryRequest(quoteVo, vehicleDTO, parameters);
|
|
|
+// String cacheCarQueryResponse = zhongAnCrawlerRequestComponent.cacheCarInfo(cacheCarQueryRequest,headers);
|
|
|
+ ZhongAnCrawlerCacheCarQueryResponse cacheCarQueryResponse = zhongAnCrawlerRequestComponent.cacheCarInfo(cacheCarQueryRequest, headers);
|
|
|
+ if (cacheCarQueryResponse != null && StringUtils.isNotEmpty(cacheCarQueryResponse.getErrorMsg())) {
|
|
|
+ if (cacheCarQueryResponse.getErrorCode().equals("A12512")) {
|
|
|
+ ZhongAnCrawlerQueryDetailQueryRequest detailQueryRequest = new ZhongAnCrawlerQueryDetailQueryRequest(cacheCarQueryResponse, parameters);
|
|
|
+ ZhongAnCrawlerQueryDetailQueryResponse queryDetailQueryResponse = zhongAnCrawlerRequestComponent.detailQuery(detailQueryRequest, headers);
|
|
|
+
|
|
|
+ ZhongAnCrawlerQueryDetailQueryResponse.ValueDTO.DatasDTO.VehicleDetailInfoDTO vehicleDetailInfo = queryDetailQueryResponse.getValue().getDatas().getVehicleDetailInfo();
|
|
|
+ ZhongAnCrawlerCarQueryResponse.ValueDTO.DataDTO.ResultDTO.VehicleDTO vehicleDTO1 = BeanUtil.copyProperties(vehicleDetailInfo, ZhongAnCrawlerCarQueryResponse.ValueDTO.DataDTO.ResultDTO.VehicleDTO.class);
|
|
|
+
|
|
|
+ ZhongAnCrawlerCacheCarQueryRequest zhongAnCrawlerCacheCarQueryRequest = new ZhongAnCrawlerCacheCarQueryRequest(quoteVo, vehicleDTO1, parameters);
|
|
|
+ ZhongAnCrawlerCacheCarQueryResponse cacheCarQueryResponse1 = zhongAnCrawlerRequestComponent.cacheCarInfo(zhongAnCrawlerCacheCarQueryRequest, headers);
|
|
|
+ if (cacheCarQueryResponse1 != null && StringUtils.isNotEmpty(cacheCarQueryResponse1.getErrorMsg())) {
|
|
|
+ throw new SystemException(cacheCarQueryResponse1.getErrorMsg());
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ throw new SystemException(cacheCarQueryResponse.getErrorMsg());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ ZhongAnCrawlerQuoteBaseRequest quoteBaseRequest = new ZhongAnCrawlerQuoteBaseRequest(parameters);
|
|
|
+ ZhongAnCrawlerQuoteBaseResponse quoteBaseResponse = zhongAnCrawlerRequestComponent.quoteBaseInfo(quoteBaseRequest, headers);
|
|
|
+// ZhongAnCrawlerQuoteBaseResponse zhongAnCrawlerQuoteBaseResponse = JsonUtil.readObjcet(str, ZhongAnCrawlerQuoteBaseResponse.class);
|
|
|
+
|
|
|
//报价
|
|
|
- ZhongAnCrawlerQuoteRequest quoteRequest = new ZhongAnCrawlerQuoteRequest(quoteVo, parameters);
|
|
|
+ ZhongAnCrawlerQuoteRequest quoteRequest = new ZhongAnCrawlerQuoteRequest(quoteVo, parameters, quoteBaseResponse);
|
|
|
ZhongAnCrawlerQuoteResponse quoteResponse = zhongAnCrawlerRequestComponent.quote(quoteRequest, headers);
|
|
|
+ if (quoteResponse != null && StringUtils.isNotEmpty(quoteResponse.getErrorMsg())) {
|
|
|
+ throw new SystemException(quoteResponse.getErrorMsg());
|
|
|
+ }
|
|
|
|
|
|
//确认报价
|
|
|
ZhongAnCrawlerConfirmQuoteRequest confirmQuoteRequest = new ZhongAnCrawlerConfirmQuoteRequest(parameters);
|
|
|
- zhongAnCrawlerRequestComponent.confirmQuote(confirmQuoteRequest, headers);
|
|
|
+ String s = zhongAnCrawlerRequestComponent.confirmQuote(confirmQuoteRequest, headers);
|
|
|
|
|
|
//获取订单信息,需要获取quoteId
|
|
|
ZhongAnCrawlerGetOrderRequest getOrderRequest = new ZhongAnCrawlerGetOrderRequest(parameters);
|
|
|
ZhongAnCrawlerGetOrderResponse getOrderResponse = zhongAnCrawlerRequestComponent.getOrder(getOrderRequest, headers);
|
|
|
+ zhongAnCrawlerCacheComponent.setCache(getOrderResponse.getValue().getDatas().getQuoteId(), quoteVo.getOrder().getOrdersNo() + ZhongAnCrawlerCacheComponent.QUOTE_ID);
|
|
|
|
|
|
//确认订单
|
|
|
ZhongAnCrawlerConfirmOrderRequest confirmOrderRequest = new ZhongAnCrawlerConfirmOrderRequest(parameters, quoteVo);
|
|
|
ZhongAnCrawlerConfirmOrderResponse confirmOrderResponse = zhongAnCrawlerRequestComponent.confirmOrder(confirmOrderRequest, headers);
|
|
|
+ ZhongAnCrawlerConfirmOrderResponse.ValueDTO.DataDTO dataDTO = confirmOrderResponse.getValue().getDatas();
|
|
|
+ zhongAnCrawlerCacheComponent.setCache(dataDTO.getOrderNo(), quoteVo.getOrder().getOrdersNo() + ZhongAnCrawlerCacheComponent.ORDER_NO);
|
|
|
+ zhongAnCrawlerCacheComponent.setCache(dataDTO.getPolicyId(), quoteVo.getOrder().getOrdersNo() + ZhongAnCrawlerCacheComponent.POLICY_ID);
|
|
|
|
|
|
//非车险提交核保
|
|
|
ZhongAnCrawlerJyxUnderwritingRequest jyxUnderwritingRequest = new ZhongAnCrawlerJyxUnderwritingRequest(parameters, getOrderResponse.getValue().getDatas().getQuoteId());
|
|
|
ZhongAnCrawlerJyxUnderwritingResponse jyxUnderwritingResponse = zhongAnCrawlerRequestComponent.jyxUnderwriting(jyxUnderwritingRequest, headers);
|
|
|
|
|
|
- ZhongAnCrawlerConfirmOrderResponse.ValueDTO.DataDTO dataDTO = confirmOrderResponse.getValue().getDatas();
|
|
|
+ ZhongAnCrawlerUploadInitDateRequest zhongAnCrawlerUploadInitDateRequest = new ZhongAnCrawlerUploadInitDateRequest(dataDTO, parameters);
|
|
|
+ ZhongAnCrawlerUploadInitDateResponse uploadInitDateResponse = zhongAnCrawlerRequestComponent.uploadInitDate(zhongAnCrawlerUploadInitDateRequest, headers);
|
|
|
+ zhongAnCrawlerCacheComponent.setCache(uploadInitDateResponse.getValue().getDatas(), quoteVo.getOrder().getOrdersNo() + ZhongAnCrawlerCacheComponent.INITDATE);
|
|
|
+
|
|
|
+
|
|
|
ZhongAnCrawlerOrder zhongAnCrawlerOrder = new ZhongAnCrawlerOrder();
|
|
|
zhongAnCrawlerOrder.setOrdersNo(quoteVo.getOrder().getOrdersNo());
|
|
|
zhongAnCrawlerOrder.setOrderNo(dataDTO.getOrderNo());
|
|
|
@@ -102,6 +183,66 @@ public class ZhongAnCrawlerRequestImpl implements ZhongAnCrawlerRequest {
|
|
|
return ZhongAnCrawlerQuoteResultsVoBuild.buildQuoteResultsVo(quoteVo, quoteResponse.getValue().getDatas());
|
|
|
}
|
|
|
|
|
|
+ //登录
|
|
|
+ private void loginCookieCache(String zhongAnId) {
|
|
|
+ try {
|
|
|
+
|
|
|
+ Map<String, String> params = new HashMap<>();
|
|
|
+ params.put("partnerChannelCode", "m18x462r");
|
|
|
+ params.put("partnerUserAccount", zhongAnId);
|
|
|
+ params.put("partnerChildChannelCode", "");
|
|
|
+ params.put("promotionNo", "0c033ab79c6847c0878342480aef76a1");
|
|
|
+ params.put("productId", "10676");
|
|
|
+ params.put("policySource", "40");
|
|
|
+ params.put("subaoBizContent", "");
|
|
|
+ params.put("insurerCode", "ZHONGANCAR");
|
|
|
+
|
|
|
+
|
|
|
+ Map<String, String> headers = new HashMap<>();
|
|
|
+ headers.put("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36");
|
|
|
+ headers.put("Accept", "application/json, text/plain, */*");
|
|
|
+
|
|
|
+ // 发送第一个请求,不跟随重定向
|
|
|
+ String url = "https://www.cyouzai.com/busi-integration/channel/baoBiaoH5Redirect";
|
|
|
+ HttpURLConnection connection = HttpUtil.sendGetRequest(url, params, headers, false);
|
|
|
+ String firstLocation = connection.getHeaderField("Location");
|
|
|
+ connection.disconnect();
|
|
|
+
|
|
|
+ System.out.println(firstLocation);
|
|
|
+
|
|
|
+ // 发送第二个请求,不跟随重定向
|
|
|
+ connection = HttpUtil.sendGetRequest(firstLocation, null, headers, false);
|
|
|
+ String secondLocation = connection.getHeaderField("Location");
|
|
|
+ connection.disconnect();
|
|
|
+
|
|
|
+ // 发送第三个请求,不跟随重定向
|
|
|
+ connection = HttpUtil.sendGetRequest(secondLocation, null, headers, false);
|
|
|
+ Map<String, List<String>> responseHeaders = connection.getHeaderFields();
|
|
|
+ connection.disconnect();
|
|
|
+
|
|
|
+ // 提取zaLoginCookieKey
|
|
|
+ String zaLoginCookieKey = HttpUtil.extractZaLoginCookieKey(responseHeaders);
|
|
|
+ if (zaLoginCookieKey != null && !zaLoginCookieKey.isEmpty()) {
|
|
|
+ // 获取Location头
|
|
|
+ String thirdLocation = connection.getHeaderField("Location");
|
|
|
+
|
|
|
+ // 提取flowId
|
|
|
+ String flowId = HttpUtil.extractFlowId(thirdLocation);
|
|
|
+ //缓存数据
|
|
|
+ zhongAnCrawlerCacheComponent.cacheCookie(zaLoginCookieKey, flowId, zhongAnId);
|
|
|
+
|
|
|
+ System.out.println("key==" + zaLoginCookieKey + "------flowId=" + flowId);
|
|
|
+
|
|
|
+ } else {
|
|
|
+ throw new SystemException("未获取到-----zaLoginCookieKey");
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new SystemException("message", "请求发生错误: " + e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 提交核保 子订单
|
|
|
*
|
|
|
@@ -109,7 +250,35 @@ public class ZhongAnCrawlerRequestImpl implements ZhongAnCrawlerRequest {
|
|
|
*/
|
|
|
@Override
|
|
|
public UnderwritingResultsVo underwriting(UnderwritingVo underwritingVo) throws Exception {
|
|
|
- return null;
|
|
|
+ loginCookieCache(zhongAnId);
|
|
|
+ AttributionInformationVo attributionInformationVo = underwritingVo.getOrder().getAttributionInformationVo();
|
|
|
+ ZhongAnCrawlerConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(ZhongAnCrawlerConfigureParameters.class, attributionInformationVo.getConfigInfo());
|
|
|
+ HttpHeaders headers = zhongAnCrawlerRequestComponent.getHeaders(zhongAnId);
|
|
|
+ String flowId = parameters.getFlowId();
|
|
|
+ if (StringUtils.isEmpty(flowId)) {
|
|
|
+ parameters.setFlowId(zhongAnCrawlerCacheComponent.getFlowId(zhongAnId));
|
|
|
+ }
|
|
|
+ String ordersNo = zhongAnCrawlerCacheComponent.getCache(underwritingVo.getOrder().getOrdersNo() + ZhongAnCrawlerCacheComponent.ORDER_NO);
|
|
|
+ ZhongAnCrawlerMarkRequest markRequest = new ZhongAnCrawlerMarkRequest(parameters, ordersNo);
|
|
|
+ String markCompleted = zhongAnCrawlerRequestComponent.markCompleted(markRequest, headers);
|
|
|
+
|
|
|
+ ZhongAnCrawlerOrder zhongAnCrawlerOrder = zhongAnCrawlerOrderService.findByOrdersNo(underwritingVo.getOrder().getOrdersNo());
|
|
|
+
|
|
|
+ ZhongAnCrawlerUploadInitDateResponse.ValueDTO.DatasDTO initData = zhongAnCrawlerCacheComponent.getInitData(underwritingVo.getOrder().getOrdersNo() + ZhongAnCrawlerCacheComponent.INITDATE);
|
|
|
+ ZhongAnCrawlerPaymentRequest paymentRequest = new ZhongAnCrawlerPaymentRequest(zhongAnCrawlerOrder.getPolicyId(), initData.getCheckCode());
|
|
|
+ ZhongAnCrawlerPaymentResponse payment = zhongAnCrawlerRequestComponent.payment(paymentRequest, headers);
|
|
|
+ zhongAnCrawlerCacheComponent.setCache(payment.getValue().getDatas().getInitInfo(),underwritingVo.getOrder().getOrdersNo()+ZhongAnCrawlerCacheComponent.PAYMENT);
|
|
|
+
|
|
|
+ UnderwritingResultsVo underwritingResultsVo = new UnderwritingResultsVo();
|
|
|
+// underwritingResultsVo.setPaymentLink(payment.getValue().getDatas().getShareShortUrl());
|
|
|
+ //核保结果
|
|
|
+ underwritingResultsVo.setUnderwritingResult("核保成功");
|
|
|
+// //核保状态
|
|
|
+ underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.PAY_PENDING);
|
|
|
+// //保司订单号
|
|
|
+ underwritingResultsVo.setCompanyOrderNo(ordersNo);
|
|
|
+
|
|
|
+ return underwritingResultsVo;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -119,16 +288,20 @@ public class ZhongAnCrawlerRequestImpl implements ZhongAnCrawlerRequest {
|
|
|
*/
|
|
|
@Override
|
|
|
public PaymentLinkResultsVo getPaymentLink(PaymentLinkVo paymentLinkVo) {
|
|
|
+ loginCookieCache(zhongAnId);
|
|
|
+ PaymentLinkResultsVo paymentLinkResultsVo = new PaymentLinkResultsVo();
|
|
|
OrderBase orderBase = paymentLinkVo.getOrder();
|
|
|
- AttributionInformationVo attributionInformationVo = orderBase.getAttributionInformationVo();
|
|
|
//获取配置信息
|
|
|
- HttpHeaders headers = zhongAnCrawlerRequestComponent.getHeaders(attributionInformationVo.getUsername());
|
|
|
+ HttpHeaders headers = zhongAnCrawlerRequestComponent.getHeaders(zhongAnId);
|
|
|
|
|
|
ZhongAnCrawlerOrder zhongAnCrawlerOrder = zhongAnCrawlerOrderService.findByOrdersNo(orderBase.getOrdersNo());
|
|
|
-
|
|
|
- ZhongAnCrawlerPaymentRequest paymentRequest = new ZhongAnCrawlerPaymentRequest(zhongAnCrawlerOrder.getPolicyId());
|
|
|
+
|
|
|
+ ZhongAnCrawlerUploadInitDateResponse.ValueDTO.DatasDTO initData = zhongAnCrawlerCacheComponent.getInitData(orderBase.getOrdersNo() + ZhongAnCrawlerCacheComponent.INITDATE);
|
|
|
+ ZhongAnCrawlerPaymentRequest paymentRequest = new ZhongAnCrawlerPaymentRequest(zhongAnCrawlerOrder.getPolicyId(), initData.getCheckCode());
|
|
|
ZhongAnCrawlerPaymentResponse payment = zhongAnCrawlerRequestComponent.payment(paymentRequest, headers);
|
|
|
- return null;
|
|
|
+ paymentLinkResultsVo.setPaymentLink(payment.getValue().getDatas().getShareShortUrl());
|
|
|
+
|
|
|
+ return paymentLinkResultsVo;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -139,40 +312,71 @@ public class ZhongAnCrawlerRequestImpl implements ZhongAnCrawlerRequest {
|
|
|
* 行驶证副本 7
|
|
|
* 其他 99
|
|
|
* 还有通融申请流程的影像上传待处理
|
|
|
+ *
|
|
|
* @param insuranceUploadImageVo
|
|
|
*/
|
|
|
@Override
|
|
|
public void uploadImage(InsuranceUploadImageVo insuranceUploadImageVo) {
|
|
|
+ loginCookieCache(zhongAnId);
|
|
|
OrderBase orderBase = insuranceUploadImageVo.getOrder();
|
|
|
AttributionInformationVo attributionInformationVo = orderBase.getAttributionInformationVo();
|
|
|
//获取配置信息
|
|
|
ZhongAnCrawlerConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(ZhongAnCrawlerConfigureParameters.class, attributionInformationVo.getConfigInfo());
|
|
|
- HttpHeaders headers = zhongAnCrawlerRequestComponent.getHeaders(attributionInformationVo.getUsername());
|
|
|
-
|
|
|
+ HttpHeaders headers = zhongAnCrawlerRequestComponent.getHeaders(zhongAnId);
|
|
|
+ String flowId = parameters.getFlowId();
|
|
|
+ if (StringUtils.isEmpty(flowId)) {
|
|
|
+ parameters.setFlowId(zhongAnCrawlerCacheComponent.getFlowId(zhongAnId));
|
|
|
+ }
|
|
|
ZhongAnCrawlerOrder zhongAnCrawlerOrder = zhongAnCrawlerOrderService.findByOrdersNo(orderBase.getOrdersNo());
|
|
|
for (InsuranceImageVo insuranceImageVo : insuranceUploadImageVo.getImageVoList()) {
|
|
|
- for (InsuranceImageVo.ImageDTO imageDTO: insuranceImageVo.getImageBase64List()) {
|
|
|
- //根据参数,确定影像类型;暂时默认99
|
|
|
+ //C01行驶证正面,C02车主身份证正面,D01行驶证反面
|
|
|
+ if (insuranceImageVo.getImageCode().equals("C01")) {
|
|
|
+ String imageType = "6";
|
|
|
+ InsuranceImageVo.ImageDTO imageDTO = insuranceImageVo.getImageBase64List().get(0);
|
|
|
+ extracted(parameters, headers, zhongAnCrawlerOrder, imageType, imageDTO);
|
|
|
+
|
|
|
+ } else if (insuranceImageVo.getImageCode().equals("C02")) {
|
|
|
+ String imageType = "4";
|
|
|
+ InsuranceImageVo.ImageDTO imageDTO = insuranceImageVo.getImageBase64List().get(0);
|
|
|
+ extracted(parameters, headers, zhongAnCrawlerOrder, imageType, imageDTO);
|
|
|
+
|
|
|
+ } else if (insuranceImageVo.getImageCode().equals("D01")) {
|
|
|
+ String imageType = "7";
|
|
|
+ InsuranceImageVo.ImageDTO imageDTO = insuranceImageVo.getImageBase64List().get(0);
|
|
|
+ extracted(parameters, headers, zhongAnCrawlerOrder, imageType, imageDTO);
|
|
|
+
|
|
|
+ } else if (insuranceImageVo.getImageCode().equals("D02")) {
|
|
|
+ String imageType = "5";
|
|
|
+ InsuranceImageVo.ImageDTO imageDTO = insuranceImageVo.getImageBase64List().get(0);
|
|
|
+ extracted(parameters, headers, zhongAnCrawlerOrder, imageType, imageDTO);
|
|
|
+ } else {
|
|
|
String imageType = "99";
|
|
|
- String imageBase64Str = imageDTO.getImageBase64Str();
|
|
|
- byte[] imageBytes = Base64.getDecoder().decode(imageBase64Str);
|
|
|
- //需要设置一个临时图片路径
|
|
|
- FileOutputStream fileOutputStream = null;
|
|
|
- String filePath = "图片临时路径";
|
|
|
- try {
|
|
|
- fileOutputStream = new FileOutputStream(filePath);
|
|
|
- fileOutputStream.write(imageBytes);
|
|
|
- fileOutputStream.close();
|
|
|
- } catch (FileNotFoundException e) {
|
|
|
- throw new RuntimeException(e);
|
|
|
- } catch (IOException e) {
|
|
|
- throw new RuntimeException(e);
|
|
|
+ List<InsuranceImageVo.ImageDTO> imageBase64List = insuranceImageVo.getImageBase64List();
|
|
|
+ for (InsuranceImageVo.ImageDTO imageDTO : imageBase64List) {
|
|
|
+ extracted(parameters, headers, zhongAnCrawlerOrder, imageType, imageDTO);
|
|
|
}
|
|
|
- File file = new File(filePath);
|
|
|
- ZhongAnCrawlerUploadImageRequest uploadImageRequest = new ZhongAnCrawlerUploadImageRequest(imageType, file, zhongAnCrawlerOrder.getOrderNo(), zhongAnCrawlerOrder.getPolicyId(), parameters);
|
|
|
- ZhongAnCrawlerUploadImageResponse uploadImageResponse = zhongAnCrawlerRequestComponent.uploadImage(uploadImageRequest, headers);
|
|
|
}
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private void extracted(ZhongAnCrawlerConfigureParameters parameters, HttpHeaders headers, ZhongAnCrawlerOrder zhongAnCrawlerOrder, String imageType, InsuranceImageVo.ImageDTO imageDTO) {
|
|
|
+ ZhongAnCrawlerUploadImageRequest uploadImageRequest = new ZhongAnCrawlerUploadImageRequest(imageType, imageDTO, zhongAnCrawlerOrder.getOrderNo(), zhongAnCrawlerOrder.getPolicyId(), parameters);
|
|
|
+ ZhongAnCrawlerUploadImageResponse uploadImageResponse = zhongAnCrawlerRequestComponent.uploadImage(uploadImageRequest, headers);
|
|
|
+ if (uploadImageResponse != null && StringUtils.isNotEmpty(uploadImageResponse.getErrorMsg())) {
|
|
|
+ throw new SystemException(uploadImageResponse.getErrorMsg());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public byte[] convert(String filePath) throws IOException {
|
|
|
+ File file = new File(filePath);
|
|
|
+ byte[] binaryData = new byte[(int) file.length()];
|
|
|
+ try (FileInputStream fis = new FileInputStream(file)) {
|
|
|
+ fis.read(binaryData); // 读取全部字节到数组
|
|
|
}
|
|
|
+ return binaryData;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -182,10 +386,11 @@ public class ZhongAnCrawlerRequestImpl implements ZhongAnCrawlerRequest {
|
|
|
*/
|
|
|
@Override
|
|
|
public DownloadPolicyResultVo downloadPolicy(DownloadPolicyVo downloadPolicyVo) {
|
|
|
+ loginCookieCache(zhongAnId);
|
|
|
OrderBase orderBase = downloadPolicyVo.getOrder();
|
|
|
AttributionInformationVo attributionInformationVo = orderBase.getAttributionInformationVo();
|
|
|
//获取配置信息
|
|
|
- HttpHeaders headers = zhongAnCrawlerRequestComponent.getHeaders(attributionInformationVo.getUsername());
|
|
|
+ HttpHeaders headers = zhongAnCrawlerRequestComponent.getHeaders(zhongAnId);
|
|
|
|
|
|
ZhongAnCrawlerOrder zhongAnCrawlerOrder = zhongAnCrawlerOrderService.findByOrdersNo(orderBase.getOrdersNo());
|
|
|
String orderNo = zhongAnCrawlerOrder.getOrderNo();
|
|
|
@@ -233,6 +438,22 @@ public class ZhongAnCrawlerRequestImpl implements ZhongAnCrawlerRequest {
|
|
|
*/
|
|
|
@Override
|
|
|
public OrderStatusResultVo queryOrderState(OrderStatusVo orderStatusVo) throws JsonProcessingException {
|
|
|
- return null;
|
|
|
+ loginCookieCache(zhongAnId);
|
|
|
+ AttributionInformationVo attributionInformationVo = orderStatusVo.getOrder().getAttributionInformationVo();
|
|
|
+ //获取配置信息
|
|
|
+ ZhongAnCrawlerConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(ZhongAnCrawlerConfigureParameters.class, attributionInformationVo.getConfigInfo());
|
|
|
+ HttpHeaders headers = zhongAnCrawlerRequestComponent.getHeaders(zhongAnId);
|
|
|
+ String flowId = parameters.getFlowId();
|
|
|
+ if (StringUtils.isEmpty(flowId)) {
|
|
|
+ parameters.setFlowId(zhongAnCrawlerCacheComponent.getFlowId(zhongAnId));
|
|
|
+ }
|
|
|
+
|
|
|
+ ZhongAnCrawlerPaymentResponse.ValueDTO.DatasDTO.InitInfoDTO payment = zhongAnCrawlerCacheComponent.getPayment(orderStatusVo.getOrder().getOrdersNo() + ZhongAnCrawlerCacheComponent.PAYMENT);
|
|
|
+ ZhongAnCrawlerPolicyListRequest policyListRequest = new ZhongAnCrawlerPolicyListRequest(payment.getVehicleName(),parameters);
|
|
|
+ String s = zhongAnCrawlerRequestComponent.policyList(policyListRequest,headers);
|
|
|
+
|
|
|
+ OrderStatusResultVo orderStatusResultVo= new OrderStatusResultVo();
|
|
|
+
|
|
|
+ return orderStatusResultVo;
|
|
|
}
|
|
|
}
|