Explorar el Código

优化查询订单状态的日志

lighter hace 3 años
padre
commit
87134e59be

+ 1 - 1
pom.xml

@@ -10,7 +10,7 @@
     </parent>
     <groupId>thyyxxk</groupId>
     <artifactId>wxservice-server</artifactId>
-    <version>6.7</version>
+    <version>6.8</version>
     <name>wxservice-server</name>
     <description>server for wxservice-web</description>
 

+ 22 - 0
src/main/java/thyyxxk/wxservice_server/constant/QuerySource.java

@@ -0,0 +1,22 @@
+package thyyxxk.wxservice_server.constant;
+
+/**
+ * 查询订单状态发起者
+ * */
+public enum QuerySource {
+
+    /**
+     * wxApi接口
+     * */
+    INTERFACE,
+
+    /**
+     * 二维码付款
+     * */
+    QRCODE,
+
+    /**
+     * 定时任务
+     * */
+    SCHEDULE;
+}

+ 2 - 1
src/main/java/thyyxxk/wxservice_server/controller/WxApiController.java

@@ -3,6 +3,7 @@ package thyyxxk.wxservice_server.controller;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import thyyxxk.wxservice_server.constant.QuerySource;
 import thyyxxk.wxservice_server.entity.ResultVo;
 import thyyxxk.wxservice_server.entity.appointment.DoctorInfo;
 import thyyxxk.wxservice_server.entity.appointment.WeChatPayParam;
@@ -55,7 +56,7 @@ public class WxApiController {
 
     @GetMapping("/queryOrderState")
     public ResultVo<String> queryOrderState(@RequestParam("tradeNo") String tradeNo) throws Exception {
-        return service.queryOrderState(tradeNo);
+        return service.queryOrderState(tradeNo, QuerySource.INTERFACE);
     }
 
     @PostMapping("/genMzPayQrcode")

+ 2 - 2
src/main/java/thyyxxk/wxservice_server/scheduled/QueryOrderStateTask.java

@@ -8,6 +8,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import thyyxxk.wxservice_server.constant.Constants;
+import thyyxxk.wxservice_server.constant.QuerySource;
 import thyyxxk.wxservice_server.dao.WxApiDao;
 import thyyxxk.wxservice_server.entity.ResultVo;
 import thyyxxk.wxservice_server.entity.wxapi.WxPayOrder;
@@ -57,8 +58,7 @@ public class QueryOrderStateTask {
         }
         for (WxPayOrder order : list) {
             if (!TradeVectorUtil.tradeNoBetweenQuery(order.getTradeNo())) {
-                log.info("定时任务查询订单状态:{}", order.getTradeNo());
-                service.queryOrderState(order.getTradeNo());
+                service.queryOrderState(order.getTradeNo(), QuerySource.SCHEDULE);
             }
         }
     }

+ 4 - 2
src/main/java/thyyxxk/wxservice_server/service/SpringRetryService.java

@@ -10,6 +10,8 @@ import org.springframework.retry.annotation.Backoff;
 import org.springframework.retry.annotation.Recover;
 import org.springframework.retry.annotation.Retryable;
 import org.springframework.stereotype.Service;
+import thyyxxk.wxservice_server.constant.OrderType;
+import thyyxxk.wxservice_server.constant.QuerySource;
 import thyyxxk.wxservice_server.utils.PropertiesUtil;
 import thyyxxk.wxservice_server.utils.WxHttpUtil;
 
@@ -22,7 +24,7 @@ import java.io.IOException;
 @Service
 public class SpringRetryService {
     @Retryable(value = Exception.class, maxAttempts = 5, backoff = @Backoff(delay = 1000, multiplier = 1.5))
-    public JSONObject queryOrderStateFromTencent(String tradeNo) throws IOException {
+    public JSONObject queryOrderStateFromTencent(String tradeNo, OrderType orderType, QuerySource source) throws IOException {
         String url = "https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/" +
                 tradeNo + "?mchid=" + PropertiesUtil.getProperty("mchId");
         HttpGet httpGet = new HttpGet(url);
@@ -32,7 +34,7 @@ public class SpringRetryService {
         String ret = EntityUtils.toString(response.getEntity());
         httpClient.close();
         JSONObject obj = JSONObject.parseObject(ret);
-        log.info("查询订单状态结果: {}", obj);
+        log.info("【{}】【{}】查询订单状态结果: {}", source, orderType.getLabel(), obj);
         if (null == obj || null == obj.getString("trade_state")) {
             throw new NullPointerException("spring-retry任务:服务异常,未查询到内容。");
         }

+ 6 - 4
src/main/java/thyyxxk/wxservice_server/service/WxApiService.java

@@ -18,6 +18,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
 import thyyxxk.wxservice_server.config.exception.ExceptionEnum;
 import thyyxxk.wxservice_server.constant.OrderType;
+import thyyxxk.wxservice_server.constant.QuerySource;
 import thyyxxk.wxservice_server.dao.WxApiDao;
 import thyyxxk.wxservice_server.entity.ResultVo;
 import thyyxxk.wxservice_server.entity.appointment.DoctorInfo;
@@ -182,20 +183,21 @@ public class WxApiService {
         }
     }
 
-    public ResultVo<String> queryOrderState(String tradeNo) throws Exception {
+    public ResultVo<String> queryOrderState(String tradeNo, QuerySource source) throws Exception {
         while (TradeVectorUtil.tradeNoBetweenQuery(tradeNo)) {
             TimeUnit.SECONDS.sleep(1);
         }
         TradeVectorUtil.add(tradeNo);
-        JSONObject obj = retryService.queryOrderStateFromTencent(tradeNo);
+        WxPayOrder order = dao.selectOrderByTradeNo(tradeNo);
+        OrderType orderType = OrderType.get(order.getOrderType());
+        JSONObject obj = retryService.queryOrderStateFromTencent(tradeNo, orderType, source);
         String tradeState = obj.getString("trade_state");
         if ("SUCCESS".equals(tradeState)) {
             String successTime = obj.getString("success_time")
                     .split("\\+")[0].replace("T", " ");
             dao.updatePayStatusAndPayTime(tradeNo, 1, successTime);
-            WxPayOrder order = dao.selectOrderByTradeNo(tradeNo);
             ResultVo<String> saveRet;
-            switch (OrderType.get(order.getOrderType())) {
+            switch (orderType) {
                 case REGISTRATION:
                     saveRet = savePayResultService.saveAppointment(order);
                     break;

+ 2 - 1
src/main/java/thyyxxk/wxservice_server/service/WxPayNotifyService.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import thyyxxk.wxservice_server.constant.QuerySource;
 import thyyxxk.wxservice_server.dao.WxApiDao;
 import thyyxxk.wxservice_server.entity.wxapi.PaymentNotify;
 import thyyxxk.wxservice_server.utils.WxPaySignUtil;
@@ -40,7 +41,7 @@ public class WxPayNotifyService {
         String openId = payer.getString("openid");
         dao.updatePayOpenId(tradeNo, openId);
         log.info("二维码支付查询订单状态:{}", tradeNo);
-        wxApiService.queryOrderState(tradeNo);
+        wxApiService.queryOrderState(tradeNo, QuerySource.QRCODE);
     }
 
     public void paymentNotify2(PaymentNotify param) throws GeneralSecurityException {