Bladeren bron

fix : 腾讯小游戏回传解决计数类型的问题

bilingfeng 4 maanden geleden
bovenliggende
commit
7fdc0dffb0

+ 1 - 1
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/GameBackApplication.java

@@ -18,7 +18,7 @@ public class GameBackApplication {
 
     public static void main(String[] args) {
         SpringApplication.run(GameBackApplication.class, args);
-        System.out.println("腾讯小游戏上报新增类型 (腾讯小游戏回传新增回传类型´・・)ノ(._.`)  \n" +
+        System.out.println("腾讯小游戏上报新增类型 (腾讯小游戏回传方式计数问题修正´・・)ノ(._.`)  \n" +
                 " ______  __     __     \n" +
                 "/_____/\\/__/\\ /__/\\    \n" +
                 "\\:::__\\/\\ \\::\\\\:.\\ \\   \n" +

+ 19 - 5
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameOrderServiceImpl.java

@@ -112,7 +112,7 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
                 // 此处使用用户最近一次的重新染色时间
                 userLog.getCreateTime(),
                 orderLog.getWechatOpenid(),
-                new TencentMiniGameOrderBackPolicyCheck(this, gameBackPolicy, userLog, orderLog));
+                new TencentMiniGameOrderBackPolicyCheck(this, gameBackPolicy, userLog, orderLog, BackTypeEnum.BACK_API));
         boolean doBack = backInfo.first;
         Long backMoney = backInfo.second;
         String backMsg = backInfo.third;
@@ -189,7 +189,7 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
                 // 此处使用用户最近一次的重新染色时间
                 userLog.getCreateTime(),
                 orderLog.getWechatOpenid(),
-                new TencentMiniGameOrderBackPolicyCheck(this, gameBackPolicy, userLog, orderLog));
+                new TencentMiniGameOrderBackPolicyCheck(this, gameBackPolicy, userLog, orderLog, BackTypeEnum.BACK_MEDIA_SDK));
         boolean doBack = backInfo.first;
         Long backMoney = backInfo.second;
         String backMsg = backInfo.third;
@@ -412,15 +412,16 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
         private final GameBackPolicy gameBackPolicy;
         private final GameTencentMiniGameUser userLog;
         private final GameTencentMiniGameOrder orderLog;
+        private final BackTypeEnum backTypeEnum;
 
         public TencentMiniGameOrderBackPolicyCheck(IGameTencentMiniGameOrderService gameTencentMiniGameOrderService,
-                                                   GameBackPolicy gameBackPolicy,
-                                                   GameTencentMiniGameUser userLog,
-                                                   GameTencentMiniGameOrder orderLog) {
+                                                   GameBackPolicy gameBackPolicy, GameTencentMiniGameUser userLog,
+                                                   GameTencentMiniGameOrder orderLog, BackTypeEnum backTypeEnum) {
             this.gameTencentMiniGameOrderService = gameTencentMiniGameOrderService;
             this.gameBackPolicy = gameBackPolicy;
             this.orderLog = orderLog;
             this.userLog = userLog;
+            this.backTypeEnum = backTypeEnum;
         }
 
         @Override
@@ -435,6 +436,7 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
                         .eq(GameTencentMiniGameOrder::getOrderStatus, OrderStatusEnum.SUCCESS_PAY.getValue())
                         .eq(GameTencentMiniGameOrder::getIsFirstOrder, firstPolicy)
                         .ne(GameTencentMiniGameOrder::getOrderId, orderLog.getOrderId())
+                        .eq(GameTencentMiniGameOrder::getBackType, backTypeEnum.getBackType())
                         .orderByDesc(GameTencentMiniGameOrder::getCreateTime)
                         .last("limit " + numberOfRound)
                 ).stream().filter(log -> log.getBackStatus().equals(BackStatusEnum.SUCCESS.getBackStatus())).count();
@@ -448,6 +450,7 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
                         .apply(firstPolicy, "date(recharge_time) = date(pay_time)")
                         .apply(!firstPolicy, "date(recharge_time) != date(pay_time)")
                         .ne(GameTencentMiniGameOrder::getOrderId, orderLog.getOrderId())
+                        .eq(GameTencentMiniGameOrder::getBackType, backTypeEnum.getBackType())
                         .orderByDesc(GameTencentMiniGameOrder::getCreateTime)
                         .last("limit " + numberOfRound)
                 ).stream().filter(log -> log.getBackStatus().equals(BackStatusEnum.SUCCESS.getBackStatus())).count();
