Quellcode durchsuchen

回传策略新增充值注册间隔时间

wcc vor 1 Jahr
Ursprung
Commit
42356aa988

+ 3 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/controller/BackPolicyController.java

@@ -68,5 +68,8 @@ public class BackPolicyController {
         if (dto.getRechargeMinMoney().compareTo(dto.getRechargeMaxMoney()) >= 0) {
             throw new BaseException("此单的大额金额必须大于小额金额");
         }
+        if (dto.getRegPayIntervalTime() != null && dto.getRegPayIntervalTime() <= 0) {
+            throw new BaseException("注册充值回传的最大间隔时间不能小于 1");
+        }
     }
 }

+ 3 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameBackPolicyDTO.java

@@ -154,5 +154,8 @@ public class GameBackPolicyDTO implements Serializable {
     @ApiModelProperty("降档级别")
     private Integer levelDown;
 
+    @ApiModelProperty("注册充值回传的最大间隔时间(超时不回传)")
+    private Long regPayIntervalTime;
+
 
 }

+ 2 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameBackPolicy.java

@@ -130,5 +130,7 @@ public class GameBackPolicy implements Serializable {
 
     private Long updateBy;
 
+    private Long regPayIntervalTime;
+
 
 }

+ 1 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/vo/GameBackPolicyVO.java

@@ -138,6 +138,7 @@ public class GameBackPolicyVO implements Serializable {
     private Long createBy;
 
     private String createName;
+    private Long regPayIntervalTime;
 
 
 }

+ 2 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameBackPolicyServiceImpl.java

@@ -98,6 +98,7 @@ public class GameBackPolicyServiceImpl extends ServiceImpl<GameBackPolicyMapper,
                 .levelDown(dto.getLevelDown())
                 .createBy(SecurityUtil.getUserId())
                 .createTime(LocalDateTime.now())
+                .regPayIntervalTime(dto.getRegPayIntervalTime())
                 .build();
         return gameBackPolicyService.save(backPolicy);
     }
@@ -128,6 +129,7 @@ public class GameBackPolicyServiceImpl extends ServiceImpl<GameBackPolicyMapper,
                 .rechargeOtherMoneyType(dto.getRechargeOtherMoneyType())
                 .rechargeOtherMoneyRate(dto.getRechargeOtherMoneyRate())
                 .levelDown(dto.getLevelDown())
+                .regPayIntervalTime(dto.getRegPayIntervalTime())
                 .createBy(old.getCreateBy())
                 .createTime(old.getCreateTime())
                 .updateBy(SecurityUtil.getUserId())

+ 1 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineOrderLogServiceImpl.java

