|
|
@@ -1,15 +1,13 @@
|
|
|
package com.jzg.quotation.dajia.crawler.component;
|
|
|
|
|
|
|
|
|
-import cn.hutool.core.date.DateUtil;
|
|
|
-import cn.hutool.jwt.JWT;
|
|
|
-import cn.hutool.jwt.JWTPayload;
|
|
|
-import cn.hutool.jwt.JWTValidator;
|
|
|
import com.alibaba.fastjson2.JSON;
|
|
|
import com.jzg.commons.exception.SystemException;
|
|
|
+import com.jzg.commons.util.AssertionUtils;
|
|
|
import com.jzg.quotation.commons.component.RequestComponent;
|
|
|
import com.jzg.quotation.commons.service.ExteriorUtilsRequest;
|
|
|
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.entity.request.*;
|
|
|
import com.jzg.quotation.dajia.crawler.entity.response.*;
|
|
|
@@ -17,20 +15,18 @@ import com.jzg.quotation.dajia.crawler.properties.DaJiaCrawlerProperties;
|
|
|
import com.jzg.quotation.dajia.crawler.utils.DESEncryption;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
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.MediaType;
|
|
|
import org.springframework.http.ResponseEntity;
|
|
|
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.client.WebClient;
|
|
|
import reactor.core.publisher.Mono;
|
|
|
|
|
|
-import java.lang.reflect.InvocationTargetException;
|
|
|
import java.util.Base64;
|
|
|
import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
import java.util.UUID;
|
|
|
|
|
|
@Slf4j
|
|
|
@@ -90,7 +86,9 @@ public class DaJiaCrawlerRequestComponent {
|
|
|
if (frequency <= 0) {
|
|
|
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);
|
|
|
DaJiaCrawlerCaptchaResponse daJiaCrawlerCaptchaResponse = DESEncryption.decryptStrToObject(request.getResult(), DaJiaCrawlerCaptchaResponse.class);
|
|
|
@@ -116,17 +114,16 @@ public class DaJiaCrawlerRequestComponent {
|
|
|
* @return 唯一机构列表
|
|
|
*/
|
|
|
public DaJiaCrawlerCompaniesResponse.ListDTO companies(DaJiaCrawlerCompaniesRequest request, String cDptCde, HttpHeaders headers) {
|
|
|
- try {
|
|
|
- Map<String, Object> describe = PropertyUtils.describe(request);
|
|
|
- DaJiaCrawlerCompaniesResponse daJiaCrawlerCompaniesResponse = requestComponent.get(RequestUrl.COMPANIES.getRequestUrl(daJiaCrawlerProperties.getVhlUrl()), 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(""));
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -138,17 +135,13 @@ public class DaJiaCrawlerRequestComponent {
|
|
|
* @return 套餐信息
|
|
|
*/
|
|
|
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(""));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -183,12 +176,31 @@ public class DaJiaCrawlerRequestComponent {
|
|
|
DaJiaCrawlerBaseRequest crawlerBaseRequest = new DaJiaCrawlerBaseRequest(request);
|
|
|
ResponseEntity<DaJiaCrawlerBaseResponse> responseEntity = requestComponent.objectPost(crawlerRequestUrlStandard.getRequestUrl(daJiaCrawlerProperties.getVhlUrl()), crawlerBaseRequest, DaJiaCrawlerBaseResponse.class, headers);
|
|
|
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());
|
|
|
+ log.info("加密前参数:{}", crawlerBaseRequest.getData());
|
|
|
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)
|
|
|
*
|
|
|
@@ -302,7 +314,8 @@ public class DaJiaCrawlerRequestComponent {
|
|
|
*/
|
|
|
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);
|
|
|
+ MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
|
|
|
+ map.add("operatorCode", operatorCode);
|
|
|
DaJiaCrawlerBaseResponse daJiaCrawlerBaseResponse = requestComponent.get(url, map, "", DaJiaCrawlerBaseResponse.class, headers);
|
|
|
DaJiaCrawlerQrcodeResponse daJiaCrawlerCaptchaResponse = DESEncryption.decryptStrToObject(daJiaCrawlerBaseResponse.getResult(), DaJiaCrawlerQrcodeResponse.class);
|
|
|
return daJiaCrawlerCaptchaResponse.getUrl();
|
|
|
@@ -339,12 +352,8 @@ public class DaJiaCrawlerRequestComponent {
|
|
|
* @return 保单数据
|
|
|
*/
|
|
|
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);
|
|
|
}
|
|
|
|
|
|
}
|