@@ -461,6 +464,7 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
                         .apply(firstPolicy, "TIMESTAMPDIFF(HOUR, recharge_time, pay_time) < 24")
                         .apply(!firstPolicy, "TIMESTAMPDIFF(HOUR, recharge_time, pay_time) >= 24")
                         .ne(GameTencentMiniGameOrder::getOrderId, orderLog.getOrderId())
+                        .eq(GameTencentMiniGameOrder::getBackType, backTypeEnum.getBackType())
                         .orderByDesc(GameTencentMiniGameOrder::getCreateTime)
                         .last("limit " + numberOfRound)
                 ).stream().filter(log -> log.getBackStatus().equals(BackStatusEnum.SUCCESS.getBackStatus())).count();
@@ -474,6 +478,7 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
                         .apply(firstPolicy, "TIMESTAMPDIFF(HOUR, recharge_time, pay_time) < 48")
                         .apply(!firstPolicy, "TIMESTAMPDIFF(HOUR, recharge_time, pay_time) >= 48")
                         .ne(GameTencentMiniGameOrder::getOrderId, orderLog.getOrderId())
+                        .eq(GameTencentMiniGameOrder::getBackType, backTypeEnum.getBackType())
                         .orderByDesc(GameTencentMiniGameOrder::getCreateTime)
                         .last("limit " + numberOfRound)
                 ).stream().filter(log -> log.getBackStatus().equals(BackStatusEnum.SUCCESS.getBackStatus())).count();
@@ -485,6 +490,7 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
                         .eq(GameTencentMiniGameOrder::getBackPolicyId, gameBackPolicy.getId())
                         .eq(GameTencentMiniGameOrder::getOrderStatus, OrderStatusEnum.SUCCESS_PAY.getValue())
                         .ne(GameTencentMiniGameOrder::getOrderId, orderLog.getOrderId())
+                        .eq(GameTencentMiniGameOrder::getBackType, backTypeEnum.getBackType())
                         .orderByDesc(GameTencentMiniGameOrder::getCreateTime)
                         .last("limit " + numberOfRound)
                 ).stream().filter(log -> log.getBackStatus().equals(BackStatusEnum.SUCCESS.getBackStatus())).count();
@@ -510,6 +516,7 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
                         .eq(GameTencentMiniGameOrder::getWechatOpenid, userId)
                         .eq(GameTencentMiniGameOrder::getIsFirstOrder, firstPolicy)
                         .ne(GameTencentMiniGameOrder::getOrderId, orderLog.getOrderId())
+                        .eq(GameTencentMiniGameOrder::getBackType, backTypeEnum.getBackType())
                 );
             } else if (backUnit == BackUnitEnum.UNIT_DAY) {
                 return gameTencentMiniGameOrderService.count(new LambdaQueryWrapper<GameTencentMiniGameOrder>()
@@ -523,6 +530,7 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
                         .apply(firstPolicy, "date(recharge_time) = date(pay_time)")
                         .apply(!firstPolicy, "date(recharge_time) != date(pay_time)")
                         .ne(GameTencentMiniGameOrder::getOrderId, orderLog.getOrderId())
+                        .eq(GameTencentMiniGameOrder::getBackType, backTypeEnum.getBackType())
                 );
             } else if (backUnit == BackUnitEnum.UNIT_TIME_DAY) {
                 return gameTencentMiniGameOrderService.count(new LambdaQueryWrapper<GameTencentMiniGameOrder>()
@@ -536,6 +544,7 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
                         .apply(firstPolicy, "TIMESTAMPDIFF(HOUR, recharge_time, pay_time) < 24")
                         .apply(!firstPolicy, "TIMESTAMPDIFF(HOUR, recharge_time, pay_time) >= 24")
                         .ne(GameTencentMiniGameOrder::getOrderId, orderLog.getOrderId())
+                        .eq(GameTencentMiniGameOrder::getBackType, backTypeEnum.getBackType())
                 );
             } else if (backUnit == BackUnitEnum.UNIT_TIME_2DAY) {
                 return gameTencentMiniGameOrderService.count(new LambdaQueryWrapper<GameTencentMiniGameOrder>()
@@ -549,6 +558,7 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
                         .apply(firstPolicy, "TIMESTAMPDIFF(HOUR, recharge_time, pay_time) < 48")
                         .apply(!firstPolicy, "TIMESTAMPDIFF(HOUR, recharge_time, pay_time) >= 48")
                         .ne(GameTencentMiniGameOrder::getOrderId, orderLog.getOrderId())
+                        .eq(GameTencentMiniGameOrder::getBackType, backTypeEnum.getBackType())
                 );
             } else if (backUnit == BackUnitEnum.LARGE_AMOUNT) {
                 return gameTencentMiniGameOrderService.count(new LambdaQueryWrapper<GameTencentMiniGameOrder>()
@@ -560,6 +570,7 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
                         .eq(GameTencentMiniGameOrder::getBackStatus, BackStatusEnum.SUCCESS.getBackStatus())
                         .eq(GameTencentMiniGameOrder::getWechatOpenid, userId)
                         .ne(GameTencentMiniGameOrder::getOrderId, orderLog.getOrderId())
+                        .eq(GameTencentMiniGameOrder::getBackType, backTypeEnum.getBackType())
                 );
             } else {
                 throw new RuntimeException("不支持的回传单位[" + backUnit.getValue() + "]");
@@ -577,6 +588,7 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
                     .eq(GameTencentMiniGameOrder::getOrderStatus, OrderStatusEnum.SUCCESS_PAY.getValue())
                     .apply("TIMESTAMPDIFF(MINUTE, recharge_time, pay_time) > {0}", markUpTime)
                     .ne(GameTencentMiniGameOrder::getOrderId, orderLog.getOrderId())
+                    .eq(GameTencentMiniGameOrder::getBackType, backTypeEnum.getBackType())
                     .orderByDesc(GameTencentMiniGameOrder::getCreateTime)
                     .last("limit " + numberOfRound)
             ).stream().filter(log -> log.getBackStatus().equals(BackStatusEnum.SUCCESS.getBackStatus())).count();
