Browse Source

新增回传策略

wcc 7 months ago
parent
commit
eb21a76889

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

@@ -14,6 +14,7 @@ import com.zanxiang.module.util.pojo.ResultVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -96,6 +97,26 @@ public class BackPolicyController {
         if (policyOfSplitLevel.getBackCountOfUser() != null && policyOfSplitLevel.getBackCountOfUser() <= 0) {
             throw new BaseException("单用户最大回传订单数配置错误!");
         }
+
+        policyOfSplitLevel.getRechargeLevelList().forEach(obj -> {
+            if (obj.getMinAmount() == null || obj.getMinAmount().compareTo(BigDecimal.ZERO) <= 0
+                    || obj.getMaxAmount() == null || obj.getMaxAmount().compareTo(BigDecimal.ZERO) <= 0
+                    || obj.getBackType() == null || StringUtils.isBlank(obj.getBackRate())) {
+                throw new BaseException("挡位划分配置错误!(不能为空,且不能 <= 0)");
+            }
+        });
+        policyOfSplitLevel.getRechargeLevelList().sort((obj1, obj2) -> obj1.getMinAmount().compareTo(obj2.getMaxAmount()));
+        BigDecimal maxAmount = BigDecimal.ZERO;
+        for (BackPolicyOfSplitLevel.RechargeLevel rechargeLevel : policyOfSplitLevel.getRechargeLevelList()) {
+            if (rechargeLevel.getMinAmount().compareTo(maxAmount) < 0) {
+                throw new BaseException("挡位划分配置错误!挡位区间不能重合!");
+            }
+            maxAmount = rechargeLevel.getMinAmount();
+            if (rechargeLevel.getMaxAmount().compareTo(maxAmount) < 0) {
+                throw new BaseException("挡位划分配置错误!挡位区间不能重合!");
+            }
+            maxAmount = rechargeLevel.getMaxAmount();
+        }
         checkDownLevel(policyOfSplitLevel.getDownLevel());
         checkSplitStrategy(policyOfSplitLevel.getSplitStrategy());
     }

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

@@ -1,5 +1,7 @@
 package com.zanxiang.game.back.serve.pojo.vo;
 
+import com.zanxiang.game.back.serve.pojo.BackPolicyOfSplitLevel;
+import com.zanxiang.game.back.serve.pojo.BackPolicyOfSumRecharge;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
@@ -34,6 +36,10 @@ public class GameBackPolicyVO implements Serializable {
 
     private Integer policyType;
 
+    private BackPolicyOfSplitLevel typeOfSplitLevel;
+
+    private BackPolicyOfSumRecharge typeOfSumRecharge;
+
     @ApiModelProperty("回传类型(1:首单、次单、2:首日、次日)")
     private Integer backUnit;
 

+ 43 - 32
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameBackPolicyServiceImpl.java

@@ -9,6 +9,8 @@ import com.zanxiang.erp.base.ErpServer;
 import com.zanxiang.erp.base.rpc.ISysUserRpc;
 import com.zanxiang.erp.security.util.SecurityUtil;
 import com.zanxiang.game.back.serve.dao.mapper.GameBackPolicyMapper;
+import com.zanxiang.game.back.serve.pojo.BackPolicyOfSplitLevel;
+import com.zanxiang.game.back.serve.pojo.BackPolicyOfSumRecharge;
 import com.zanxiang.game.back.serve.pojo.dto.GameBackPolicyDTO;
 import com.zanxiang.game.back.serve.pojo.dto.GameBackPolicyListDTO;
 import com.zanxiang.game.back.serve.pojo.entity.GameBackPolicy;
@@ -213,38 +215,47 @@ public class GameBackPolicyServiceImpl extends ServiceImpl<GameBackPolicyMapper,
             return null;
         }
         GameBackPolicyVO vo = BeanUtil.copy(gameBackPolicy, GameBackPolicyVO.class);
