|
@@ -19,9 +19,12 @@ import org.redisson.api.RMap;
|
|
|
import org.redisson.api.RedissonClient;
|
|
import org.redisson.api.RedissonClient;
|
|
|
import org.springframework.core.ParameterizedTypeReference;
|
|
import org.springframework.core.ParameterizedTypeReference;
|
|
|
import org.springframework.http.HttpHeaders;
|
|
import org.springframework.http.HttpHeaders;
|
|
|
|
|
+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.StringUtils;
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
+import org.springframework.web.reactive.function.BodyInserters;
|
|
|
|
|
+import reactor.core.publisher.Mono;
|
|
|
|
|
|
|
|
import java.lang.reflect.InvocationTargetException;
|
|
import java.lang.reflect.InvocationTargetException;
|
|
|
import java.time.Duration;
|
|
import java.time.Duration;
|
|
@@ -91,10 +94,7 @@ 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("-", ""));
|
|
|
|
|
|
|
+ Map<String, Object> map = Map.of("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.decrypt(request.getResult(), DaJiaCrawlerCaptchaResponse.class);
|
|
DaJiaCrawlerCaptchaResponse daJiaCrawlerCaptchaResponse = DESEncryption.decrypt(request.getResult(), DaJiaCrawlerCaptchaResponse.class);
|
|
@@ -123,8 +123,7 @@ public class DaJiaCrawlerRequestComponent {
|
|
|
try {
|
|
try {
|
|
|
Map<String, Object> describe = PropertyUtils.describe(request);
|
|
Map<String, Object> describe = PropertyUtils.describe(request);
|
|
|
DaJiaCrawlerCompaniesResponse daJiaCrawlerCompaniesResponse = requestComponent.get(RequestUrl.CAPTCHA.getRequestUrl(daJiaCrawlerProperties.getBaseUrl()), describe, "", DaJiaCrawlerCompaniesResponse.class, headers);
|
|
DaJiaCrawlerCompaniesResponse daJiaCrawlerCompaniesResponse = requestComponent.get(RequestUrl.CAPTCHA.getRequestUrl(daJiaCrawlerProperties.getBaseUrl()), describe, "", DaJiaCrawlerCompaniesResponse.class, headers);
|
|
|
- return daJiaCrawlerCompaniesResponse
|
|
|
|
|
- .getList()
|
|
|
|
|
|
|
+ return daJiaCrawlerCompaniesResponse.getList()
|
|
|
.stream()
|
|
.stream()
|
|
|
.filter(x -> cDptCde.equals(x.getCDptCde()))
|
|
.filter(x -> cDptCde.equals(x.getCDptCde()))
|
|
|
.findFirst()
|
|
.findFirst()
|
|
@@ -147,8 +146,7 @@ public class DaJiaCrawlerRequestComponent {
|
|
|
Map<String, Object> describe = PropertyUtils.describe(request);
|
|
Map<String, Object> describe = PropertyUtils.describe(request);
|
|
|
List<DaJiaCrawlerChannelPackagesResponse> responses = requestComponent.get(RequestUrl.CAPTCHA.getRequestUrl(daJiaCrawlerProperties.getBaseUrl()), describe, "", new ParameterizedTypeReference<>() {
|
|
List<DaJiaCrawlerChannelPackagesResponse> responses = requestComponent.get(RequestUrl.CAPTCHA.getRequestUrl(daJiaCrawlerProperties.getBaseUrl()), describe, "", new ParameterizedTypeReference<>() {
|
|
|
}, headers);
|
|
}, headers);
|
|
|
- return responses
|
|
|
|
|
- .stream()
|
|
|
|
|
|
|
+ return responses.stream()
|
|
|
.filter(x -> packagesName.equals(x.getName()))
|
|
.filter(x -> packagesName.equals(x.getName()))
|
|
|
.findFirst()
|
|
.findFirst()
|
|
|
.orElseThrow(() -> new SystemException(""));
|
|
.orElseThrow(() -> new SystemException(""));
|
|
@@ -171,10 +169,7 @@ public class DaJiaCrawlerRequestComponent {
|
|
|
// 登录存入缓存当中
|
|
// 登录存入缓存当中
|
|
|
DaJiaCrawlerAuthenticateRequest request = new DaJiaCrawlerAuthenticateRequest(captcha, username, password);
|
|
DaJiaCrawlerAuthenticateRequest request = new DaJiaCrawlerAuthenticateRequest(captcha, username, password);
|
|
|
ResponseEntity<DaJiaCrawlerBaseResponse> responseEntity = requestComponent.objectPost(RequestUrl.AUTHENTICATE.getRequestUrl(daJiaCrawlerProperties.getVhlUrl()), request, DaJiaCrawlerBaseResponse.class);
|
|
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())) {
|
|
if ("200".equals(response.getCode())) {
|
|
|
DaJiaCrawlerAuthenticateResponse daJiaCrawlerCaptchaResponse = DESEncryption.decrypt(response.getResult(), DaJiaCrawlerAuthenticateResponse.class);
|
|
DaJiaCrawlerAuthenticateResponse daJiaCrawlerCaptchaResponse = DESEncryption.decrypt(response.getResult(), DaJiaCrawlerAuthenticateResponse.class);
|
|
@@ -186,8 +181,7 @@ public class DaJiaCrawlerRequestComponent {
|
|
|
}
|
|
}
|
|
|
loginsNumber = loginsNumber - 1;
|
|
loginsNumber = loginsNumber - 1;
|
|
|
if (loginsNumber <= 0) {
|
|
if (loginsNumber <= 0) {
|
|
|
- String message = Optional
|
|
|
|
|
- .ofNullable(responseEntity.getBody())
|
|
|
|
|
|
|
+ String message = Optional.ofNullable(responseEntity.getBody())
|
|
|
.map(DaJiaCrawlerBaseResponse::getMessage)
|
|
.map(DaJiaCrawlerBaseResponse::getMessage)
|
|
|
.orElseThrow(() -> new SystemException("登录失败"));
|
|
.orElseThrow(() -> new SystemException("登录失败"));
|
|
|
throw new SystemException(message);
|
|
throw new SystemException(message);
|
|
@@ -208,8 +202,7 @@ public class DaJiaCrawlerRequestComponent {
|
|
|
* @return
|
|
* @return
|
|
|
*/
|
|
*/
|
|
|
public HttpHeaders getHeaders(String username, String password) {
|
|
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);
|
|
.get(AUTHORIZATION);
|
|
|
if (!StringUtils.hasLength(authorization)) {
|
|
if (!StringUtils.hasLength(authorization)) {
|
|
|
authorization = authenticate(username, password, LOGINS_NUMBER);
|
|
authorization = authenticate(username, password, LOGINS_NUMBER);
|
|
@@ -226,9 +219,7 @@ public class DaJiaCrawlerRequestComponent {
|
|
|
* @return userCode
|
|
* @return userCode
|
|
|
*/
|
|
*/
|
|
|
public String getUserCode(String username) {
|
|
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) {
|
|
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);
|
|
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) {
|
|
public DaJiaCrawlerUploadResponse upload(DaJiaCrawlerUploadRequest request, HttpHeaders headers) {
|
|
|
return requestUnencrypted(RequestUrl.UPLOAD, request, DaJiaCrawlerUploadResponse.class, 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();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 提交核保
|
|
* 提交核保
|
|
|
*
|
|
*
|