|
@@ -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;
|