Prechádzať zdrojové kódy

fix: 消费服务
1.请求消费对卡片是否可以消费的验证中去掉了超时检查
2.在上传消费记录的验证中去掉了超时检查
3.上传消费记录增加了重试机制

luoyb 11 mesiacov pred
rodič
commit
4e4619913d

+ 10 - 1
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/business/ConsumeBusiness.java

@@ -183,7 +183,16 @@ public class ConsumeBusiness {
      */
     @Async
     public void postOrderAsync(ConsumptionBo bo, String mac, String xfPwd) {
-        R<ErrorInfo> result = SpringUtils.getAopProxy(this).postOrder(bo, mac, xfPwd);
+        R<ErrorInfo> result=null;
+        for (int i = 0; i < 3; i++) {
+            result = SpringUtils.getAopProxy(this).postOrder(bo, mac, xfPwd);
+            if (R.isSuccess(result)) {
+                break;
+            }
+        }
+        if (R.isError(result)) {
+            log.info("[上传交易异步处理尝试3次失败,需要手工处理]-[{}]", JSONUtil.toJsonStr(bo));
+        }
         log.info("[上传交易异步处理完成]");
     }
 

+ 4 - 4
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/check/CardConsumeValidation.java

@@ -106,10 +106,10 @@ public class CardConsumeValidation {
 
         try {
             // 等待所有任务完成或超时
-            if (!latch.await(VALIDATION_TIMEOUT, TimeUnit.MILLISECONDS)) {
-                return commonCheck.createError(TradeStatusEnum.VALIDATION_TIMEOUT);
-            }
-
+            //if (!latch.await(VALIDATION_TIMEOUT, TimeUnit.MILLISECONDS)) {
+            //    return commonCheck.createError(TradeStatusEnum.VALIDATION_TIMEOUT);
+            //}
+            latch.await();
             // 返回第一个发现的错误,如果没有错误则返回成功
             // return firstError.get() != null ? firstError.get() : R.ok();
             if(firstError.get() != null){

+ 1 - 1
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/check/CommonCheck.java

@@ -131,7 +131,7 @@ public class CommonCheck {
                         futures.forEach(f -> f.cancel(true));
                     }
                 } finally {
-                    log.info("{}完成,耗时:{} ms", getTaskName(taskIndex), System.currentTimeMillis() - starTime);
+                    log.info("{}结束,耗时:{} ms", getTaskName(taskIndex), System.currentTimeMillis() - starTime);
                     taskIndex++;
                 }
             }

+ 4 - 3
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/check/ConsumeRequestCheck.java

@@ -302,9 +302,10 @@ public class ConsumeRequestCheck {
 
         try {
             // 等待所有任务完成或超时
-            if (!latch.await(300, TimeUnit.MILLISECONDS)) {
-                return commonCheck.createError(TradeStatusEnum.VALIDATION_TIMEOUT);
-            }
+            //if (!latch.await(300, TimeUnit.MILLISECONDS)) {
+            //    return commonCheck.createError(TradeStatusEnum.VALIDATION_TIMEOUT);
+            //}
+            latch.await();
 
             // 返回第一个发现的错误,如果没有错误则返回成功
             return firstError.get() != null ? firstError.get() : R.ok();