wcc преди 9 месеца
родител
ревизия
e6c4bb80f2
променени са 1 файла, в които са добавени 31 реда и са изтрити 19 реда
  1. 31 19
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/rpc/impl/TtAppBackRpcImpl.java

+ 31 - 19
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/rpc/impl/TtAppBackRpcImpl.java

@@ -234,30 +234,15 @@ public class TtAppBackRpcImpl implements ITtAppBackRpc {
     public ResultVO<OrderBackQueryRpcVO> orderBackQuery(TtAppOrderBackQueryRpcDTO dto) {
         log.error("头条APP订单回传结果查询:{}", JsonUtil.toString(dto));
 
-        String lockKey = com.zanxiang.game.back.base.ServerInfo.SERVER_NAME + ":TtAppOrderBack:" + dto.getGameId() + ":" + dto.getOrderId();
-        int maxCount = 0;
-        while (true) {
-            if (redisTemplate.opsForValue().get(lockKey) == null) {
-                break;
-            }
-            if (maxCount++ >= 120 / 10) {
-                break;
-            }
+        GameOceanengineAppOrderLog orderLog = queryOrder(dto);
+        if (orderLog == null) {
             try {
-                Thread.sleep(10 * 1000L);
+                Thread.sleep(5 *  1000L);
             } catch (Exception e) {
                 log.error(e.getMessage(), e);
             }
+            orderLog = queryOrder(dto);
         }
-        // 加锁最大等待 120s
-        // distributedLockComponent.doLock(lockKey, 60, 1L, TimeUnit.SECONDS);
-
-        GameOceanengineAppOrderLog orderLog = gameOceanengineAppOrderLogService.getOne(new LambdaQueryWrapper<GameOceanengineAppOrderLog>()
-                .eq(GameOceanengineAppOrderLog::getOrderNo, dto.getOrderId())
-                .eq(GameOceanengineAppOrderLog::getGameId, dto.getGameId())
-                .eq(GameOceanengineAppOrderLog::getAgentKey, dto.getAgentKey())
-                .eq(GameOceanengineAppOrderLog::getUserId, dto.getUserId())
-        );
         if  (orderLog == null) {
             return ResultVO.ok(OrderBackQueryRpcVO.builder()
                             .doBack(Boolean.FALSE)
@@ -286,4 +271,31 @@ public class TtAppBackRpcImpl implements ITtAppBackRpc {
         GameOceanengineAppCallback callback = gameOceanengineAppCallbackService.getUserCallback(dto.getGameId(), dto.getImei(), dto.getOaid(), dto.getAndroidId(), dto.getIdfa(), dto.getCaid());
         return ResultVO.ok(callback == null ? null : callback.getAgentKey());
     }
+
+    private GameOceanengineAppOrderLog queryOrder(TtAppOrderBackQueryRpcDTO dto) {
+        String lockKey = com.zanxiang.game.back.base.ServerInfo.SERVER_NAME + ":TtAppOrderBack:" + dto.getGameId() + ":" + dto.getOrderId();
+        int maxCount = 0;
+        while (true) {
+            if (redisTemplate.opsForValue().get(lockKey) == null) {
+                break;
+            }
+            if (maxCount++ >= 120 / 10) {
+                break;
+            }
+            try {
+                Thread.sleep(10 * 1000L);
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+            }
+        }
+        // 加锁最大等待 120s
+        // distributedLockComponent.doLock(lockKey, 60, 1L, TimeUnit.SECONDS);
+
+        return gameOceanengineAppOrderLogService.getOne(new LambdaQueryWrapper<GameOceanengineAppOrderLog>()
+                .eq(GameOceanengineAppOrderLog::getOrderNo, dto.getOrderId())
+                .eq(GameOceanengineAppOrderLog::getGameId, dto.getGameId())
+                .eq(GameOceanengineAppOrderLog::getAgentKey, dto.getAgentKey())
+                .eq(GameOceanengineAppOrderLog::getUserId, dto.getUserId())
+        );
+    }
 }