Browse Source

回传 策略 加日志

wcc 1 year ago
parent
commit
ee7460cb40

+ 2 - 4
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineOrderLogServiceImpl.java

@@ -62,7 +62,7 @@ public class GameOceanengineOrderLogServiceImpl extends ServiceImpl<GameOceaneng
                 doBack = true;
             } else {
                 GameBackPolicy gameBackPolicy = gameBackPolicyService.getById(orderLog.getBackPolicyId());
-                doBack = BackPolicyUtil.backOrder(gameBackPolicy, orderLog.getAmount(),
+                doBack = BackPolicyUtil.backOrder(orderLog.getOrderNo(), gameBackPolicy, orderLog.getAmount(),
                         () -> {
                             return count(new LambdaQueryWrapper<GameOceanengineOrderLog>()
                                     .eq(GameOceanengineOrderLog::getGameId, orderLog.getGameId())
@@ -115,9 +115,7 @@ public class GameOceanengineOrderLogServiceImpl extends ServiceImpl<GameOceaneng
 
     @Override
     public boolean oceanengineOrderReport(List<Long> ids) {
-        listByIds(ids).stream()
-                .filter(item -> !item.getBackStatus().equals(BackStatusEnum.SUCCESS.getBackStatus()))
-                .forEach(orderLog -> callback(orderLog, true));
+        listByIds(ids).forEach(orderLog -> callback(orderLog, true));
         return true;
     }
 

+ 1 - 3
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineUserLogServiceImpl.java

@@ -64,9 +64,7 @@ public class GameOceanengineUserLogServiceImpl extends ServiceImpl<GameOceanengi
 
     @Override
     public boolean oceanengineUserReport(List<Long> ids) {
-        baseMapper.selectBatchIds(ids).stream()
-                .filter(item -> !item.getBackStatus().equals(BackStatusEnum.SUCCESS.getBackStatus()))
-                .forEach(oceanengineUserLog -> callback(oceanengineUserLog, true));
+        listByIds(ids).forEach(userLog -> callback(userLog, true));
         return true;
     }
 

+ 8 - 4
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameOrderServiceImpl.java

@@ -62,7 +62,7 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
             doBack = true;
         } else {
             GameBackPolicy gameBackPolicy = gameBackPolicyService.getById(orderLog.getBackPolicyId());
-            doBack = BackPolicyUtil.backOrder(gameBackPolicy, orderLog.getRechargeMoney(),
+            doBack = BackPolicyUtil.backOrder(orderLog.getOrderId(), gameBackPolicy, orderLog.getRechargeMoney(),
                     () -> count(new LambdaQueryWrapper<GameTencentMiniGameOrder>()
                             .eq(GameTencentMiniGameOrder::getGameId, orderLog.getGameId())
                             .eq(GameTencentMiniGameOrder::getWechatAppId, orderLog.getWechatAppId())
@@ -109,9 +109,13 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
 
     @Override
     public boolean doReport(List<Long> orderLogIds) {
-        listByIds(orderLogIds).stream()
-                .filter(item -> !item.getBackStatus().equals(BackStatusEnum.SUCCESS.getBackStatus()))
-                .forEach(orderLog -> gameTencentMiniGameBackLogService.orderBack(orderLog));
+        listByIds(orderLogIds).forEach(orderLog -> {
+                    BackStatusEnum backStatus = gameTencentMiniGameBackLogService.orderBack(orderLog);
+                    update(new LambdaUpdateWrapper<GameTencentMiniGameOrder>()
+                            .set(GameTencentMiniGameOrder::getBackStatus, backStatus.getBackStatus())
+                            .eq(GameTencentMiniGameOrder::getId, orderLog.getId())
+                    );
+                });
         return true;
     }
 

+ 7 - 1
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameUserServiceImpl.java

@@ -64,7 +64,13 @@ public class GameTencentMiniGameUserServiceImpl extends ServiceImpl<GameTencentM
 
     @Override
     public boolean doReport(List<Long> userLogIds) {
-        listByIds(userLogIds).forEach(userLog -> doCallback(userLog, true));
+        listByIds(userLogIds).forEach(userLog -> {
+            BackStatusEnum backStatus = doCallback(userLog, true);
+            update(new LambdaUpdateWrapper<GameTencentMiniGameUser>()
+                    .set(GameTencentMiniGameUser::getBackStatus, backStatus.getBackStatus())
+                    .eq(GameTencentMiniGameUser::getId, userLog.getId())
+            );
+        });
         return true;
     }
 

+ 8 - 4
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentOrderServiceImpl.java

@@ -75,7 +75,7 @@ public class GameTencentOrderServiceImpl extends ServiceImpl<GameTencentOrderMap
             doBack = true;
         } else {
             GameBackPolicy gameBackPolicy = gameBackPolicyService.getById(orderLog.getBackPolicyId());
-            doBack = BackPolicyUtil.backOrder(gameBackPolicy, orderLog.getRechargeMoney(),
+            doBack = BackPolicyUtil.backOrder(orderLog.getOrderId(), gameBackPolicy, orderLog.getRechargeMoney(),
                     () -> count(new LambdaQueryWrapper<GameTencentOrder>()
                             .eq(GameTencentOrder::getGameId, orderLog.getGameId())
                             .eq(GameTencentOrder::getWechatAppId, orderLog.getWechatAppId())
@@ -126,9 +126,13 @@ public class GameTencentOrderServiceImpl extends ServiceImpl<GameTencentOrderMap
 
     @Override
     public boolean tencentOrderReport(List<Long> ids) {
-        listByIds(ids).stream()
-                .filter(item -> !item.getIsBack().equals(BackStatusEnum.SUCCESS.getBackStatus()))
-                .forEach(this::doCallback);
+        listByIds(ids).forEach(orderLog -> {
+            BackStatusEnum backStatus = doCallback(orderLog);
+            update(new LambdaUpdateWrapper<GameTencentOrder>()
+                    .set(GameTencentOrder::getIsBack, backStatus.getBackStatus())
+                    .eq(GameTencentOrder::getId, orderLog.getId())
+            );
+        });
         return true;
     }
 

+ 7 - 3
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentUserServiceImpl.java

@@ -82,9 +82,13 @@ public class GameTencentUserServiceImpl extends ServiceImpl<GameTencentUserMappe
 
     @Override
     public boolean tencentUserReport(List<Long> ids) {
-        listByIds(ids).stream()
-                .filter(item -> !item.getIsBack().equals(BackStatusEnum.SUCCESS.getBackStatus()))
-                .forEach(gameTencentUser -> doCallback(gameTencentUser, true));
+        listByIds(ids).forEach(userLog -> {
+            BackStatusEnum backStatus = doCallback(userLog, true);
+            update(new LambdaUpdateWrapper<GameTencentUser>()
+                    .set(GameTencentUser::getIsBack, backStatus.getBackStatus())
+                    .eq(GameTencentUser::getId, userLog.getId())
+            );
+        });
         return true;
     }
 

+ 10 - 2
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/utils/BackPolicyUtil.java

@@ -4,6 +4,7 @@ import com.github.sd4324530.jtuple.Tuple2;
 import com.github.sd4324530.jtuple.Tuples;
 import com.zanxiang.game.back.serve.pojo.entity.GameBackPolicy;
 import com.zanxiang.module.util.NumberUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.RandomUtils;
 
 import java.math.BigDecimal;
@@ -11,6 +12,7 @@ import java.util.Arrays;
 import java.util.Objects;
 import java.util.function.Function;
 
+@Slf4j
 public class BackPolicyUtil {
     private static final long[] RECHARGE_LEVEL = {12 * 100L, 30 * 100L, 50 * 100L, 98 * 100L, 198 * 100L, 328 * 100L, 649 * 100L, 998 * 100L, 2998 * 100L};
 
@@ -26,8 +28,9 @@ public class BackPolicyUtil {
      * @param lastBackFunction 在指定最近订单数量内是否有订单回传过
      * @return <是否回传, 回传金额>
      */
-    public static boolean backOrder(GameBackPolicy gameBackPolicy, long rechargeMoney, FirstOrder firstOrder, Function<Integer, Integer> lastBackFunction) {
+    public static boolean backOrder(String orderId, GameBackPolicy gameBackPolicy, long rechargeMoney, FirstOrder firstOrder, Function<Integer, Integer> lastBackFunction) {
         if (null == gameBackPolicy) {
+            log.error("订单 id[{}]通过回传策略[null]判断后,是否回传:{}.", orderId, true);
             return true;
         }
         Integer firstType;
@@ -76,16 +79,21 @@ public class BackPolicyUtil {
             int backCount = Integer.parseInt(temp[0]);
             int ignoreCount = Integer.parseInt(temp[1]);
             if (backCount == 0) {
+                log.error("订单 id[{}]通过回传策略[{}]判断后,是否回传:{}.", orderId, gameBackPolicy.getId(), false);
                 return false;
             }
             if (ignoreCount == 0) {
+                log.error("订单 id[{}]通过回传策略[{}]判断后,是否回传:{}.", orderId, gameBackPolicy.getId(), true);
                 return true;
             }
             int isBackCount = lastBackFunction.apply(backCount + ignoreCount - 1);
+            log.error("订单 id[{}]通过回传策略[{}]判断后,是否回传:{}.", orderId, gameBackPolicy.getId(), (isBackCount < backCount));
             return isBackCount < backCount;
         } else if (Objects.equals(backType, GameBackPolicy.POLICY_TYPE_RANDOM_RATE)) {
             // 随机概率回传
-            return RandomUtils.nextInt(0, 100) <= NumberUtil.multiply100(new BigDecimal(backRate)).intValue();
+            boolean isBack = RandomUtils.nextInt(0, 100) <= NumberUtil.multiply100(new BigDecimal(backRate)).intValue();
+            log.error("订单 id[{}]通过回传策略[{}]判断后,是否回传:{}.", orderId, gameBackPolicy.getId(), isBack);
+            return isBack;
         } else {
             throw new RuntimeException("回传策略[" + gameBackPolicy.getId() + "]配置错误,未知的回传类型:" + backType);
         }