Procházet zdrojové kódy

新增回传策略

wcc před 7 měsíci
rodič
revize
e686acfcb6

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

@@ -2,7 +2,10 @@ package com.zanxiang.game.back.serve.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.zanxiang.erp.security.annotation.PreAuthorize;
+import com.zanxiang.game.back.serve.pojo.BackPolicyOfSplitLevel;
+import com.zanxiang.game.back.serve.pojo.BackPolicyOfSumRecharge;
 import com.zanxiang.game.back.serve.pojo.dto.*;
+import com.zanxiang.game.back.serve.pojo.entity.GameBackPolicy;
 import com.zanxiang.game.back.serve.pojo.enums.BackUnitEnum;
 import com.zanxiang.game.back.serve.pojo.vo.*;
 import com.zanxiang.game.back.serve.service.*;
@@ -17,6 +20,7 @@ import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
 import java.util.List;
+import java.util.Objects;
 
 @RestController
 @RequestMapping("/policy")
@@ -64,6 +68,67 @@ public class BackPolicyController {
     }
 
     private void checkDTO(GameBackPolicyDTO dto) {
+        if (dto.getPolicyType() == null) {
+            dto.setPolicyType(GameBackPolicy.TYPE_DEFAULT);
+        }
+        if (Objects.equals(dto.getPolicyType(), GameBackPolicy.TYPE_DEFAULT)) {
+            checkDefaultDTO(dto);
+            return;
+        }
+        if (Objects.equals(dto.getPolicyType(), GameBackPolicy.TYPE_SUM_RECHARGE)) {
+            checkSumRecharge(dto.getTypeOfSumRecharge());
+            return;
+        }
+        if (Objects.equals(dto.getPolicyType(), GameBackPolicy.TYPE_SPLIT_LEVEL)) {
+            checkSplitLevel(dto.getTypeOfSplitLevel());
+            return;
+        }
+        throw new BaseException("参数错误!");
+    }
+
+    private void checkSplitLevel(BackPolicyOfSplitLevel policyOfSplitLevel) {
+        if (policyOfSplitLevel.getRegPayIntervalTime() != null && policyOfSplitLevel.getRegPayIntervalTime() <= 0) {
+            throw new BaseException("注册充值回传的最大间隔时间不能小于 1");
+        }
+        if (CollectionUtils.isEmpty(policyOfSplitLevel.getRechargeLevelList())) {
+            throw new BaseException("充值挡位划分不能为空!");
+        }
+        if (policyOfSplitLevel.getBackCountOfUser() != null && policyOfSplitLevel.getBackCountOfUser() <= 0) {
+            throw new BaseException("单用户最大回传订单数配置错误!");
+        }
+        checkDownLevel(policyOfSplitLevel.getDownLevel());
+        checkSplitStrategy(policyOfSplitLevel.getSplitStrategy());
+    }
+
+    private void checkSumRecharge(BackPolicyOfSumRecharge policyOfSumRecharge) {
+        if (policyOfSumRecharge.getRegPayIntervalTime() != null && policyOfSumRecharge.getRegPayIntervalTime() <= 0) {
+            throw new BaseException("注册充值回传的最大间隔时间不能小于 1");
+        }
+        if (CollectionUtils.isEmpty(policyOfSumRecharge.getRechargeLevelList())) {
+            throw new BaseException("挡位划分不能为空");
+        }
+        policyOfSumRecharge.getRechargeLevelList().forEach(obj -> {
+            if (obj.getMinAmount() == null || obj.getMinAmount().compareTo(BigDecimal.ZERO) <= 0
+                    || obj.getMaxAmount() == null || obj.getMaxAmount().compareTo(BigDecimal.ZERO) <= 0
+                    || obj.getBackCountOfUser() == null || obj.getBackCountOfUser() <= 0) {
+                throw new BaseException("挡位划分配置错误!(不能为空,且不能 <= 0)");
+            }
+        });
+        policyOfSumRecharge.getRechargeLevelList().sort((obj1, obj2) -> obj1.getMinAmount().compareTo(obj2.getMaxAmount()));
+        BigDecimal maxAmount = BigDecimal.ZERO;
+        for (BackPolicyOfSumRecharge.RechargeLevel rechargeLevel : policyOfSumRecharge.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();
+        }
+    }
+
+    private void checkDefaultDTO(GameBackPolicyDTO dto) {
         BackUnitEnum backUnit = BackUnitEnum.getByValue(dto.getBackUnit());
         if (backUnit == null) {
             throw new BaseException("错误的回传单位:" + dto.getBackUnit());

+ 56 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/BackPolicyOfSplitLevel.java

@@ -0,0 +1,56 @@
+package com.zanxiang.game.back.serve.pojo;
+
+import com.zanxiang.game.back.serve.pojo.vo.GameBackPolicyVO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 按挡位拆分
+ */
+@Data
+public class BackPolicyOfSplitLevel {
+
+    @ApiModelProperty("充值注册最大间隔时间(超时不回传)")
+    private Long regPayIntervalTime;
+
+    @ApiModelProperty("充值挡位")
+    private List<RechargeLevel> rechargeLevelList;
+
+    @ApiModelProperty("单用户最大回传订单数")
+    private Integer backCountOfUser;
+
+    @ApiModelProperty("降档策略")
+    private List<GameBackPolicyVO.PolicyDownLevel> downLevel;
+
+    @ApiModelProperty("拆单策略")
+    private List<GameBackPolicyVO.SplitStrategy> splitStrategy;
+
+    @ApiModelProperty("激活回传开关")
+    private Boolean activeBackSwitch;
+
+    @ApiModelProperty("最小回传等级")
+    private Long roleLevelMin;
+
+
+    @Data
+    public static class RechargeLevel {
+
+        @ApiModelProperty("最小金额")
+        private BigDecimal minAmount;
+
+        @ApiModelProperty("最大金额")
+        private BigDecimal maxAmount;
+
+        @ApiModelProperty("回传类型(1:概率、2:比例)")
+        private Integer backType;
+
+        @ApiModelProperty("回传值(100% | 1:2)")
+        private String backRate;
+    }
+}

+ 37 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/BackPolicyOfSumRecharge.java

@@ -0,0 +1,37 @@
+package com.zanxiang.game.back.serve.pojo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class BackPolicyOfSumRecharge {
+
+    @ApiModelProperty("充值注册最大间隔时间(超时不回传)")
+    private Long regPayIntervalTime;
+
+    @ApiModelProperty("充值挡位")
+    private List<RechargeLevel> rechargeLevelList;
+
+    @ApiModelProperty("激活回传开关")
+    private Boolean activeBackSwitch;
+
+    @ApiModelProperty("最小回传等级")
+    private Long roleLevelMin;
+
+
+    @Data
+    public static class RechargeLevel {
+
+        @ApiModelProperty("最小金额")
+        private BigDecimal minAmount;
+
+        @ApiModelProperty("最大金额")
+        private BigDecimal maxAmount;
+
+        @ApiModelProperty("单用户最大回传订单数")
+        private Long backCountOfUser;
+    }
+}

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

@@ -1,5 +1,7 @@
 package com.zanxiang.game.back.serve.pojo.dto;
 
+import com.zanxiang.game.back.serve.pojo.BackPolicyOfSplitLevel;
+import com.zanxiang.game.back.serve.pojo.BackPolicyOfSumRecharge;
 import com.zanxiang.game.back.serve.pojo.vo.GameBackPolicyVO;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -33,6 +35,13 @@ public class GameBackPolicyDTO implements Serializable {
     @ApiModelProperty("回传策略名")
     private String backPolicyName;
 
+    @ApiModelProperty("回传策略类型")
+    private Integer policyType;
+
+    private BackPolicyOfSplitLevel typeOfSplitLevel;
+
+    private BackPolicyOfSumRecharge typeOfSumRecharge;
+
     @ApiModelProperty("回传类型(1:首单、次单、2:首日、次日)")
     private Integer backUnit;
 

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

@@ -32,11 +32,23 @@ public class GameBackPolicy implements Serializable {
     // 随机概率
     public static final Integer POLICY_TYPE_RANDOM_RATE = 1;
 
+    public static final Integer TYPE_DEFAULT = 1;
+    // 充值区间
+    public static final Integer TYPE_SUM_RECHARGE = 2;
+    //
+    public static final Integer TYPE_SPLIT_LEVEL = 3;
+
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
     private String backPolicyName;
 
+    private Integer policyType;
+
+    private String typeOfSplitLevelJson;
+
+    private String typeOfSumRechargeJson;
+
     /**
      * 首充/日-小额判定金额(小于等于)
      * 大额/小额-累充判定金额(小于等于)

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

@@ -32,6 +32,8 @@ public class GameBackPolicyVO implements Serializable {
     @ApiModelProperty("回传策略名")
     private String backPolicyName;
 
+    private Integer policyType;
+
     @ApiModelProperty("回传类型(1:首单、次单、2:首日、次日)")
     private Integer backUnit;
 

+ 93 - 79
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameBackPolicyServiceImpl.java

@@ -32,6 +32,7 @@ import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -61,9 +62,9 @@ public class GameBackPolicyServiceImpl extends ServiceImpl<GameBackPolicyMapper,
     @Override
     public IPage<GameBackPolicyVO> policyList(GameBackPolicyListDTO dto) {
         return gameBackPolicyService.page(dto.toPage(), new LambdaQueryWrapper<GameBackPolicy>()
-                .like(StringUtils.isNotBlank(dto.getBackPolicyName()), GameBackPolicy::getBackPolicyName, dto.getBackPolicyName())
-                .eq(GameBackPolicy::getCreateBy, SecurityUtil.getUserId())
-                .orderByDesc(GameBackPolicy::getCreateTime))
+                        .like(StringUtils.isNotBlank(dto.getBackPolicyName()), GameBackPolicy::getBackPolicyName, dto.getBackPolicyName())
+                        .eq(GameBackPolicy::getCreateBy, SecurityUtil.getUserId())
+                        .orderByDesc(GameBackPolicy::getCreateTime))
                 .convert(this::toVO);
     }
 
@@ -82,47 +83,54 @@ public class GameBackPolicyServiceImpl extends ServiceImpl<GameBackPolicyMapper,
         }
         GameBackPolicy backPolicy = GameBackPolicy.builder()
                 .backPolicyName(dto.getBackPolicyName())
-                .firstMinMoney(NumberUtil.multiply100(dto.getFirstMinMoney()).longValue())
-                .firstMinMoneyType(dto.getFirstMinMoneyType())
-                .firstMinMoneyRate(dto.getFirstMinMoneyRate())
-                .firstMaxMoney(NumberUtil.multiply100(dto.getFirstMaxMoney()).longValue())
-                .firstMaxMoneyType(dto.getFirstMaxMoneyType())
-                .firstMaxMoneyRate(dto.getFirstMaxMoneyRate())
-                .firstOtherMoneyType(dto.getFirstOtherMoneyType())
-                .firstOtherMoneyRate(dto.getFirstOtherMoneyRate())
-                .firstDownLevel(downLevelToString(dto.getFirstDownLevel()))
-                .firstBackCountOfUser(dto.getFirstBackCountOfUser())
-                .rechargeMinMoney(NumberUtil.multiply100(dto.getRechargeMinMoney()).longValue())
-                .rechargeMinMoneyType(dto.getRechargeMinMoneyType())
-                .rechargeMinMoneyRate(dto.getRechargeMinMoneyRate())
-                .rechargeMaxMoney(NumberUtil.multiply100(dto.getRechargeMaxMoney()).longValue())
-                .rechargeMaxMoneyType(dto.getRechargeMaxMoneyType())
-                .rechargeMaxMoneyRate(dto.getRechargeMaxMoneyRate())
-                .rechargeOtherMoneyType(dto.getRechargeOtherMoneyType())
-                .rechargeOtherMoneyRate(dto.getRechargeOtherMoneyRate())
-                .rechargeDownLevel(downLevelToString(dto.getRechargeDownLevel()))
-                .rechargeBackCountOfUser(dto.getRechargeBackCountOfUser())
+                .policyType(dto.getPolicyType())
                 .createBy(SecurityUtil.getUserId())
                 .createTime(LocalDateTime.now())
-                .regPayIntervalTime(dto.getRegPayIntervalTime())
-                .backUnit(dto.getBackUnit())
-                .markUpOrder(dto.getMarkUpOrder())
-                .markUpOrderMinMoney(dto.getMarkUpOrderMinMoney() == null ? null : NumberUtil.multiply100(dto.getMarkUpOrderMinMoney()).longValue())
-                .markUpOrderMinMoneyType(dto.getMarkUpOrderMinMoneyType())
-                .markUpOrderMinMoneyRate(dto.getMarkUpOrderMinMoneyRate())
-                .markUpOrderMaxMoney(dto.getMarkUpOrderMaxMoney() == null ? null : NumberUtil.multiply100(dto.getMarkUpOrderMaxMoney()).longValue())
-                .markUpOrderMaxMoneyType(dto.getMarkUpOrderMaxMoneyType())
-                .markUpOrderMaxMoneyRate(dto.getMarkUpOrderMaxMoneyRate())
-                .markUpOrderOtherMoneyType(dto.getMarkUpOrderOtherMoneyType())
-                .markUpOrderOtherMoneyRate(dto.getMarkUpOrderOtherMoneyRate())
-                .markUpDownLevel(downLevelToString(dto.getMarkUpDownLevel()))
-                .markUpBackCountOfUser(dto.getMarkUpBackCountOfUser())
-                .largeAmount(dto.getLargeAmount() == null ? null : NumberUtil.multiply100(dto.getLargeAmount()).longValue())
-                .supperSmallAmount(dto.getSupperSmallAmount() == null ? null : NumberUtil.multiply100(dto.getSupperSmallAmount()).longValue())
-                .splitStrategy(CollectionUtils.isEmpty(dto.getSplitStrategy()) ? null : JsonUtil.toString(dto.getSplitStrategy()))
-                .activeBackSwitch(dto.getActiveBackSwitch())
-                .roleLevelMin(dto.getRoleLevelMin())
                 .build();
+        if (Objects.equals(dto.getPolicyType(), GameBackPolicy.TYPE_DEFAULT)) {
+            backPolicy.setFirstMinMoney(NumberUtil.multiply100(dto.getFirstMinMoney()).longValue());
+            backPolicy.setFirstMinMoneyType(dto.getFirstMinMoneyType());
+            backPolicy.setFirstMinMoneyRate(dto.getFirstMinMoneyRate());
+            backPolicy.setFirstMaxMoney(NumberUtil.multiply100(dto.getFirstMaxMoney()).longValue());
+            backPolicy.setFirstMaxMoneyType(dto.getFirstMaxMoneyType());
+            backPolicy.setFirstMaxMoneyRate(dto.getFirstMaxMoneyRate());
+            backPolicy.setFirstOtherMoneyType(dto.getFirstOtherMoneyType());
+            backPolicy.setFirstOtherMoneyRate(dto.getFirstOtherMoneyRate());
+            backPolicy.setFirstDownLevel(downLevelToString(dto.getFirstDownLevel()));
+            backPolicy.setFirstBackCountOfUser(dto.getFirstBackCountOfUser());
+            backPolicy.setRechargeMinMoney(NumberUtil.multiply100(dto.getRechargeMinMoney()).longValue());
+            backPolicy.setRechargeMinMoneyType(dto.getRechargeMinMoneyType());
+            backPolicy.setRechargeMinMoneyRate(dto.getRechargeMinMoneyRate());
+            backPolicy.setRechargeMaxMoney(NumberUtil.multiply100(dto.getRechargeMaxMoney()).longValue());
+            backPolicy.setRechargeMaxMoneyType(dto.getRechargeMaxMoneyType());
+            backPolicy.setRechargeMaxMoneyRate(dto.getRechargeMaxMoneyRate());
+            backPolicy.setRechargeOtherMoneyType(dto.getRechargeOtherMoneyType());
+            backPolicy.setRechargeOtherMoneyRate(dto.getRechargeOtherMoneyRate());
+            backPolicy.setRechargeDownLevel(downLevelToString(dto.getRechargeDownLevel()));
+            backPolicy.setRechargeBackCountOfUser(dto.getRechargeBackCountOfUser());
+            backPolicy.setRegPayIntervalTime(dto.getRegPayIntervalTime());
+            backPolicy.setBackUnit(dto.getBackUnit());
+            backPolicy.setMarkUpOrder(dto.getMarkUpOrder());
+            backPolicy.setMarkUpOrderMinMoney(dto.getMarkUpOrderMinMoney() == null ? null : NumberUtil.multiply100(dto.getMarkUpOrderMinMoney()).longValue());
+            backPolicy.setMarkUpOrderMinMoneyType(dto.getMarkUpOrderMinMoneyType());
+            backPolicy.setMarkUpOrderMinMoneyRate(dto.getMarkUpOrderMinMoneyRate());
+            backPolicy.setMarkUpOrderMaxMoney(dto.getMarkUpOrderMaxMoney() == null ? null : NumberUtil.multiply100(dto.getMarkUpOrderMaxMoney()).longValue());
+            backPolicy.setMarkUpOrderMaxMoneyType(dto.getMarkUpOrderMaxMoneyType());
+            backPolicy.setMarkUpOrderMaxMoneyRate(dto.getMarkUpOrderMaxMoneyRate());
+            backPolicy.setMarkUpOrderOtherMoneyType(dto.getMarkUpOrderOtherMoneyType());
+            backPolicy.setMarkUpOrderOtherMoneyRate(dto.getMarkUpOrderOtherMoneyRate());
+            backPolicy.setMarkUpDownLevel(downLevelToString(dto.getMarkUpDownLevel()));
+            backPolicy.setMarkUpBackCountOfUser(dto.getMarkUpBackCountOfUser());
+            backPolicy.setLargeAmount(dto.getLargeAmount() == null ? null : NumberUtil.multiply100(dto.getLargeAmount()).longValue());
+            backPolicy.setSupperSmallAmount(dto.getSupperSmallAmount() == null ? null : NumberUtil.multiply100(dto.getSupperSmallAmount()).longValue());
+            backPolicy.setSplitStrategy(CollectionUtils.isEmpty(dto.getSplitStrategy()) ? null : JsonUtil.toString(dto.getSplitStrategy()));
+            backPolicy.setActiveBackSwitch(dto.getActiveBackSwitch());
+            backPolicy.setRoleLevelMin(dto.getRoleLevelMin());
+        } else if (Objects.equals(dto.getPolicyType(), GameBackPolicy.TYPE_SUM_RECHARGE)) {
+            backPolicy.setTypeOfSumRechargeJson(JsonUtil.toString(dto.getTypeOfSumRecharge()));
+        } else if (Objects.equals(dto.getPolicyType(), GameBackPolicy.TYPE_SPLIT_LEVEL)) {
+            backPolicy.setTypeOfSplitLevelJson(JsonUtil.toString(dto.getTypeOfSplitLevel()));
+        }
         return gameBackPolicyService.save(backPolicy);
     }
 
@@ -135,49 +143,55 @@ public class GameBackPolicyServiceImpl extends ServiceImpl<GameBackPolicyMapper,
         GameBackPolicy backPolicy = GameBackPolicy.builder()
                 .id(policyId)
                 .backPolicyName(dto.getBackPolicyName())
-                .firstMinMoney(NumberUtil.multiply100(dto.getFirstMinMoney()).longValue())
-                .firstMinMoneyType(dto.getFirstMinMoneyType())
-                .firstMinMoneyRate(dto.getFirstMinMoneyRate())
-                .firstMaxMoney(NumberUtil.multiply100(dto.getFirstMaxMoney()).longValue())
-                .firstMaxMoneyType(dto.getFirstMaxMoneyType())
-                .firstMaxMoneyRate(dto.getFirstMaxMoneyRate())
-                .firstOtherMoneyType(dto.getFirstOtherMoneyType())
-                .firstOtherMoneyRate(dto.getFirstOtherMoneyRate())
-                .firstDownLevel(downLevelToString(dto.getFirstDownLevel()))
-                .firstBackCountOfUser(dto.getFirstBackCountOfUser())
-                .rechargeMinMoney(NumberUtil.multiply100(dto.getRechargeMinMoney()).longValue())
-                .rechargeMinMoneyType(dto.getRechargeMinMoneyType())
-                .rechargeMinMoneyRate(dto.getRechargeMinMoneyRate())
-                .rechargeMaxMoney(NumberUtil.multiply100(dto.getRechargeMaxMoney()).longValue())
-                .rechargeMaxMoneyType(dto.getRechargeMaxMoneyType())
-                .rechargeMaxMoneyRate(dto.getRechargeMaxMoneyRate())
-                .rechargeOtherMoneyType(dto.getRechargeOtherMoneyType())
-                .rechargeOtherMoneyRate(dto.getRechargeOtherMoneyRate())
-                .rechargeDownLevel(downLevelToString(dto.getRechargeDownLevel()))
-                .rechargeBackCountOfUser(dto.getRechargeBackCountOfUser())
-                .regPayIntervalTime(dto.getRegPayIntervalTime())
                 .createBy(old.getCreateBy())
                 .createTime(old.getCreateTime())
                 .updateBy(SecurityUtil.getUserId())
                 .updateTime(LocalDateTime.now())
-                .backUnit(dto.getBackUnit())
-                .markUpOrder(dto.getMarkUpOrder())
-                .markUpOrderMinMoney(dto.getMarkUpOrderMinMoney() == null ? null : NumberUtil.multiply100(dto.getMarkUpOrderMinMoney()).longValue())
-                .markUpOrderMinMoneyType(dto.getMarkUpOrderMinMoneyType())
-                .markUpOrderMinMoneyRate(dto.getMarkUpOrderMinMoneyRate())
-                .markUpOrderMaxMoney(dto.getMarkUpOrderMaxMoney() == null ? null : NumberUtil.multiply100(dto.getMarkUpOrderMaxMoney()).longValue())
-                .markUpOrderMaxMoneyType(dto.getMarkUpOrderMaxMoneyType())
-                .markUpOrderMaxMoneyRate(dto.getMarkUpOrderMaxMoneyRate())
-                .markUpOrderOtherMoneyType(dto.getMarkUpOrderOtherMoneyType())
-                .markUpOrderOtherMoneyRate(dto.getMarkUpOrderOtherMoneyRate())
-                .markUpDownLevel(downLevelToString(dto.getMarkUpDownLevel()))
-                .markUpBackCountOfUser(dto.getMarkUpBackCountOfUser())
-                .largeAmount(dto.getLargeAmount() == null ? null : NumberUtil.multiply100(dto.getLargeAmount()).longValue())
-                .supperSmallAmount(dto.getSupperSmallAmount() == null ? null : NumberUtil.multiply100(dto.getSupperSmallAmount()).longValue())
-                .splitStrategy(CollectionUtils.isEmpty(dto.getSplitStrategy()) ? null : JsonUtil.toString(dto.getSplitStrategy()))
-                .activeBackSwitch(dto.getActiveBackSwitch())
-                .roleLevelMin(dto.getRoleLevelMin())
                 .build();
+        if (Objects.equals(dto.getPolicyType(), GameBackPolicy.TYPE_DEFAULT)) {
+            backPolicy.setFirstMinMoney(NumberUtil.multiply100(dto.getFirstMinMoney()).longValue());
+            backPolicy.setFirstMinMoneyType(dto.getFirstMinMoneyType());
+            backPolicy.setFirstMinMoneyRate(dto.getFirstMinMoneyRate());
+            backPolicy.setFirstMaxMoney(NumberUtil.multiply100(dto.getFirstMaxMoney()).longValue());
+            backPolicy.setFirstMaxMoneyType(dto.getFirstMaxMoneyType());
+            backPolicy.setFirstMaxMoneyRate(dto.getFirstMaxMoneyRate());
+            backPolicy.setFirstOtherMoneyType(dto.getFirstOtherMoneyType());
+            backPolicy.setFirstOtherMoneyRate(dto.getFirstOtherMoneyRate());
+            backPolicy.setFirstDownLevel(downLevelToString(dto.getFirstDownLevel()));
+            backPolicy.setFirstBackCountOfUser(dto.getFirstBackCountOfUser());
+            backPolicy.setRechargeMinMoney(NumberUtil.multiply100(dto.getRechargeMinMoney()).longValue());
+            backPolicy.setRechargeMinMoneyType(dto.getRechargeMinMoneyType());
+            backPolicy.setRechargeMinMoneyRate(dto.getRechargeMinMoneyRate());
+            backPolicy.setRechargeMaxMoney(NumberUtil.multiply100(dto.getRechargeMaxMoney()).longValue());
+            backPolicy.setRechargeMaxMoneyType(dto.getRechargeMaxMoneyType());
+            backPolicy.setRechargeMaxMoneyRate(dto.getRechargeMaxMoneyRate());
+            backPolicy.setRechargeOtherMoneyType(dto.getRechargeOtherMoneyType());
+            backPolicy.setRechargeOtherMoneyRate(dto.getRechargeOtherMoneyRate());
+            backPolicy.setRechargeDownLevel(downLevelToString(dto.getRechargeDownLevel()));
+            backPolicy.setRechargeBackCountOfUser(dto.getRechargeBackCountOfUser());
+            backPolicy.setRegPayIntervalTime(dto.getRegPayIntervalTime());
+            backPolicy.setBackUnit(dto.getBackUnit());
+            backPolicy.setMarkUpOrder(dto.getMarkUpOrder());
+            backPolicy.setMarkUpOrderMinMoney(dto.getMarkUpOrderMinMoney() == null ? null : NumberUtil.multiply100(dto.getMarkUpOrderMinMoney()).longValue());
+            backPolicy.setMarkUpOrderMinMoneyType(dto.getMarkUpOrderMinMoneyType());
+            backPolicy.setMarkUpOrderMinMoneyRate(dto.getMarkUpOrderMinMoneyRate());
+            backPolicy.setMarkUpOrderMaxMoney(dto.getMarkUpOrderMaxMoney() == null ? null : NumberUtil.multiply100(dto.getMarkUpOrderMaxMoney()).longValue());
+            backPolicy.setMarkUpOrderMaxMoneyType(dto.getMarkUpOrderMaxMoneyType());
+            backPolicy.setMarkUpOrderMaxMoneyRate(dto.getMarkUpOrderMaxMoneyRate());
+            backPolicy.setMarkUpOrderOtherMoneyType(dto.getMarkUpOrderOtherMoneyType());
+            backPolicy.setMarkUpOrderOtherMoneyRate(dto.getMarkUpOrderOtherMoneyRate());
+            backPolicy.setMarkUpDownLevel(downLevelToString(dto.getMarkUpDownLevel()));
+            backPolicy.setMarkUpBackCountOfUser(dto.getMarkUpBackCountOfUser());
+            backPolicy.setLargeAmount(dto.getLargeAmount() == null ? null : NumberUtil.multiply100(dto.getLargeAmount()).longValue());
+            backPolicy.setSupperSmallAmount(dto.getSupperSmallAmount() == null ? null : NumberUtil.multiply100(dto.getSupperSmallAmount()).longValue());
+            backPolicy.setSplitStrategy(CollectionUtils.isEmpty(dto.getSplitStrategy()) ? null : JsonUtil.toString(dto.getSplitStrategy()));
+            backPolicy.setActiveBackSwitch(dto.getActiveBackSwitch());
+            backPolicy.setRoleLevelMin(dto.getRoleLevelMin());
+        } else if (Objects.equals(dto.getPolicyType(), GameBackPolicy.TYPE_SUM_RECHARGE)) {
+            backPolicy.setTypeOfSumRechargeJson(JsonUtil.toString(dto.getTypeOfSumRecharge()));
+        } else if (Objects.equals(dto.getPolicyType(), GameBackPolicy.TYPE_SPLIT_LEVEL)) {
+            backPolicy.setTypeOfSplitLevelJson(JsonUtil.toString(dto.getTypeOfSplitLevel()));
+        }
         return gameBackPolicyService.updateById(backPolicy);
     }