liub преди 4 месеца
родител
ревизия
88daf454ef

+ 27 - 21
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/component/HengBangCrawlerRequestComponent.java

@@ -83,7 +83,7 @@ public class HengBangCrawlerRequestComponent {
      * @param loginsNumber 登录次数
      * @return token
      */
-    public String  authenticate(String username, String password, int loginsNumber) {
+    public String authenticate(String username, String password, int loginsNumber) {
         // 登录验证码获取
         HbCrawlerCaptchaResponse captchaResponse = captcha(RequestConstant.REQUEST_NUMBER);
         // 登录存入缓存当中
@@ -146,26 +146,27 @@ public class HengBangCrawlerRequestComponent {
         param.set("sysCategory", "2");
         param.set("resourceType", "HBXSH");
         HttpHeaders headers = new HttpHeaders();
-        headers.set(HttpHeaders.ACCEPT,"*/*");
-        headers.set(HttpHeaders.CONTENT_TYPE,"application/x-www-form-urlencode;charset=utf-8");
-        headers.set(HttpHeaders.USER_AGENT,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36");
-        headers.set(HttpHeaders.AUTHORIZATION,getAuthorization(username));
-        HbCrawlerQueryUserInfoResponse response = requestComponent.get(RequestUrl.QUERY_USER_INFO.getRequestUrl(hbCrawlerProperties.getBaseUrl()) + "/" + username,param,RequestUrl.QUERY_USER_INFO.getRequestDescription(),HbCrawlerQueryUserInfoResponse.class,headers);
+        headers.set(HttpHeaders.ACCEPT, "*/*");
+        headers.set(HttpHeaders.CONTENT_TYPE, "application/x-www-form-urlencode;charset=utf-8");
+        headers.set(HttpHeaders.USER_AGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36");
+        headers.set(HttpHeaders.AUTHORIZATION, getAuthorization(username));
+        HbCrawlerQueryUserInfoResponse response = requestComponent.get(RequestUrl.QUERY_USER_INFO.getRequestUrl(hbCrawlerProperties.getBaseUrl()) + "/" + username, param, RequestUrl.QUERY_USER_INFO.getRequestDescription(), HbCrawlerQueryUserInfoResponse.class, headers);
         return response;
     }
 
     /**
      * 获取行业车型信息
+     *
      * @param queryCarInfoRequest
      * @param headers
      */
     public HbCrawlerQueryCarRequest.CbitDataDTO queryCarInfo(HbCrawlerQueryCarInfoRequest queryCarInfoRequest, HttpHeaders headers) {
         MultiValueMap<String, String> param = RequestObjectConversion.convertMultiValueStringMap(queryCarInfoRequest);
-        String response = requestComponent.get(RequestUrl.QUERY_CAR_INFO.getRequestUrl(hbCrawlerProperties.getBaseUrl()) ,param,RequestUrl.QUERY_CAR_INFO.getRequestDescription(),String.class,headers);
+        String response = requestComponent.get(RequestUrl.QUERY_CAR_INFO.getRequestUrl(hbCrawlerProperties.getBaseUrl()), param, RequestUrl.QUERY_CAR_INFO.getRequestDescription(), String.class, headers);
         JSONObject res = JSONObject.parseObject(response);
         String ciphertextB64 = res.getString("hb_enc_d");
         String plaintext = null;
-        try{
+        try {
             plaintext = HengBangAESUtil.decryptStr(ciphertextB64);
         } catch (Exception e) {
             throw new SystemException("解密失败");
@@ -193,8 +194,9 @@ public class HengBangCrawlerRequestComponent {
 
     /**
      * AES-256-CBC 解密
+     *
      * @param ciphertextB64 Base64 编码的密文(前16字节是IV)
-     * @param key 32字节密钥(256位)
+     * @param key           32字节密钥(256位)
      * @return 解密后的明文
      * @throws Exception
      */
@@ -231,7 +233,7 @@ public class HengBangCrawlerRequestComponent {
      * @return
      */
     public List<HbCrawlerQueryCarResponse.ContentDTO> queryCar(HbCrawlerQueryCarRequest queryCarRequest, HttpHeaders headers) {
-        HbCrawlerQueryCarResponse queryCarResponse = requestComponent.toStringPost(RequestUrl.QUERY_CAR.getRequestUrl(hbCrawlerProperties.getBaseUrl()), queryCarRequest,RequestUrl.QUERY_CAR.getRequestDescription(), HbCrawlerQueryCarResponse.class, headers);
+        HbCrawlerQueryCarResponse queryCarResponse = requestComponent.toStringPost(RequestUrl.QUERY_CAR.getRequestUrl(hbCrawlerProperties.getBaseUrl()), queryCarRequest, RequestUrl.QUERY_CAR.getRequestDescription(), HbCrawlerQueryCarResponse.class, headers);
         return queryCarResponse.getContent();
     }
 
@@ -293,18 +295,19 @@ public class HengBangCrawlerRequestComponent {
             mapper.setSerializationInclusion(JsonInclude.Include.ALWAYS);
             String json = mapper.writeValueAsString(calculationRequest);
             req.setHbEncD(HengBangAESUtil.encryptStr(json));
-            HbCrawlerSaleInfoResponse response = requestComponent.toStringPost(RequestUrl.CALCULATION.getRequestUrl(hbCrawlerProperties.getBaseUrl()), req, RequestUrl.CALCULATION.getRequestDescription(),HbCrawlerSaleInfoResponse.class, headers);
+            HbCrawlerSaleInfoResponse response = requestComponent.toStringPost(RequestUrl.CALCULATION.getRequestUrl(hbCrawlerProperties.getBaseUrl()), req, RequestUrl.CALCULATION.getRequestDescription(), HbCrawlerSaleInfoResponse.class, headers);
             System.out.println(HengBangAESUtil.decryptStr(response.getHbEncD()));
             String resJson = HengBangAESUtil.decryptStr(response.getHbEncD());
             return resJson;
         } catch (WebClientResponseException e) {
-            if(e.getStatusCode().equals(HttpStatusCode.valueOf(500))){
-                return JSONObject.parseObject(e.getMessage()).getString("detail");
-            }else{
+            log.error("恒邦calculation接口调用失败[{}]: {}", e.getStatusCode(), e.getResponseBodyAsString());
+            final JSONObject jsonObject = JSONObject.parseObject(e.getResponseBodyAsString());
+            if (jsonObject.getInteger("status") == 500) {
+                return jsonObject.getString("detail");
+            } else {
                 throw new SystemException(e.getMessage());
             }
-        }
-        catch (Exception e) {
+        } catch (Exception e) {
             throw new SystemException(e.getMessage());
         }
     }
@@ -320,7 +323,7 @@ public class HengBangCrawlerRequestComponent {
         MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
         String encryptPlyappno;
         try {
-            encryptPlyappno =  HengBangAESUtil.encryptStr(plyappno);
+            encryptPlyappno = HengBangAESUtil.encryptStr(plyappno);
             System.out.println("encryptPlyappno1 ===========" + encryptPlyappno);
             encryptPlyappno = new StringBuilder(RequestConstant.ENCRYPTPRE).append(encryptPlyappno)
                     .toString();
@@ -382,12 +385,13 @@ public class HengBangCrawlerRequestComponent {
     public String coreProposal(String plyappno, HttpHeaders headers, List<Map<String, String>> paramList) {
         try {
             String requestBody = JSON.toJSONString(paramList);
-            ResponseEntity<String> responseEntity = requestComponent.objectPost(RequestUrl.SUBMIT.getRequestUrl(hbCrawlerProperties.getBaseUrl()) + "/" +plyappno, requestBody, String.class, headers);
+            ResponseEntity<String> responseEntity = requestComponent.objectPost(RequestUrl.SUBMIT.getRequestUrl(hbCrawlerProperties.getBaseUrl()) + "/" + plyappno, requestBody, String.class, headers);
             return JSONObject.parseObject(responseEntity.getBody()).getString("message");
         } catch (WebClientResponseException e) {
-            if(e.getStatusCode().equals(HttpStatusCode.valueOf(500))){
+            log.error("恒邦calculation接口调用失败[{}]: {}", e.getStatusCode(), e.getResponseBodyAsString());
+            if (e.getStatusCode().equals(HttpStatusCode.valueOf(500))) {
                 return JSONObject.parseObject(e.getMessage()).getString("detail");
-            }else{
+            } else {
                 throw new SystemException(e.getMessage());
             }
         }
@@ -395,6 +399,7 @@ public class HengBangCrawlerRequestComponent {
 
     /**
      * 获取核保信息
+     *
      * @param plyappno
      * @param headers
      * @return
@@ -481,7 +486,8 @@ public class HengBangCrawlerRequestComponent {
         List<Object> response = requestComponent.get(RequestUrl.LAST_ACCIDENT.getRequestUrl(hbCrawlerProperties.getBaseUrl()).concat(plyappno),
                 map,
                 "",
-                new ParameterizedTypeReference<>(){},
+                new ParameterizedTypeReference<>() {
+                },
                 headers);
         return CollectionUtils.emptyIfNull(response)
                 .stream()