@@ -73,6 +73,7 @@ public class GameOceanengineOrderLogServiceImpl extends ServiceImpl<GameOceaneng
             } else {
                 GameBackPolicy gameBackPolicy = gameBackPolicyService.getById(orderLog.getBackPolicyId());
                 doBack = BackPolicyUtil.backOrder(orderLog.getOrderNo(), gameBackPolicy, orderLog.getAmount(),
+                        orderLog.getPayTime(), orderLog.getRegTime(),
                         () -> getOne(new LambdaQueryWrapper<GameOceanengineOrderLog>()
                                 .eq(GameOceanengineOrderLog::getGameId, orderLog.getGameId())
                                 .eq(GameOceanengineOrderLog::getAppId, orderLog.getAppId())

+ 1 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameOrderServiceImpl.java

@@ -79,6 +79,7 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
             } else {
                 GameBackPolicy gameBackPolicy = gameBackPolicyService.getById(orderLog.getBackPolicyId());
                 doBack = BackPolicyUtil.backOrder(orderLog.getOrderId(), gameBackPolicy, orderLog.getRechargeMoney(),
+                        orderLog.getPayTime(), orderLog.getRegisterTime(),
                         () -> getOne(new LambdaQueryWrapper<GameTencentMiniGameOrder>()
                                 .eq(GameTencentMiniGameOrder::getGameId, orderLog.getGameId())
                                 .eq(GameTencentMiniGameOrder::getWechatAppId, orderLog.getWechatAppId())

+ 1 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentOrderServiceImpl.java

@@ -90,6 +90,7 @@ public class GameTencentOrderServiceImpl extends ServiceImpl<GameTencentOrderMap
             } else {
                 GameBackPolicy gameBackPolicy = gameBackPolicyService.getById(orderLog.getBackPolicyId());
                 doBack = BackPolicyUtil.backOrder(orderLog.getOrderId(), gameBackPolicy, orderLog.getRechargeMoney(),
+                        orderLog.getPayTime(), orderLog.getRegisterTime(),
                         () -> getOne(new LambdaQueryWrapper<GameTencentOrder>()
                                 .eq(GameTencentOrder::getGameId, orderLog.getGameId())
                                 .eq(GameTencentOrder::getAdAccountId, orderLog.getAdAccountId())

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

@@ -3,12 +3,14 @@ package com.zanxiang.game.back.serve.utils;
 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.DateUtil;
 import com.zanxiang.module.util.JsonUtil;
 import com.zanxiang.module.util.NumberUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.RandomUtils;
 
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
 import java.util.Arrays;
 import java.util.Objects;
 import java.util.function.Function;
@@ -21,37 +23,6 @@ public class BackPolicyUtil {
         Arrays.sort(RECHARGE_LEVEL);
     }
 
-    public static void main(String[] args) {
-        GameBackPolicy backPolicy = GameBackPolicy.builder()
-                .id(8L)
-                .backPolicyName("只传首充")
-                .firstMinMoney(3000L)
-                .firstMinMoneyType(0)
-                .firstMinMoneyRate("1:0")
-                .firstMaxMoney(19800L)
-                .firstMaxMoneyType(0)
-                .firstMaxMoneyRate("1:0")
-                .firstOtherMoneyType(0)
-                .firstOtherMoneyRate("1:0")
-                .rechargeMinMoney(3000L)
-                .rechargeMinMoneyType(1)
-                .rechargeMinMoneyRate("0")
-                .rechargeMaxMoney(19800L)
-                .rechargeMaxMoneyType(1)
-                .rechargeMaxMoneyRate("0")
-                .rechargeOtherMoneyType(1)
-                .rechargeOtherMoneyRate("0")
-                .levelDown(0)
-                .build();
-        String orderId = "2023072623022469103393434";
-        long money = 800;
-        System.out.println(backOrder(orderId, backPolicy, money, () -> {
-            return true;
-        }, (count) -> {
-            return 0;
-        }));
-    }
-
     /**
      * 订单回传
      *
@@ -60,12 +31,19 @@ public class BackPolicyUtil {
      * @param lastBackFunction 在指定最近订单数量内是否有订单回传过
      * @return <是否回传, 回传金额>
      */
-    public static boolean backOrder(String orderId, GameBackPolicy gameBackPolicy, long rechargeMoney, FirstOrder firstOrder, Function<Integer, Integer> lastBackFunction) {
+    public static boolean backOrder(String orderId, GameBackPolicy gameBackPolicy, long rechargeMoney, LocalDateTime payTime, LocalDateTime regTime, FirstOrder firstOrder, Function<Integer, Integer> lastBackFunction) {
         if (null == gameBackPolicy) {
             log.error("订单 id[{}]通过回传策略[null]判断后,是否回传:{}.", orderId, true);
             return true;
         }
         log.error("----orderId: {}, backPolicy: {}, money: {}", orderId, JsonUtil.toString(gameBackPolicy), rechargeMoney);
+        if (payTime != null && gameBackPolicy.getRegPayIntervalTime() != null) {
+            long regPayIntervalMinute = (DateUtil.localDateTimeToSecond(payTime) - DateUtil.localDateTimeToSecond(regTime)) / 60;
+            if (regPayIntervalMinute > gameBackPolicy.getRegPayIntervalTime()) {
+                log.error("订单 id[{}]通过回传策略[{}]判断后,超过注册充值间隔时间,不回传{}.", orderId, gameBackPolicy.getId(), gameBackPolicy.getRegPayIntervalTime());
+                return false;
+            }
+        }
         Integer firstType;
         String firstRate;
         Integer rechargeType;