Jelajahi Sumber

1、修改永诚定时获取保单状态时间为早上7点到晚上10点每五分钟执行。
2、补传回调有变动才会记录日志。

ligang134 3 tahun lalu
induk
melakukan
d2642d6e96

+ 9 - 2
README.md

@@ -88,13 +88,20 @@
 * 版本号:v0.0.3.5
 * 访问地址:http://sxzgkj.baoxianzhanggui.com/
 * 更新日期:2023-09-01
-* 更新时间:13:30  ~  13:50
+* 更新时间:07:30  ~  08:00
 * 更新内容:
-  1. 解决bug表当天要完成的功能
+  1. 解决bug表2023-09-01要完成的功能
 
 
 
+**《掌柜鼎PC平台》临时更新公告**
 
+* 版本号:v0.0.3.6
+* 访问地址:http://sxzgkj.baoxianzhanggui.com/
+* 更新日期:2023-09-04
+* 更新时间:00:00  ~  00:00
+* 更新内容:
+  1. 修改永诚定时获取保单状态时间为早上7点到晚上10点每五分钟执行。
 
 
 

+ 3 - 2
src/main/java/com/ydtech/modules/ins/scheduler/InsOrderScheduler.java

@@ -45,7 +45,7 @@ public class InsOrderScheduler {
 
 
     /**
-     * 永定时任务
+     * 永定时任务
      * 补传回调
      * 每隔300秒执行
      * fixedRate / 1000  = 秒
@@ -54,7 +54,8 @@ public class InsOrderScheduler {
      *
      */
 //    @Scheduled(fixedRate = 300000)
-    @Scheduled(cron = "0 0/5 7,22 * * ? ")
+//    @Scheduled(cron = "0 0/5 7,22 * * ? ")
+    @Scheduled(cron = "0 0/5 * * * ?")
     public void alltrustCallbackTask() {
 //        logger.info("【定时任务执行 - 永城 - 补传回调】开始时间:" + dateFormat.format(new Date()) + "");
 

+ 64 - 6
src/main/java/com/ydtech/modules/ins/service/impl/InsAlltrustApiServiceImpl.java

@@ -65,6 +65,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -632,6 +633,7 @@ public class InsAlltrustApiServiceImpl implements InsAlltrustApiService {
      */
     @Override
     public HttpResult callbackAnOrder(String quoteOrderNo) {
+//        log.debug("=========永诚API方式 - xml请求 - 补传回调开始======");
         HttpResult httpResult = new HttpResult();
 
         try {
@@ -654,17 +656,22 @@ public class InsAlltrustApiServiceImpl implements InsAlltrustApiService {
 
             ObjectMapper xmlMapper = gainXmlMapper();
             //接口请求
-            log.debug("=========永诚API方式 - xml请求 - 补传回调开始======");
-            InsApiLog apiLog = httpPost(xmlMapper, o, YcBuildData.API_ORDER_QUERY);
-            log.debug("=========永诚API方式 - xml请求 - 补传回调结束!======");
-            verifyRequest(apiLog, iac, InsQuoteFlow.Q_S_5);
-            String responseData = apiLog.getResponseData();
+//            InsApiLog apiLog = httpPostResultLog(xmlMapper, o, YcBuildData.API_ORDER_QUERY);
+            String respData = httpPostResultLog(xmlMapper, o, YcBuildData.API_ORDER_QUERY);
 
+//            log.info("永诚API方式 - xml请求 - 参数:" + apiLog.getRequestData());
+//            log.info("永诚API方式 - xml请求 ------------分割线----------------");
+//            log.info("永诚API方式 - xml请求 - 响应:" + apiLog.getResponseData());
 
-            String cleanStr = YcBuildData.cleanResponseStr(responseData);
+//            verifyRequest(apiLog, iac, InsQuoteFlow.Q_S_5);
+//            String responseData = apiLog.getResponseData();
+
+
+            String cleanStr = YcBuildData.cleanResponseStr(respData);
 //            CallbackAnOrderResponse callbackAnOrderResponse = xmlMapper.readValue(cleanStr, CallbackAnOrderResponse.class);
 
             if (StringUtils.isNotEmpty(cleanStr)) {
+                if(cleanStr.equals("账户不存在或没有权限")) return HttpResult.ok("账户不存在或没有权限");
                 log.info("永诚API方式 - 补传回调 - 参数:" + cleanStr);
                 CallBackRequest param = CallBackRequest.buildCallBackParam(cleanStr);
 
@@ -710,6 +717,7 @@ public class InsAlltrustApiServiceImpl implements InsAlltrustApiService {
             e.printStackTrace();
             return HttpResult.error("系统错误,请联系管理员");
         }
+//        log.debug("=========永诚API方式 - xml请求 - 补传回调结束!======");
         return httpResult;
     }
     /**
@@ -720,6 +728,7 @@ public class InsAlltrustApiServiceImpl implements InsAlltrustApiService {
 
         LambdaQueryWrapper<InsAreaCompany> lqw = new LambdaQueryWrapper<>();
         lqw.eq(InsAreaCompany::getOrderstatus,InsOrderStatus.S_2.getCode());
+        lqw.gt(InsAreaCompany::getAudittime, LocalDate.now().minusDays(1));
         List<InsAreaCompany> list = insAreaCompanyService.list(lqw);
 
         if(null != list && list.size()>0){
@@ -1131,6 +1140,55 @@ public class InsAlltrustApiServiceImpl implements InsAlltrustApiService {
         return iplog;
     }
 
+    /**
+     *  日志返回处理
+     *
+     * @author: lig
+     * @date: 2023年09月02日 0002
+     */
+    private <T> String httpPostResultLog(ObjectMapper mapper, T requestData, String apiName) {
+
+        String xmlString = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tns=\"http://newWS.front.app.echannel.ebiz.alltrust.com/\">";
+        xmlString += "<soapenv:Body>";
+        try {
+            mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+            xmlString += mapper.writeValueAsString(requestData);
+
+            xmlString += "</soapenv:Body>\n" +
+                    "</soapenv:Envelope>";
+
+        } catch (JsonProcessingException e) {
+            throw new RuntimeException("永诚API方式-xml转换失败");
+        }
+//        InsApiLog iplog = HttpXmlUtil.sendXmlPost(apiComponents.getUrl() + apiName, xmlString);
+        return HttpXmlUtil.sendXmlPostReq(apiComponents.getUrl() + apiName, xmlString,null);
+
+    }
+//    /**
+//     *  日志返回处理
+//     *
+//     * @author: lig
+//     * @date: 2023年09月02日 0002
+//     */
+//    private <T> InsApiLog httpPostResultLog(ObjectMapper mapper, T requestData, String apiName) {
+//
+//        String xmlString = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tns=\"http://newWS.front.app.echannel.ebiz.alltrust.com/\">";
+//        xmlString += "<soapenv:Body>";
+//        try {
+//            mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+//            xmlString += mapper.writeValueAsString(requestData);
+//
+//            xmlString += "</soapenv:Body>\n" +
+//                    "</soapenv:Envelope>";
+//
+//        } catch (JsonProcessingException e) {
+//            throw new RuntimeException("永诚API方式-xml转换失败");
+//        }
+//        InsApiLog iplog = HttpXmlUtil.sendXmlPost(apiComponents.getUrl() + apiName, xmlString);
+//
+//        return iplog;
+//    }
+
 
     /**
      * @description: 拷贝永安方法,可以封装

+ 69 - 0
src/main/java/com/ydtech/utils/HttpXmlUtil.java

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.*;
 import com.fasterxml.jackson.dataformat.xml.XmlMapper;
+import com.ydtech.exception.SystemException;
 import com.ydtech.modules.ins.model.InsApiLog;
 import com.ydtech.modules.ins.model.yc.YcBuildData;
 import com.ydtech.modules.ins.model.yc.ruote.response.RuoteResponse;
@@ -12,6 +13,7 @@ import okhttp3.*;
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.httpclient.HttpStatus;
 import org.apache.commons.httpclient.methods.PostMethod;
+import org.slf4j.Logger;
 
 import java.io.BufferedReader;
 import java.io.IOException;
@@ -153,6 +155,73 @@ public class HttpXmlUtil {
 //        System.out.println("返回参数==" + responseString);
         lon.setResponseData(responseString);
         return lon;
+    }
+
+    /**
+     * 发送xml请求到server端
+     *
+     * @param url       xml请求数据地址
+     * @param xmlString 发送的xml数据流
+     * @return map   key:requestData  key:responseData
+     */
+    public static String sendXmlPostReq(String url, String xmlString, Logger log) {
+
+        System.out.println("请求参数=" + xmlString);
+        if(null != log) log.debug("XML请求url:{},请求参数:{}", url, xmlString);
+
+        Response response;
+        String responseString = null;
+        try {
+
+            OkHttpClient client = new OkHttpClient.Builder()
+                    .connectTimeout(60, TimeUnit.SECONDS)
+                    .writeTimeout(60, TimeUnit.SECONDS)
+                    .readTimeout(60, TimeUnit.SECONDS)
+                    .build();
+
+            MediaType mediaType = MediaType.parse("text/xml");
+            RequestBody body = RequestBody.create(mediaType, xmlString);
+            Request request = new Request.Builder()
+                    .url(url)
+                    .post(body)
+                    .addHeader("Content-Type", "text/xml")
+                    .addHeader("cache-control", "no-cache")
+                    .build();
+
+            response = client.newCall(request).execute();
+            if (response.isSuccessful()) {
+                responseString = response.body().string();
+            }
+
+            String[] patterns = new String[]{
+                    // This will remove empty elements that look like <ElementName/>
+                    "\\s*<\\w+/>",
+                    // This will remove empty elements that look like <ElementName></ElementName>
+                    "\\s*<\\w+></\\w+>",
+                    // This will remove empty elements that look like
+                    // <ElementName>
+                    // </ElementName>
+                    "\\s*<\\w+>\n*\\s*</\\w+>"
+            };
+            for (String pattern : patterns) {
+                Matcher matcher = Pattern.compile(pattern).matcher(responseString);
+                responseString = matcher.replaceAll("");
+            }
+
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new SystemException("远程接口请求失败,请联系管理员。");
+        } finally {
+            System.out.println("返回参数=" + responseString);
+            if(null != log) log.debug("XML返回url:{},响应参数:{}", url, responseString);
+        }
+
+        return responseString;
+
+
+
+
     }
 
     public static String sendPost2(String url, String xmlString) {