|
@@ -3,9 +3,11 @@ package com.jzg.quotation.dajia.crawler.component;
|
|
|
|
|
|
|
|
import com.alibaba.fastjson2.JSON;
|
|
import com.alibaba.fastjson2.JSON;
|
|
|
import com.jzg.commons.exception.SystemException;
|
|
import com.jzg.commons.exception.SystemException;
|
|
|
|
|
+import com.jzg.commons.util.AssertionUtils;
|
|
|
import com.jzg.quotation.commons.component.RequestComponent;
|
|
import com.jzg.quotation.commons.component.RequestComponent;
|
|
|
import com.jzg.quotation.commons.service.ExteriorUtilsRequest;
|
|
import com.jzg.quotation.commons.service.ExteriorUtilsRequest;
|
|
|
import com.jzg.quotation.commons.standard.CrawlerRequestUrlStandard;
|
|
import com.jzg.quotation.commons.standard.CrawlerRequestUrlStandard;
|
|
|
|
|
+import com.jzg.quotation.commons.utils.RequestObjectConversion;
|
|
|
import com.jzg.quotation.dajia.crawler.constant.enums.RequestUrl;
|
|
import com.jzg.quotation.dajia.crawler.constant.enums.RequestUrl;
|
|
|
import com.jzg.quotation.dajia.crawler.entity.request.*;
|
|
import com.jzg.quotation.dajia.crawler.entity.request.*;
|
|
|
import com.jzg.quotation.dajia.crawler.entity.response.*;
|
|
import com.jzg.quotation.dajia.crawler.entity.response.*;
|
|
@@ -13,20 +15,18 @@ import com.jzg.quotation.dajia.crawler.properties.DaJiaCrawlerProperties;
|
|
|
import com.jzg.quotation.dajia.crawler.utils.DESEncryption;
|
|
import com.jzg.quotation.dajia.crawler.utils.DESEncryption;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
-import org.apache.commons.beanutils.PropertyUtils;
|
|
|
|
|
-import org.springframework.core.ParameterizedTypeReference;
|
|
|
|
|
import org.springframework.http.HttpHeaders;
|
|
import org.springframework.http.HttpHeaders;
|
|
|
import org.springframework.http.MediaType;
|
|
import org.springframework.http.MediaType;
|
|
|
import org.springframework.http.ResponseEntity;
|
|
import org.springframework.http.ResponseEntity;
|
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
+import org.springframework.util.LinkedMultiValueMap;
|
|
|
|
|
+import org.springframework.util.MultiValueMap;
|
|
|
import org.springframework.web.reactive.function.BodyInserters;
|
|
import org.springframework.web.reactive.function.BodyInserters;
|
|
|
import org.springframework.web.reactive.function.client.WebClient;
|
|
import org.springframework.web.reactive.function.client.WebClient;
|
|
|
import reactor.core.publisher.Mono;
|
|
import reactor.core.publisher.Mono;
|
|
|
|
|
|
|
|
-import java.lang.reflect.InvocationTargetException;
|
|
|
|
|
import java.util.Base64;
|
|
import java.util.Base64;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
|
|
import java.util.UUID;
|
|
import java.util.UUID;
|
|
|
|
|
|
|
|
@Slf4j
|
|
@Slf4j
|
|
@@ -86,7 +86,9 @@ public class DaJiaCrawlerRequestComponent {
|
|
|
if (frequency <= 0) {
|
|
if (frequency <= 0) {
|
|
|
throw new SystemException("验证码异常");
|
|
throw new SystemException("验证码异常");
|
|
|
}
|
|
}
|
|
|
- Map<String, Object> map = Map.of("imgId", UUID.randomUUID().toString().replaceAll("-", ""));
|
|
|
|
|
|
|
+
|
|
|
|
|
+ MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
|
|
|
|
|
+ map.add("imgId", UUID.randomUUID().toString().replaceAll("-", ""));
|
|
|
// 请求
|
|
// 请求
|
|
|
DaJiaCrawlerBaseResponse request = requestComponent.requestGET(RequestUrl.CAPTCHA.getRequestUrl(daJiaCrawlerProperties.getBaseUrl()), map, "", DaJiaCrawlerBaseResponse.class);
|
|
DaJiaCrawlerBaseResponse request = requestComponent.requestGET(RequestUrl.CAPTCHA.getRequestUrl(daJiaCrawlerProperties.getBaseUrl()), map, "", DaJiaCrawlerBaseResponse.class);
|
|
|
DaJiaCrawlerCaptchaResponse daJiaCrawlerCaptchaResponse = DESEncryption.decryptStrToObject(request.getResult(), DaJiaCrawlerCaptchaResponse.class);
|
|
DaJiaCrawlerCaptchaResponse daJiaCrawlerCaptchaResponse = DESEncryption.decryptStrToObject(request.getResult(), DaJiaCrawlerCaptchaResponse.class);
|
|
@@ -112,17 +114,16 @@ public class DaJiaCrawlerRequestComponent {
|
|
|
* @return 唯一机构列表
|
|
* @return 唯一机构列表
|
|
|
*/
|
|
*/
|
|
|
public DaJiaCrawlerCompaniesResponse.ListDTO companies(DaJiaCrawlerCompaniesRequest request, String cDptCde, HttpHeaders headers) {
|
|
public DaJiaCrawlerCompaniesResponse.ListDTO companies(DaJiaCrawlerCompaniesRequest request, String cDptCde, HttpHeaders headers) {
|
|
|
- try {
|
|
|
|
|
- Map<String, Object> describe = PropertyUtils.describe(request);
|
|
|
|
|
- DaJiaCrawlerCompaniesResponse daJiaCrawlerCompaniesResponse = requestComponent.get(RequestUrl.CAPTCHA.getRequestUrl(daJiaCrawlerProperties.getBaseUrl()), describe, "", DaJiaCrawlerCompaniesResponse.class, headers);
|
|
|
|
|
- return daJiaCrawlerCompaniesResponse.getList()
|
|
|
|
|
- .stream()
|
|
|
|
|
- .filter(x -> cDptCde.equals(x.getCDptCde()))
|
|
|
|
|
- .findFirst()
|
|
|
|
|
- .orElseThrow(() -> new SystemException(""));
|
|
|
|
|
- } catch (InvocationTargetException | IllegalAccessException | NoSuchMethodException e) {
|
|
|
|
|
- throw new SystemException("");
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ MultiValueMap<String, String> multiValueMap = RequestObjectConversion.convertMultiValueStringMap(request);
|
|
|
|
|
+ DaJiaCrawlerBaseResponse response = requestComponent.get(RequestUrl.COMPANIES.getRequestUrl(daJiaCrawlerProperties.getVhlUrl()), multiValueMap, "", DaJiaCrawlerBaseResponse.class, headers);
|
|
|
|
|
+ DaJiaCrawlerCompaniesResponse daJiaCrawlerCompaniesResponse = DESEncryption.decryptStrToObject(response.getResult(), DaJiaCrawlerCompaniesResponse.class);
|
|
|
|
|
+
|
|
|
|
|
+ return daJiaCrawlerCompaniesResponse.getList()
|
|
|
|
|
+ .stream()
|
|
|
|
|
+ .filter(x -> cDptCde.equals(x.getCDptCde()))
|
|
|
|
|
+ .findFirst()
|
|
|
|
|
+ .orElseThrow(() -> new SystemException(""));
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -134,17 +135,13 @@ public class DaJiaCrawlerRequestComponent {
|
|
|
* @return 套餐信息
|
|
* @return 套餐信息
|
|
|
*/
|
|
*/
|
|
|
public DaJiaCrawlerChannelPackagesResponse channelPackages(DaJiaCrawlerChannelPackagesRequest request, String packagesName, HttpHeaders headers) {
|
|
public DaJiaCrawlerChannelPackagesResponse channelPackages(DaJiaCrawlerChannelPackagesRequest request, String packagesName, HttpHeaders headers) {
|
|
|
- try {
|
|
|
|
|
- Map<String, Object> describe = PropertyUtils.describe(request);
|
|
|
|
|
- List<DaJiaCrawlerChannelPackagesResponse> responses = requestComponent.get(RequestUrl.CAPTCHA.getRequestUrl(daJiaCrawlerProperties.getBaseUrl()), describe, "", new ParameterizedTypeReference<>() {
|
|
|
|
|
- }, headers);
|
|
|
|
|
- return responses.stream()
|
|
|
|
|
- .filter(x -> packagesName.equals(x.getName()))
|
|
|
|
|
- .findFirst()
|
|
|
|
|
- .orElseThrow(() -> new SystemException(""));
|
|
|
|
|
- } catch (InvocationTargetException | IllegalAccessException | NoSuchMethodException e) {
|
|
|
|
|
- throw new SystemException("");
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ MultiValueMap<String, String> describe = RequestObjectConversion.convertMultiValueStringMap(request);
|
|
|
|
|
+ DaJiaCrawlerBaseResponse daJiaCrawlerBaseResponse = requestComponent.get(RequestUrl.CHANNEL_PACKAGES.getRequestUrl(daJiaCrawlerProperties.getVhlUrl()), describe, "", DaJiaCrawlerBaseResponse.class, headers);
|
|
|
|
|
+ List<DaJiaCrawlerChannelPackagesResponse> responses = DESEncryption.decryptStrToObjectList(daJiaCrawlerBaseResponse.getResult(), DaJiaCrawlerChannelPackagesResponse.class);
|
|
|
|
|
+ return responses.stream()
|
|
|
|
|
+ .filter(x -> packagesName.equals(x.getName()))
|
|
|
|
|
+ .findFirst()
|
|
|
|
|
+ .orElseThrow(() -> new SystemException(""));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -175,13 +172,45 @@ public class DaJiaCrawlerRequestComponent {
|
|
|
* @return
|
|
* @return
|
|
|
*/
|
|
*/
|
|
|
public <DaJiaResponse> DaJiaResponse request(CrawlerRequestUrlStandard crawlerRequestUrlStandard, Object request, Class<DaJiaResponse> responseClass, HttpHeaders headers) {
|
|
public <DaJiaResponse> DaJiaResponse request(CrawlerRequestUrlStandard crawlerRequestUrlStandard, Object request, Class<DaJiaResponse> responseClass, HttpHeaders headers) {
|
|
|
- ResponseEntity<DaJiaCrawlerBaseResponse> responseEntity = requestComponent.objectPost(crawlerRequestUrlStandard.getRequestUrl(daJiaCrawlerProperties.getVhlUrl()), request, DaJiaCrawlerBaseResponse.class, headers);
|
|
|
|
|
|
|
+ // 参数加密
|
|
|
|
|
+ DaJiaCrawlerBaseRequest crawlerBaseRequest = new DaJiaCrawlerBaseRequest(request);
|
|
|
|
|
+ ResponseEntity<DaJiaCrawlerBaseResponse> responseEntity = requestComponent.objectPost(crawlerRequestUrlStandard.getRequestUrl(daJiaCrawlerProperties.getVhlUrl()), crawlerBaseRequest, DaJiaCrawlerBaseResponse.class, headers);
|
|
|
DaJiaCrawlerBaseResponse daJiaCrawlerBaseResponse = responseEntity.getBody();
|
|
DaJiaCrawlerBaseResponse daJiaCrawlerBaseResponse = responseEntity.getBody();
|
|
|
- assert daJiaCrawlerBaseResponse != null;
|
|
|
|
|
|
|
+ AssertionUtils.isEmpty(daJiaCrawlerBaseResponse, "请求异常请重试");
|
|
|
|
|
+ if (!"200".equals(daJiaCrawlerBaseResponse.getCode())) {
|
|
|
|
|
+ throw new SystemException(daJiaCrawlerBaseResponse.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ // 参数解密
|
|
|
String decrypt = DESEncryption.decrypt(daJiaCrawlerBaseResponse.getResult());
|
|
String decrypt = DESEncryption.decrypt(daJiaCrawlerBaseResponse.getResult());
|
|
|
return JSON.parseObject(decrypt, responseClass);
|
|
return JSON.parseObject(decrypt, responseClass);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 创建token(查看token是否过期前一步)
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param operatorCode
|
|
|
|
|
+ * @param headers 请求头
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public String createToken(String operatorCode, HttpHeaders headers) {
|
|
|
|
|
+ String url = RequestUrl.CREATE_TOKEN.getRequestUrl(daJiaCrawlerProperties.getBaseUrl());
|
|
|
|
|
+ MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
|
|
|
|
|
+ map.add("operatorCode", operatorCode);
|
|
|
|
|
+ DaJiaCrawlerBaseResponse daJiaCrawlerBaseResponse = requestComponent.get(url, map, "", DaJiaCrawlerBaseResponse.class, headers);
|
|
|
|
|
+ return DESEncryption.decrypt(daJiaCrawlerBaseResponse.getResult()).replace("\"", "");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 校验token(获取新的token)
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param daJiaCrawlerCheckTokenRequest 校验token
|
|
|
|
|
+ * @param headers 请求头
|
|
|
|
|
+ * @return 车型列表
|
|
|
|
|
+ */
|
|
|
|
|
+ public DaJiaCrawlerCheckTokenResponse checkToken(DaJiaCrawlerCheckTokenRequest daJiaCrawlerCheckTokenRequest, HttpHeaders headers) {
|
|
|
|
|
+ return request(RequestUrl.CHECK_TOKEN, daJiaCrawlerCheckTokenRequest, DaJiaCrawlerCheckTokenResponse.class, headers);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 车型查询
|
|
* 车型查询
|
|
|
*
|
|
*
|
|
@@ -189,9 +218,8 @@ public class DaJiaCrawlerRequestComponent {
|
|
|
* @param headers 请求头
|
|
* @param headers 请求头
|
|
|
* @return 车型列表
|
|
* @return 车型列表
|
|
|
*/
|
|
*/
|
|
|
- public List<DaJiaCrawlerCarResponse.ListDTO> car(DaJiaCrawlerCarRequest daJiaCrawlerCarRequest, HttpHeaders headers) {
|
|
|
|
|
- DaJiaCrawlerCarResponse request = request(RequestUrl.CAR, daJiaCrawlerCarRequest, DaJiaCrawlerCarResponse.class, headers);
|
|
|
|
|
- return request.getList();
|
|
|
|
|
|
|
+ public DaJiaCrawlerCarResponse car(DaJiaCrawlerCarRequest daJiaCrawlerCarRequest, HttpHeaders headers) {
|
|
|
|
|
+ return request(RequestUrl.CAR, daJiaCrawlerCarRequest, DaJiaCrawlerCarResponse.class, headers);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -227,6 +255,18 @@ public class DaJiaCrawlerRequestComponent {
|
|
|
return request(RequestUrl.SAVE, request, DaJiaCrawlerSaveResponse.class, headers);
|
|
return request(RequestUrl.SAVE, request, DaJiaCrawlerSaveResponse.class, headers);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 初始化数据
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param request 初始化数据
|
|
|
|
|
+ * @param headers 请求头
|
|
|
|
|
+ * @return 初始化数据响应
|
|
|
|
|
+ */
|
|
|
|
|
+ public DaJiaCrawlerInitDataResponse initData(DaJiaCrawlerInitDataRequest request, HttpHeaders headers) {
|
|
|
|
|
+ ResponseEntity<DaJiaCrawlerInitDataResponse> responseEntity = requestComponent.objectPost(RequestUrl.INIT_DATA.getRequestUrl(daJiaCrawlerProperties.getVhlUrl()), request, DaJiaCrawlerInitDataResponse.class, headers);
|
|
|
|
|
+ return responseEntity.getBody();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 上传标志
|
|
* 上传标志
|
|
|
*
|
|
*
|
|
@@ -284,7 +324,8 @@ public class DaJiaCrawlerRequestComponent {
|
|
|
*/
|
|
*/
|
|
|
public String qrcode(String orderNo, String operatorCode, HttpHeaders headers) {
|
|
public String qrcode(String orderNo, String operatorCode, HttpHeaders headers) {
|
|
|
String url = RequestUrl.QRCODE.getRequestUrl(daJiaCrawlerProperties.getBaseUrl()) + "/" + orderNo + "/1";
|
|
String url = RequestUrl.QRCODE.getRequestUrl(daJiaCrawlerProperties.getBaseUrl()) + "/" + orderNo + "/1";
|
|
|
- Map<String, Object> map = Map.of("operatorCode", operatorCode);
|
|
|
|
|
|
|
+ MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
|
|
|
|
|
+ map.add("operatorCode", operatorCode);
|
|
|
DaJiaCrawlerBaseResponse daJiaCrawlerBaseResponse = requestComponent.get(url, map, "", DaJiaCrawlerBaseResponse.class, headers);
|
|
DaJiaCrawlerBaseResponse daJiaCrawlerBaseResponse = requestComponent.get(url, map, "", DaJiaCrawlerBaseResponse.class, headers);
|
|
|
DaJiaCrawlerQrcodeResponse daJiaCrawlerCaptchaResponse = DESEncryption.decryptStrToObject(daJiaCrawlerBaseResponse.getResult(), DaJiaCrawlerQrcodeResponse.class);
|
|
DaJiaCrawlerQrcodeResponse daJiaCrawlerCaptchaResponse = DESEncryption.decryptStrToObject(daJiaCrawlerBaseResponse.getResult(), DaJiaCrawlerQrcodeResponse.class);
|
|
|
return daJiaCrawlerCaptchaResponse.getUrl();
|
|
return daJiaCrawlerCaptchaResponse.getUrl();
|
|
@@ -321,12 +362,8 @@ public class DaJiaCrawlerRequestComponent {
|
|
|
* @return 保单数据
|
|
* @return 保单数据
|
|
|
*/
|
|
*/
|
|
|
public DaJiaCrawlerDownloadResponse electronPolicyIODownload(DaJiaCrawlerDownloadRequest request, HttpHeaders headers) {
|
|
public DaJiaCrawlerDownloadResponse electronPolicyIODownload(DaJiaCrawlerDownloadRequest request, HttpHeaders headers) {
|
|
|
- try {
|
|
|
|
|
- Map<String, Object> describe = PropertyUtils.describe(request);
|
|
|
|
|
- return requestComponent.get(RequestUrl.ELECTRON_POLICY_IO_DOWNLOAD.getRequestUrl(daJiaCrawlerProperties.getBaseUrl()), describe, "", DaJiaCrawlerDownloadResponse.class, headers);
|
|
|
|
|
- } catch (InvocationTargetException | IllegalAccessException | NoSuchMethodException e) {
|
|
|
|
|
- throw new SystemException("");
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ MultiValueMap<String, String> describe = RequestObjectConversion.convertMultiValueStringMap(request);
|
|
|
|
|
+ return requestComponent.get(RequestUrl.ELECTRON_POLICY_IO_DOWNLOAD.getRequestUrl(daJiaCrawlerProperties.getBaseUrl()), describe, "", DaJiaCrawlerDownloadResponse.class, headers);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|