-        vo.setLargeAmount(gameBackPolicy.getLargeAmount() == null ? null : NumberUtil.divide100(new BigDecimal(gameBackPolicy.getLargeAmount())));
-        vo.setSupperSmallAmount(gameBackPolicy.getSupperSmallAmount() == null ? null : NumberUtil.divide100(new BigDecimal(gameBackPolicy.getSupperSmallAmount())));
-        vo.setFirstMinMoney(NumberUtil.divide100(new BigDecimal(gameBackPolicy.getFirstMinMoney())));
-        vo.setFirstMaxMoney(NumberUtil.divide100(new BigDecimal(gameBackPolicy.getFirstMaxMoney())));
-        vo.setRechargeMinMoney(NumberUtil.divide100(new BigDecimal(gameBackPolicy.getRechargeMinMoney())));
-        vo.setRechargeMaxMoney(NumberUtil.divide100(new BigDecimal(gameBackPolicy.getRechargeMaxMoney())));
-        if (gameBackPolicy.getMarkUpOrderMinMoney() != null) {
-            vo.setMarkUpOrderMinMoney(NumberUtil.divide100(new BigDecimal(gameBackPolicy.getMarkUpOrderMinMoney())));
-        }
-        if (gameBackPolicy.getMarkUpOrderMaxMoney() != null) {
-            vo.setMarkUpOrderMaxMoney(NumberUtil.divide100(new BigDecimal(gameBackPolicy.getMarkUpOrderMaxMoney())));
-        }
-        if (StringUtils.isNotBlank(gameBackPolicy.getFirstDownLevel())) {
-            vo.setFirstDownLevel(Arrays.stream(gameBackPolicy.getFirstDownLevel().split(","))
-                    .map(this::transformDownLevel)
-                    .collect(Collectors.toList())
-            );
-        }
-        if (StringUtils.isNotBlank(gameBackPolicy.getRechargeDownLevel())) {
-            vo.setRechargeDownLevel(Arrays.stream(gameBackPolicy.getRechargeDownLevel().split(","))
-                    .map(this::transformDownLevel)
-                    .collect(Collectors.toList())
-            );
-        }
-        if (StringUtils.isNotBlank(gameBackPolicy.getMarkUpDownLevel())) {
-            vo.setMarkUpDownLevel(Arrays.stream(gameBackPolicy.getMarkUpDownLevel().split(","))
-                    .map(this::transformDownLevel)
-                    .collect(Collectors.toList())
-            );
-        }
-        if (StringUtils.isNotBlank(gameBackPolicy.getSplitStrategy())) {
-            vo.setSplitStrategy((List<GameBackPolicyVO.SplitStrategy>) JsonUtil.toList(gameBackPolicy.getSplitStrategy(), List.class, GameBackPolicyVO.SplitStrategy.class));
+        if (gameBackPolicy.getPolicyType() == null || Objects.equals(gameBackPolicy.getPolicyType(), GameBackPolicy.TYPE_DEFAULT)) {
+            vo.setLargeAmount(gameBackPolicy.getLargeAmount() == null ? null : NumberUtil.divide100(new BigDecimal(gameBackPolicy.getLargeAmount())));
+            vo.setSupperSmallAmount(gameBackPolicy.getSupperSmallAmount() == null ? null : NumberUtil.divide100(new BigDecimal(gameBackPolicy.getSupperSmallAmount())));
+            vo.setFirstMinMoney(NumberUtil.divide100(new BigDecimal(gameBackPolicy.getFirstMinMoney())));
+            vo.setFirstMaxMoney(NumberUtil.divide100(new BigDecimal(gameBackPolicy.getFirstMaxMoney())));
+            vo.setRechargeMinMoney(NumberUtil.divide100(new BigDecimal(gameBackPolicy.getRechargeMinMoney())));
+            vo.setRechargeMaxMoney(NumberUtil.divide100(new BigDecimal(gameBackPolicy.getRechargeMaxMoney())));
+            if (gameBackPolicy.getMarkUpOrderMinMoney() != null) {
+                vo.setMarkUpOrderMinMoney(NumberUtil.divide100(new BigDecimal(gameBackPolicy.getMarkUpOrderMinMoney())));
+            }
+            if (gameBackPolicy.getMarkUpOrderMaxMoney() != null) {
+                vo.setMarkUpOrderMaxMoney(NumberUtil.divide100(new BigDecimal(gameBackPolicy.getMarkUpOrderMaxMoney())));
+            }
+            if (StringUtils.isNotBlank(gameBackPolicy.getFirstDownLevel())) {
+                vo.setFirstDownLevel(Arrays.stream(gameBackPolicy.getFirstDownLevel().split(","))
+                        .map(this::transformDownLevel)
+                        .collect(Collectors.toList())
+                );
+            }
+            if (StringUtils.isNotBlank(gameBackPolicy.getRechargeDownLevel())) {
+                vo.setRechargeDownLevel(Arrays.stream(gameBackPolicy.getRechargeDownLevel().split(","))
+                        .map(this::transformDownLevel)
+                        .collect(Collectors.toList())
+                );
+            }
+            if (StringUtils.isNotBlank(gameBackPolicy.getMarkUpDownLevel())) {
+                vo.setMarkUpDownLevel(Arrays.stream(gameBackPolicy.getMarkUpDownLevel().split(","))
+                        .map(this::transformDownLevel)
+                        .collect(Collectors.toList())
+                );
+            }
+            if (StringUtils.isNotBlank(gameBackPolicy.getSplitStrategy())) {
+                vo.setSplitStrategy((List<GameBackPolicyVO.SplitStrategy>) JsonUtil.toList(gameBackPolicy.getSplitStrategy(), List.class, GameBackPolicyVO.SplitStrategy.class));
+            }
+        } else if (Objects.equals(gameBackPolicy.getPolicyType(), GameBackPolicy.TYPE_SUM_RECHARGE)) {
+            vo.setTypeOfSumRecharge(JsonUtil.toObj(gameBackPolicy.getTypeOfSumRechargeJson(), BackPolicyOfSumRecharge.class));
+
+        } else if (Objects.equals(gameBackPolicy.getPolicyType(), GameBackPolicy.TYPE_SPLIT_LEVEL)) {
+            vo.setTypeOfSplitLevel(JsonUtil.toObj(gameBackPolicy.getTypeOfSplitLevelJson(), BackPolicyOfSplitLevel.class));
+        } else {
+            throw new BaseException("未知的回传类型");
         }
         return vo;
     }