@@ -594,6 +606,7 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
                     .eq(GameTencentMiniGameOrder::getWechatOpenid, userId)
                     .apply("TIMESTAMPDIFF(MINUTE, recharge_time, pay_time) > {0}", markUpTime)
                     .ne(GameTencentMiniGameOrder::getOrderId, orderLog.getOrderId())
+                    .eq(GameTencentMiniGameOrder::getBackType, backTypeEnum.getBackType())
             );
         }
 
@@ -608,6 +621,7 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
                     .eq(GameTencentMiniGameOrder::getOrderStatus, OrderStatusEnum.SUCCESS_PAY.getValue())
                     .eq(GameTencentMiniGameOrder::getWechatOpenid, orderLog.getWechatOpenid())
                     .ne(GameTencentMiniGameOrder::getOrderId, orderLog.getOrderId())
+                    .eq(GameTencentMiniGameOrder::getBackType, backTypeEnum.getBackType())
             );
             return ObjectUtil.objToLong(data.get("recharge_money"), 0L);
         }

+ 4 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/task/TencentMiniOrderSplitBackTask.java

@@ -7,6 +7,7 @@ import com.zanxiang.game.back.base.ServerInfo;
 import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameOrder;
 import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameOrderSplitLog;
 import com.zanxiang.game.back.serve.pojo.enums.BackStatusEnum;
+import com.zanxiang.game.back.serve.pojo.enums.BackTypeEnum;
 import com.zanxiang.game.back.serve.service.IGameTencentMiniGameBackLogService;
 import com.zanxiang.game.back.serve.service.IGameTencentMiniGameOrderService;
 import com.zanxiang.game.back.serve.service.IGameTencentMiniGameOrderSplitLogService;
@@ -36,11 +37,13 @@ public class TencentMiniOrderSplitBackTask {
 
     @Autowired
     private IGameTencentMiniGameOrderService gameTencentMiniGameOrderService;
+
     @Autowired
     private IGameTencentMiniGameOrderSplitLogService gameTencentMiniGameOrderSplitLogService;
 
     @Autowired
     private IDistributedLockComponent distributedLockComponent;
+
     @Autowired
     private IGameTencentMiniGameBackLogService gameTencentMiniGameBackLogService;
 
@@ -54,6 +57,7 @@ public class TencentMiniOrderSplitBackTask {
                 .in(GameTencentMiniGameOrderSplitLog::getBackDay, Arrays.asList(LocalDate.now().minusDays(1), LocalDate.now()))
                 .lt(GameTencentMiniGameOrderSplitLog::getBackTime, now.plusMinutes(1))
                 .eq(GameTencentMiniGameOrderSplitLog::getBackStatus, BackStatusEnum.NO.getBackStatus())
+                .eq(GameTencentMiniGameOrderSplitLog::getBackType, BackTypeEnum.BACK_API)
                 .orderByAsc(GameTencentMiniGameOrderSplitLog::getOrderNo)
                 .orderByAsc(GameTencentMiniGameOrderSplitLog::getBackTime)
         );