Ver Fonte

Merge branch 'dev' of GameCenter/game-center into master

root há 7 meses atrás
pai
commit
474182643a
26 ficheiros alterados com 15612 adições e 302 exclusões
  1. 86 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/controller/BackPolicyController.java
  2. 56 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/BackPolicyOfSplitLevel.java
  3. 37 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/BackPolicyOfSumRecharge.java
  4. 9 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameBackPolicyDTO.java
  5. 12 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameBackPolicy.java
  6. 8 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/vo/GameBackPolicyVO.java
  7. 136 111
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameBackPolicyServiceImpl.java
  8. 45 10
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineAppOrderLogServiceImpl.java
  9. 8 8
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineOrderLogServiceImpl.java
  10. 9 12
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentAppApiOrderServiceImpl.java
  11. 8 8
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameOrderServiceImpl.java
  12. 8 8
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentOrderServiceImpl.java
  13. 230 102
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/utils/BackPolicyUtil.java
  14. 0 5
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/component/DataPowerComponent.java
  15. 16 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/GameDataController.java
  16. 58 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/MediaActiveDataDayDTO.java
  17. 1852 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsGameMediaActiveOrderDay.java
  18. 1849 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsGameMediaActiveOrderDayParent.java
  19. 1858 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsGameMediaActiveRegDay.java
  20. 1856 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsGameMediaActiveRegDayParent.java
  21. 1852 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsGameMediaActiveRoleDay.java
  22. 1849 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsGameMediaActiveRoleDayParent.java
  23. 1481 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/MediaActiveDataDayVO.java
  24. 1405 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/MediaActiveDataTotalVO.java
  25. 16 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IActiveDataService.java
  26. 868 38
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/IActiveDataServiceImpl.java

+ 86 - 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.*;
@@ -11,12 +14,14 @@ 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.*;
 
 import java.math.BigDecimal;
 import java.util.List;
+import java.util.Objects;
 
 @RestController
 @RequestMapping("/policy")
@@ -64,6 +69,87 @@ 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("单用户最大回传订单数配置错误!");
+        }
+
+        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());
+    }
+
+    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;
+
     /**
      * 首充/日-小额判定金额(小于等于)
      * 大额/小额-累充判定金额(小于等于)

+ 8 - 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;
@@ -32,6 +34,12 @@ public class GameBackPolicyVO implements Serializable {
     @ApiModelProperty("回传策略名")
     private String backPolicyName;
 
+    private Integer policyType;
+
+    private BackPolicyOfSplitLevel typeOfSplitLevel;
+
+    private BackPolicyOfSumRecharge typeOfSumRecharge;
+
     @ApiModelProperty("回传类型(1:首单、次单、2:首日、次日)")
     private Integer backUnit;
 

+ 136 - 111
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;
@@ -32,6 +34,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 +64,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 +85,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 +145,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);
     }
 
@@ -199,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;
     }

+ 45 - 10
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineAppOrderLogServiceImpl.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.sd4324530.jtuple.Tuple2;
 import com.github.sd4324530.jtuple.Tuple3;
+import com.github.sd4324530.jtuple.Tuple4;
 import com.zanxiang.game.back.base.pojo.enums.OrderStatusEnum;
 import com.zanxiang.game.back.serve.dao.mapper.GameOceanengineAppOrderLogMapper;
 import com.zanxiang.game.back.serve.oceanengine.MiniGameCallback;
@@ -28,6 +29,7 @@ import com.zanxiang.module.util.ObjectUtil;
 import com.zanxiang.module.util.bean.BeanUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -75,13 +77,13 @@ public class GameOceanengineAppOrderLogServiceImpl extends ServiceImpl<GameOcean
         }
 
         GameBackPolicy gameBackPolicy = gameBackPolicyService.getById(orderLog.getBackPolicyId());
-        Tuple3<Boolean, Long, String> backInfo = BackPolicyUtil.backOrder(orderLog.getOrderNo(), gameBackPolicy, orderLog.getAmount(),
+        Tuple4<Boolean, Long, String, List<Tuple2<Long, LocalDateTime>>> backInfo = BackPolicyUtil.backOrder(orderLog.getOrderNo(), gameBackPolicy, orderLog.getAmount(),
                 orderLog.getIsFirstOrder(),
                 orderLog.getPayTime(),
                 // 此处使用用户最近一次的重新染色时间
                 userLog.getCreateTime(),
                 orderLog.getUserId(),
-                new OceanengineOrderBackPolicyCheck(this, userLog, orderLog, gameBackPolicy)
+                new OceanengineOrderBackPolicyCheck(this, gameOceanengineAppOrderSplitLogService, userLog, orderLog, gameBackPolicy)
         );
         boolean doBack = backInfo.first;
         Long backMoney = backInfo.second;
@@ -97,17 +99,16 @@ public class GameOceanengineAppOrderLogServiceImpl extends ServiceImpl<GameOcean
             );
         }
         // 拆单
-        Tuple3<Boolean, Long, List<Tuple2<Long, LocalDateTime>>> splitResult = BackPolicyUtil.splitOrder(gameBackPolicy, backMoney);
-        if (splitResult.first) {
+        if (CollectionUtils.isNotEmpty(backInfo.fourth)) {
             // 需要拆单
-            List<GameOceanengineAppOrderSplitLog> splitOrderLogList = new ArrayList<>(splitResult.third.size());
-            for (int i = 0; i < splitResult.third.size(); i++) {
-                Tuple2<Long, LocalDateTime> splitOrder = splitResult.third.get(i);
+            List<GameOceanengineAppOrderSplitLog> splitOrderLogList = new ArrayList<>(backInfo.fourth.size());
+            for (int i = 0; i < backInfo.fourth.size(); i++) {
+                Tuple2<Long, LocalDateTime> splitOrder = backInfo.fourth.get(i);
                 splitOrderLogList.add(GameOceanengineAppOrderSplitLog.builder()
                         .backDay(splitOrder.second.toLocalDate())
                         .orderNo(orderLog.getOrderNo())
                         .backIndex(i + 1)
-                        .backCount(splitResult.third.size())
+                        .backCount(backInfo.fourth.size())
                         .splitMoney(splitOrder.first)
                         .backTime(splitOrder.second)
                         .backStatus(BackStatusEnum.SUCCESS.getBackStatus())
@@ -118,7 +119,7 @@ public class GameOceanengineAppOrderLogServiceImpl extends ServiceImpl<GameOcean
             gameOceanengineAppOrderSplitLogService.saveBatch(splitOrderLogList);
             return update(new LambdaUpdateWrapper<GameOceanengineAppOrderLog>()
                     .set(GameOceanengineAppOrderLog::getBackStatus, BackStatusEnum.SUCCESS.getBackStatus())
-                    .set(GameOceanengineAppOrderLog::getBackMoney, splitResult.second)
+                    .set(GameOceanengineAppOrderLog::getBackMoney, backInfo.second)
                     .set(GameOceanengineAppOrderLog::getBackMsg, backMsg)
                     .eq(GameOceanengineAppOrderLog::getId, orderLog.getId())
             );
@@ -260,17 +261,51 @@ public class GameOceanengineAppOrderLogServiceImpl extends ServiceImpl<GameOcean
 
     public static class OceanengineOrderBackPolicyCheck implements BackPolicyUtil.IBackPolicyCheck {
         private final IGameOceanengineAppOrderLogService gameOceanengineAppOrderLogService;
+        private final IGameOceanengineAppOrderSplitLogService gameOceanengineAppOrderSplitLogService;
         private final GameBackPolicy gameBackPolicy;
         private final GameOceanengineAppUserLog userLog;
         private final GameOceanengineAppOrderLog orderLog;
 
-        public OceanengineOrderBackPolicyCheck(IGameOceanengineAppOrderLogService gameOceanengineAppOrderLogService, GameOceanengineAppUserLog userLog, GameOceanengineAppOrderLog orderLog, GameBackPolicy gameBackPolicy) {
+        public OceanengineOrderBackPolicyCheck(IGameOceanengineAppOrderLogService gameOceanengineAppOrderLogService, IGameOceanengineAppOrderSplitLogService gameOceanengineAppOrderSplitLogService, GameOceanengineAppUserLog userLog, GameOceanengineAppOrderLog orderLog, GameBackPolicy gameBackPolicy) {
             this.gameOceanengineAppOrderLogService = gameOceanengineAppOrderLogService;
+            this.gameOceanengineAppOrderSplitLogService = gameOceanengineAppOrderSplitLogService;
             this.gameBackPolicy = gameBackPolicy;
             this.userLog = userLog;
             this.orderLog = orderLog;
         }
 
+        public Tuple2<Long, Long> backCountForUserWithSplitOrder(String userId) {
+            Map<String, Long> orderMap = gameOceanengineAppOrderLogService.list(new LambdaQueryWrapper<GameOceanengineAppOrderLog>()
+                    .select(GameOceanengineAppOrderLog::getOrderNo, GameOceanengineAppOrderLog::getBackMoney)
+                    .eq(GameOceanengineAppOrderLog::getGameId, orderLog.getGameId())
+                    .eq(GameOceanengineAppOrderLog::getAccountId, orderLog.getAccountId())
+                    .eq(GameOceanengineAppOrderLog::getBackPolicyId, gameBackPolicy.getId())
+                    .eq(GameOceanengineAppOrderLog::getOrderStatus, OrderStatusEnum.SUCCESS_PAY.getValue())
+                    .eq(GameOceanengineAppOrderLog::getBackStatus, BackStatusEnum.SUCCESS.getBackStatus())
+                    .eq(GameOceanengineAppOrderLog::getUserId, userId)
+                    .ne(GameOceanengineAppOrderLog::getOrderNo, orderLog.getOrderNo())
+            ).stream().collect(Collectors.toMap(GameOceanengineAppOrderLog::getOrderNo, GameOceanengineAppOrderLog::getBackMoney));
+            if (MapUtils.isEmpty(orderMap)) {
+                return Tuple2.with(0L, 0L);
+            }
+            Map<String, Integer> splitBackCountMap = gameOceanengineAppOrderSplitLogService.list(new LambdaQueryWrapper<GameOceanengineAppOrderSplitLog>()
+                    .select(GameOceanengineAppOrderSplitLog::getOrderNo, GameOceanengineAppOrderSplitLog::getBackIndex, GameOceanengineAppOrderSplitLog::getBackCount)
+                    .in(GameOceanengineAppOrderSplitLog::getOrderNo, orderMap.keySet())
+            ).stream().collect(Collectors.toMap(GameOceanengineAppOrderSplitLog::getOrderNo, GameOceanengineAppOrderSplitLog::getBackCount, (obj1, obj2) -> obj1));
+            long count = 0;
+            long backMoney = 0;
+            for (Map.Entry<String, Long> entry : orderMap.entrySet()) {
+                Integer splitBackCount = splitBackCountMap.get(entry.getKey());
+                backMoney += entry.getValue();
+                if (splitBackCount != null) {
+                    count += splitBackCount;
+                } else {
+                    count += 1;
+                }
+            }
+            return Tuple2.with(count, backMoney);
+        }
+
         @Override
         public long backCountForFixedRate(int numberOfRound, BackUnitEnum backUnit, Boolean firstPolicy) {
             numberOfRound = numberOfRound - 1;

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

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.sd4324530.jtuple.Tuple2;
 import com.github.sd4324530.jtuple.Tuple3;
+import com.github.sd4324530.jtuple.Tuple4;
 import com.github.sd4324530.jtuple.Tuples;
 import com.zanxiang.game.back.base.pojo.enums.OrderStatusEnum;
 import com.zanxiang.game.back.serve.config.NacosDynamicParamConfig;
@@ -97,7 +98,7 @@ public class GameOceanengineOrderLogServiceImpl extends ServiceImpl<GameOceaneng
         }
 
         GameBackPolicy gameBackPolicy = gameBackPolicyService.getById(orderLog.getBackPolicyId());
-        Tuple3<Boolean, Long, String> backInfo = BackPolicyUtil.backOrder(orderLog.getOrderNo(), gameBackPolicy, orderLog.getAmount(),
+        Tuple4<Boolean, Long, String, List<Tuple2<Long, LocalDateTime>>> backInfo = BackPolicyUtil.backOrder(orderLog.getOrderNo(), gameBackPolicy, orderLog.getAmount(),
                 orderLog.getIsFirstOrder(),
                 orderLog.getPayTime(),
                 // 此处使用用户最近一次的重新染色时间
@@ -119,17 +120,16 @@ public class GameOceanengineOrderLogServiceImpl extends ServiceImpl<GameOceaneng
             );
         }
         // 拆单
-        Tuple3<Boolean, Long, List<Tuple2<Long, LocalDateTime>>> splitResult = BackPolicyUtil.splitOrder(gameBackPolicy, backMoney);
-        if (splitResult.first) {
+        if (CollectionUtils.isNotEmpty(backInfo.fourth)) {
             // 需要拆单
-            List<GameOceanengineOrderSplitLog> splitOrderLogList = new ArrayList<>(splitResult.third.size());
-            for (int i = 0; i < splitResult.third.size(); i++) {
-                Tuple2<Long, LocalDateTime> splitOrder = splitResult.third.get(i);
+            List<GameOceanengineOrderSplitLog> splitOrderLogList = new ArrayList<>(backInfo.fourth.size());
+            for (int i = 0; i < backInfo.fourth.size(); i++) {
+                Tuple2<Long, LocalDateTime> splitOrder = backInfo.fourth.get(i);
                 splitOrderLogList.add(GameOceanengineOrderSplitLog.builder()
                         .backDay(splitOrder.second.toLocalDate())
                         .orderNo(orderLog.getOrderNo())
                         .backIndex(i + 1)
-                        .backCount(splitResult.third.size())
+                        .backCount(backInfo.fourth.size())
                         .splitMoney(splitOrder.first)
                         .backTime(splitOrder.second)
                         .backStatus(BackStatusEnum.NO.getBackStatus())
@@ -140,7 +140,7 @@ public class GameOceanengineOrderLogServiceImpl extends ServiceImpl<GameOceaneng
             gameOceanengineOrderSplitLogService.saveBatch(splitOrderLogList);
             return update(new LambdaUpdateWrapper<GameOceanengineOrderLog>()
                     .set(GameOceanengineOrderLog::getBackStatus, BackStatusEnum.NO.getBackStatus())
-                    .set(GameOceanengineOrderLog::getBackMoney, splitResult.second)
+                    .set(GameOceanengineOrderLog::getBackMoney, backInfo.second)
                     .set(GameOceanengineOrderLog::getBackMsg, backMsg)
                     .eq(GameOceanengineOrderLog::getId, orderLog.getId())
             );

+ 9 - 12
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentAppApiOrderServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.sd4324530.jtuple.Tuple2;
 import com.github.sd4324530.jtuple.Tuple3;
+import com.github.sd4324530.jtuple.Tuple4;
 import com.zanxiang.advertising.tencent.base.AdvertisingTencentServer;
 import com.zanxiang.advertising.tencent.base.pojo.dto.DataReportOfAccountIdRpcDTO;
 import com.zanxiang.advertising.tencent.base.pojo.dto.DataReportOfAccountIdV3RpcDTO;
@@ -23,19 +24,16 @@ import com.zanxiang.game.back.serve.pojo.enums.BackStatusEnum;
 import com.zanxiang.game.back.serve.pojo.enums.BackUnitEnum;
 import com.zanxiang.game.back.serve.service.*;
 import com.zanxiang.game.back.serve.utils.BackPolicyUtil;
-import com.zanxiang.module.util.DateUtil;
 import com.zanxiang.module.util.NumberUtil;
 import com.zanxiang.module.util.ObjectUtil;
-import com.zanxiang.module.util.URIUtil;
-import com.zanxiang.module.util.encryption.Md5Util;
 import com.zanxiang.module.util.exception.BaseException;
 import com.zanxiang.module.util.pojo.ResultVO;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.RandomUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.client.RestTemplate;
@@ -88,7 +86,7 @@ implements IGameTencentAppApiOrderService {
         }
 
         GameBackPolicy gameBackPolicy = gameBackPolicyService.getById(orderLog.getBackPolicyId());
-        Tuple3<Boolean, Long, String> backInfo = BackPolicyUtil.backOrder(orderLog.getOrderId(), gameBackPolicy, orderLog.getRechargeMoney(),
+        Tuple4<Boolean, Long, String, List<Tuple2<Long, LocalDateTime>>> backInfo = BackPolicyUtil.backOrder(orderLog.getOrderId(), gameBackPolicy, orderLog.getRechargeMoney(),
                 orderLog.getIsFirstOrder(),
                 orderLog.getPayTime(),
                 // 此处使用用户最近一次的重新染色时间
@@ -107,17 +105,16 @@ implements IGameTencentAppApiOrderService {
             );
         }
         // 拆单
-        Tuple3<Boolean, Long, List<Tuple2<Long, LocalDateTime>>> splitResult = BackPolicyUtil.splitOrder(gameBackPolicy, backMoney);
-        if (splitResult.first) {
+        if (CollectionUtils.isNotEmpty(backInfo.fourth)) {
             // 需要拆单
-            List<GameTencentAppApiOrderSplitLog> splitOrderLogList = new ArrayList<>(splitResult.third.size());
-            for (int i = 0; i < splitResult.third.size(); i++) {
-                Tuple2<Long, LocalDateTime> splitOrder = splitResult.third.get(i);
+            List<GameTencentAppApiOrderSplitLog> splitOrderLogList = new ArrayList<>(backInfo.fourth.size());
+            for (int i = 0; i < backInfo.fourth.size(); i++) {
+                Tuple2<Long, LocalDateTime> splitOrder = backInfo.fourth.get(i);
                 splitOrderLogList.add(GameTencentAppApiOrderSplitLog.builder()
                         .backDay(splitOrder.second.toLocalDate())
                         .orderNo(orderLog.getOrderId())
                         .backIndex(i + 1)
-                        .backCount(splitResult.third.size())
+                        .backCount(backInfo.fourth.size())
                         .splitMoney(splitOrder.first)
                         .backTime(splitOrder.second)
                         .backStatus(BackStatusEnum.NO.getBackStatus())
@@ -127,7 +124,7 @@ implements IGameTencentAppApiOrderService {
             gameTencentAppApiOrderSplitLogService.saveBatch(splitOrderLogList);
             return update(new LambdaUpdateWrapper<GameTencentAppApiOrder>()
                     .set(GameTencentAppApiOrder::getIsBack, BackStatusEnum.NO.getBackStatus())
-                    .set(GameTencentAppApiOrder::getBackMoney, splitResult.second)
+                    .set(GameTencentAppApiOrder::getBackMoney, backInfo.second)
                     .set(GameTencentAppApiOrder::getBackMsg, backMsg)
                     .eq(GameTencentAppApiOrder::getId, orderLog.getId())
             );

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

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.sd4324530.jtuple.Tuple2;
 import com.github.sd4324530.jtuple.Tuple3;
+import com.github.sd4324530.jtuple.Tuple4;
 import com.zanxiang.advertising.tencent.base.AdvertisingTencentServer;
 import com.zanxiang.advertising.tencent.base.rpc.IUserActionSetRpc;
 import com.zanxiang.erp.base.ErpServer;
@@ -110,7 +111,7 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
 
         GameBackPolicy gameBackPolicy = gameBackPolicyService.getById(orderLog.getBackPolicyId());
         // 此处是否是首单用 limit 2。因为在执行判断之前订单已入库,所以库里只有一笔才是首单
-        Tuple3<Boolean, Long, String> backInfo = BackPolicyUtil.backOrder(orderLog.getOrderId(), gameBackPolicy, orderLog.getRechargeMoney(),
+        Tuple4<Boolean, Long, String, List<Tuple2<Long, LocalDateTime>>> backInfo = BackPolicyUtil.backOrder(orderLog.getOrderId(), gameBackPolicy, orderLog.getRechargeMoney(),
                 orderLog.getIsFirstOrder(),
                 orderLog.getPayTime(),
                 // 此处使用用户最近一次的重新染色时间
@@ -130,17 +131,16 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
             );
         }
         // 拆单
-        Tuple3<Boolean, Long, List<Tuple2<Long, LocalDateTime>>> splitResult = BackPolicyUtil.splitOrder(gameBackPolicy, backMoney);
-        if (splitResult.first) {
+        if (CollectionUtils.isNotEmpty(backInfo.fourth)) {
             // 需要拆单
-            List<GameTencentMiniGameOrderSplitLog> splitOrderLogList = new ArrayList<>(splitResult.third.size());
-            for (int i = 0; i < splitResult.third.size(); i++) {
-                Tuple2<Long, LocalDateTime> splitOrder = splitResult.third.get(i);
+            List<GameTencentMiniGameOrderSplitLog> splitOrderLogList = new ArrayList<>(backInfo.fourth.size());
+            for (int i = 0; i < backInfo.fourth.size(); i++) {
+                Tuple2<Long, LocalDateTime> splitOrder = backInfo.fourth.get(i);
                 splitOrderLogList.add(GameTencentMiniGameOrderSplitLog.builder()
                         .backDay(splitOrder.second.toLocalDate())
                         .orderNo(orderLog.getOrderId())
                         .backIndex(i + 1)
-                        .backCount(splitResult.third.size())
+                        .backCount(backInfo.fourth.size())
                         .splitMoney(splitOrder.first)
                         .backTime(splitOrder.second)
                         .backStatus(BackStatusEnum.NO.getBackStatus())
@@ -150,7 +150,7 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
             gameTencentMiniGameOrderSplitLogService.saveBatch(splitOrderLogList);
             return update(new LambdaUpdateWrapper<GameTencentMiniGameOrder>()
                     .set(GameTencentMiniGameOrder::getBackStatus, BackStatusEnum.NO.getBackStatus())
-                    .set(GameTencentMiniGameOrder::getBackMoney, splitResult.second)
+                    .set(GameTencentMiniGameOrder::getBackMoney, backInfo.second)
                     .set(GameTencentMiniGameOrder::getBackMsg, backMsg)
                     .eq(GameTencentMiniGameOrder::getId, orderLog.getId())
             );

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

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.sd4324530.jtuple.Tuple2;
 import com.github.sd4324530.jtuple.Tuple3;
+import com.github.sd4324530.jtuple.Tuple4;
 import com.zanxiang.advertising.tencent.base.AdvertisingTencentServer;
 import com.zanxiang.advertising.tencent.base.pojo.dto.DataReportOfAppIdRpcDTO;
 import com.zanxiang.advertising.tencent.base.pojo.dto.UserActionRpcDTO;
@@ -118,7 +119,7 @@ public class GameTencentOrderServiceImpl extends ServiceImpl<GameTencentOrderMap
         }
 
         GameBackPolicy gameBackPolicy = gameBackPolicyService.getById(orderLog.getBackPolicyId());
-        Tuple3<Boolean, Long, String> backInfo = BackPolicyUtil.backOrder(orderLog.getOrderId(), gameBackPolicy, orderLog.getRechargeMoney(),
+        Tuple4<Boolean, Long, String, List<Tuple2<Long, LocalDateTime>>> backInfo = BackPolicyUtil.backOrder(orderLog.getOrderId(), gameBackPolicy, orderLog.getRechargeMoney(),
                 orderLog.getIsFirstOrder(),
                 orderLog.getPayTime(),
                 // 此处使用用户最近一次的重新染色时间
@@ -137,17 +138,16 @@ public class GameTencentOrderServiceImpl extends ServiceImpl<GameTencentOrderMap
             );
         }
         // 拆单
-        Tuple3<Boolean, Long, List<Tuple2<Long, LocalDateTime>>> splitResult = BackPolicyUtil.splitOrder(gameBackPolicy, backMoney);
-        if (splitResult.first) {
+        if (CollectionUtils.isNotEmpty(backInfo.fourth)) {
             // 需要拆单
-            List<GameTencentOrderSplitLog> splitOrderLogList = new ArrayList<>(splitResult.third.size());
-            for (int i = 0; i < splitResult.third.size(); i++) {
-                Tuple2<Long, LocalDateTime> splitOrder = splitResult.third.get(i);
+            List<GameTencentOrderSplitLog> splitOrderLogList = new ArrayList<>(backInfo.fourth.size());
+            for (int i = 0; i < backInfo.fourth.size(); i++) {
+                Tuple2<Long, LocalDateTime> splitOrder = backInfo.fourth.get(i);
                 splitOrderLogList.add(GameTencentOrderSplitLog.builder()
                         .backDay(splitOrder.second.toLocalDate())
                         .orderNo(orderLog.getOrderId())
                         .backIndex(i + 1)
-                        .backCount(splitResult.third.size())
+                        .backCount(backInfo.fourth.size())
                         .splitMoney(splitOrder.first)
                         .backTime(splitOrder.second)
                         .backStatus(BackStatusEnum.NO.getBackStatus())
@@ -157,7 +157,7 @@ public class GameTencentOrderServiceImpl extends ServiceImpl<GameTencentOrderMap
             gameTencentOrderSplitLogService.saveBatch(splitOrderLogList);
             return update(new LambdaUpdateWrapper<GameTencentOrder>()
                     .set(GameTencentOrder::getIsBack, BackStatusEnum.NO.getBackStatus())
-                    .set(GameTencentOrder::getBackMoney, splitResult.second)
+                    .set(GameTencentOrder::getBackMoney, backInfo.second)
                     .set(GameTencentOrder::getBackMsg, backMsg)
                     .eq(GameTencentOrder::getId, orderLog.getId())
             );

+ 230 - 102
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/utils/BackPolicyUtil.java

@@ -2,13 +2,17 @@ package com.zanxiang.game.back.serve.utils;
 
 import com.github.sd4324530.jtuple.Tuple2;
 import com.github.sd4324530.jtuple.Tuple3;
+import com.github.sd4324530.jtuple.Tuple4;
 import com.github.sd4324530.jtuple.Tuples;
+import com.zanxiang.game.back.serve.pojo.BackPolicyOfSplitLevel;
+import com.zanxiang.game.back.serve.pojo.BackPolicyOfSumRecharge;
 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.GameBackPolicyVO;
 import com.zanxiang.module.util.DateUtil;
 import com.zanxiang.module.util.JsonUtil;
 import com.zanxiang.module.util.NumberUtil;
+import com.zanxiang.module.util.exception.BaseException;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.RandomUtils;
@@ -23,28 +27,205 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
 import java.util.function.Function;
+import java.util.stream.Collectors;
 
 @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};
-
-    static {
-        Arrays.sort(RECHARGE_LEVEL);
-    }
 
     /**
      * 订单回传
      *
      * @return <是否回传,回传金额,回传描述>
      */
-    public static Tuple3<Boolean, Long, String> backOrder(String orderId, GameBackPolicy gameBackPolicy,
-                                                          long rechargeMoney, boolean isFirstOrder,
-                                                          LocalDateTime payTime, LocalDateTime regTime,
-                                                          String userId, IBackPolicyCheck backPolicyCheck) {
+    public static Tuple4<Boolean, Long, String, List<Tuple2<Long, LocalDateTime>>> backOrder(String orderId, GameBackPolicy gameBackPolicy,
+                                                                                             long rechargeMoney, boolean isFirstOrder,
+                                                                                             LocalDateTime payTime, LocalDateTime regTime,
+                                                                                             String userId, IBackPolicyCheck backPolicyCheck) {
         if (null == gameBackPolicy) {
             log.error("订单 id[{}]找不到回传策略,默认回传", orderId);
-            return Tuples.tuple(Boolean.TRUE, rechargeMoney, "没有回传策略");
+            return Tuples.tuple(Boolean.TRUE, rechargeMoney, "没有回传策略", null);
+        }
+        if (gameBackPolicy.getPolicyType() == null || Objects.equals(gameBackPolicy.getPolicyType(), GameBackPolicy.TYPE_DEFAULT)) {
+            Tuple3<Boolean, Long, String> backInfo = policyOfDefault(orderId, gameBackPolicy, rechargeMoney, isFirstOrder, payTime, regTime, userId, backPolicyCheck);
+            if (backInfo.first) {
+                Collection<GameBackPolicyVO.SplitStrategy> splitStrategyList = StringUtils.isBlank(gameBackPolicy.getSplitStrategy()) ? Collections.emptyList() : JsonUtil.toList(gameBackPolicy.getSplitStrategy(), List.class, GameBackPolicyVO.SplitStrategy.class);
+                Tuple3<Boolean, Long, List<Tuple2<Long, LocalDateTime>>> splitInfo = splitOrder(splitStrategyList, backInfo.second);
+                if (splitInfo.first) {
+                    return Tuple4.with(backInfo.first, backInfo.second, backInfo.third, splitInfo.third);
+                } else {
+                    return Tuple4.with(backInfo.first, backInfo.second, backInfo.third, null);
+                }
+            } else {
+                return Tuple4.with(backInfo.first, backInfo.second, backInfo.third, null);
+            }
+        } else if (Objects.equals(gameBackPolicy.getPolicyType(), GameBackPolicy.TYPE_SPLIT_LEVEL)) {
+            // 按策略判断
+            BackPolicyOfSplitLevel policyOfSplitLevel = JsonUtil.toObj(gameBackPolicy.getTypeOfSplitLevelJson(), BackPolicyOfSplitLevel.class);
+            Tuple3<Boolean, Long, String> backInfo = policyOfSplitLevel(orderId, gameBackPolicy.getId(), policyOfSplitLevel, rechargeMoney, isFirstOrder, payTime, regTime, userId, backPolicyCheck);
+
+            if (backInfo.first) {
+                Tuple3<Boolean, Long, List<Tuple2<Long, LocalDateTime>>> splitInfo = splitOrder(policyOfSplitLevel.getSplitStrategy(), backInfo.second);
+                if (splitInfo.first) {
+                    return Tuple4.with(backInfo.first, backInfo.second, backInfo.third, splitInfo.third);
+                } else {
+                    return Tuple4.with(backInfo.first, backInfo.second, backInfo.third, null);
+                }
+            } else {
+                return Tuple4.with(backInfo.first, backInfo.second, backInfo.third, null);
+            }
+        } else if (Objects.equals(gameBackPolicy.getPolicyType(), GameBackPolicy.TYPE_SUM_RECHARGE)) {
+            // 按累充判断
+            BackPolicyOfSumRecharge policyOfSumRecharge = JsonUtil.toObj(gameBackPolicy.getTypeOfSumRechargeJson(), BackPolicyOfSumRecharge.class);
+            return policyOfSumRecharge(orderId, gameBackPolicy.getId(), policyOfSumRecharge, rechargeMoney, isFirstOrder, payTime, regTime, userId, backPolicyCheck);
+        }
+        throw new BaseException("未知的回传策略类型:" + gameBackPolicy.getPolicyType());
+
+    }
+
+    /**
+     * 拆单逻辑
+     */
+    public static Tuple3<Boolean, Long, List<Tuple2<Long, LocalDateTime>>> splitOrder(Collection<GameBackPolicyVO.SplitStrategy> splitStrategyList, Long backMoney) {
+        if (CollectionUtils.isEmpty(splitStrategyList)) {
+            return Tuple3.with(false, backMoney, null);
+        }
+        GameBackPolicyVO.SplitStrategy backSplitStrategy = null;
+        for (GameBackPolicyVO.SplitStrategy splitStrategy : splitStrategyList) {
+            if (NumberUtil.multiply100(splitStrategy.getPayMoney()).longValue() == backMoney) {
+                backSplitStrategy = splitStrategy;
+                break;
+            }
+        }
+        if (backSplitStrategy == null) {
+            return Tuple3.with(false, backMoney, null);
+        }
+        List<Tuple2<Long, LocalDateTime>> result = new ArrayList<>();
+        LocalDateTime beginTime = LocalDateTime.now();
+        long sumMoney = 0L;
+        for (BigDecimal splitMoney : backSplitStrategy.getSplitList()) {
+            long money = NumberUtil.multiply100(splitMoney).longValue();
+            sumMoney += money;
+            result.add(Tuple2.with(money, beginTime));
+            int randomMinute = RandomUtils.nextInt(backSplitStrategy.getBetweenMinuteMin(), backSplitStrategy.getBetweenMinuteMax());
+            beginTime = beginTime.plusMinutes(randomMinute);
+        }
+        return Tuple3.with(true, sumMoney, result);
+    }
+
+    private static Tuple3<Boolean, Long, String> policyOfSplitLevel(String orderId, Long policyId, BackPolicyOfSplitLevel policyOfSplitLevel,
+                                                                    long rechargeMoney, boolean isFirstOrder,
+                                                                    LocalDateTime payTime, LocalDateTime regTime,
+                                                                    String userId, IBackPolicyCheck backPolicyCheck) {
+        BigDecimal rechargeAmount = NumberUtil.divide100(new BigDecimal(rechargeMoney));
+        if (policyOfSplitLevel.getRegPayIntervalTime() != null
+                && ((DateUtil.localDateTimeToSecond(payTime) - DateUtil.localDateTimeToSecond(regTime)) / 60) > policyOfSplitLevel.getRegPayIntervalTime()) {
+            log.error("订单 id[{}]通过回传策略[{}]判断后,超过注册充值间隔时间({}),不回传", orderId, policyId, policyOfSplitLevel.getRegPayIntervalTime());
+            return Tuples.tuple(Boolean.FALSE, rechargeMoney, "超过注册充值间隔时间(" + policyOfSplitLevel.getRegPayIntervalTime() + "),不回传");
+        }
+        if (policyOfSplitLevel.getBackCountOfUser() != null) {
+            long userBackCount = backPolicyCheck.backCountForUser(BackUnitEnum.LARGE_AMOUNT, userId, false);
+            if (userBackCount > policyOfSplitLevel.getBackCountOfUser()) {
+                return Tuples.tuple(Boolean.FALSE, rechargeMoney, "单用户最大回传 " + policyOfSplitLevel.getBackCountOfUser() + "笔,当前已回传 " + userBackCount + "笔");
+            }
+        }
+        BackPolicyOfSplitLevel.RechargeLevel rechargeLevel = null;
+        for (BackPolicyOfSplitLevel.RechargeLevel item : policyOfSplitLevel.getRechargeLevelList()) {
+            if (rechargeAmount.compareTo(item.getMinAmount()) >= 0 && rechargeAmount.compareTo(item.getMaxAmount()) < 0) {
+                rechargeLevel = item;
+                break;
+            }
+        }
+        if (rechargeLevel == null) {
+            log.error("订单 id[{}]通过回传策略[{}]判断后,找不到对应的充值挡位,不回传", orderId, policyId);
+            return Tuples.tuple(Boolean.FALSE, rechargeMoney, "充值金额(" + rechargeAmount + ")未找到对应的挡位,默认不回传");
+        }
+        if (Objects.equals(rechargeLevel.getBackType(), GameBackPolicy.POLICY_TYPE_FIXED_RATE)) {
+            // 固定比例回传
+            String[] temp = rechargeLevel.getBackRate().split(":");
+            int backCount = Integer.parseInt(temp[0]);
+            int ignoreCount = Integer.parseInt(temp[1]);
+            if (backCount == 0) {
+                String backMsg = "按比例回传,回传比例为 0,全部不回传";
+                log.error("订单 id[{}]通过回传策略[{}]判断后,不回传,原因:{}", orderId, policyId, backMsg);
+                return Tuples.tuple(Boolean.FALSE, rechargeMoney, backMsg);
+            }
+            if (ignoreCount == 0) {
+                String backMsg = "按比例回传,忽略比例为 0,全部回传";
+                log.error("订单 id[{}]通过回传策略[{}]判断后,回传,原因:{}", orderId, policyId, backMsg);
+                return Tuples.tuple(Boolean.TRUE, downLevel(rechargeMoney, policyOfSplitLevel.getDownLevel()), backMsg);
+            }
+            long isBackCount = backPolicyCheck.backCountForFixedRate(backCount + ignoreCount, BackUnitEnum.LARGE_AMOUNT, false);
+            String backMsg = "按比例回传,每 " + (backCount + ignoreCount) + "笔回传 " + backCount + "笔,当前第 " + (isBackCount + 1) + "笔";
+            if (isBackCount >= backCount) {
+                log.error("订单 id[{}]通过回传策略[{}]判断后,不回传,原因:{}", orderId, policyId, backMsg);
+                return Tuples.tuple(Boolean.FALSE, downLevel(rechargeMoney, policyOfSplitLevel.getDownLevel()), backMsg);
+            } else {
+                log.error("订单 id[{}]通过回传策略[{}]判断后,回传,原因:{}", orderId, policyId, backMsg);
+                return Tuples.tuple(Boolean.TRUE, downLevel(rechargeMoney, policyOfSplitLevel.getDownLevel()), backMsg);
+            }
+        } else if (Objects.equals(rechargeLevel.getBackType(), GameBackPolicy.POLICY_TYPE_RANDOM_RATE)) {
+            // 随机概率回传
+            boolean isBack = RandomUtils.nextInt(0, 100) < NumberUtil.multiply100(new BigDecimal(rechargeLevel.getBackRate())).intValue();
+            String backMsg = "随机概率回传(" + NumberUtil.multiply100(new BigDecimal(rechargeLevel.getBackRate())) + "%)";
+            if (!isBack) {
+                log.error("订单 id[{}]通过回传策略[{}]判断后,不回传,原因:{}", orderId, policyId, backMsg);
+                return Tuples.tuple(Boolean.FALSE, downLevel(rechargeMoney, policyOfSplitLevel.getDownLevel()), backMsg);
+            } else {
+                log.error("订单 id[{}]通过回传策略[{}]判断后,回传,原因:{}", orderId, policyId, backMsg);
+                return Tuples.tuple(Boolean.TRUE, downLevel(rechargeMoney, policyOfSplitLevel.getDownLevel()), backMsg);
+            }
+        } else {
+            throw new RuntimeException("回传策略[" + policyId + "]配置错误,未知的回传类型:" + rechargeLevel.getBackType());
+        }
+
+    }
+
+    private static Tuple4<Boolean, Long, String, List<Tuple2<Long, LocalDateTime>>> policyOfSumRecharge(String orderId, Long policyId, BackPolicyOfSumRecharge policyOfSumRecharge,
+                                                                                                        long rechargeMoney, boolean isFirstOrder,
+                                                                                                        LocalDateTime payTime, LocalDateTime regTime,
+                                                                                                        String userId, IBackPolicyCheck backPolicyCheck) {
+        BigDecimal rechargeAmount = NumberUtil.divide100(new BigDecimal(rechargeMoney));
+        if (policyOfSumRecharge.getRegPayIntervalTime() != null
+                && ((DateUtil.localDateTimeToSecond(payTime) - DateUtil.localDateTimeToSecond(regTime)) / 60) > policyOfSumRecharge.getRegPayIntervalTime()) {
+            log.error("订单 id[{}]通过回传策略[{}]判断后,超过注册充值间隔时间({}),不回传", orderId, policyId, policyOfSumRecharge.getRegPayIntervalTime());
+            return Tuples.tuple(Boolean.FALSE, rechargeMoney, "超过注册充值间隔时间(" + policyOfSumRecharge.getRegPayIntervalTime() + "),不回传", null);
+        }
+        BackPolicyOfSumRecharge.RechargeLevel rechargeLevel = null;
+        for (BackPolicyOfSumRecharge.RechargeLevel item : policyOfSumRecharge.getRechargeLevelList()) {
+            if (rechargeAmount.compareTo(item.getMinAmount()) >= 0 && rechargeAmount.compareTo(item.getMaxAmount()) < 0) {
+                rechargeLevel = item;
+                break;
+            }
+        }
+        if (rechargeLevel == null) {
+            log.error("订单 id[{}]通过回传策略[{}]判断后,找不到对应的累充挡位,不回传", orderId, policyId);
+            return Tuples.tuple(Boolean.FALSE, rechargeMoney, "充值金额(" + rechargeAmount + ")未找到对应的挡位,默认不回传", null);
+        }
+        Tuple2<Long, Long> backInfo = backPolicyCheck.backCountForUserWithSplitOrder(userId);
+        if (rechargeLevel.getBackCountOfUser() <= backInfo.first) {
+            log.error("订单 id[{}]通过回传策略[{}]判断后,已达到回传的订单数,不回传", orderId, policyId);
+            return Tuples.tuple(Boolean.FALSE, rechargeMoney, "充值金额(" + rechargeAmount + ")已达到回传的订单数(已回传:" + backInfo.first + "笔,当前挡位:" + rechargeLevel.getBackCountOfUser() + "笔),不回传", null);
         }
+
+        long backCount = rechargeLevel.getBackCountOfUser() - backInfo.first;
+        long backMoney = backInfo.second - NumberUtil.multiply100(rechargeLevel.getMinAmount()).longValue();
+        if (backMoney <= 0) {
+            // 最低回传一分钱
+            backMoney = 1;
+        }
+        List<Tuple2<Long, LocalDateTime>> splitOrder = new ArrayList<>();
+        for (int i = 0; i < backCount; i++) {
+            splitOrder.add(Tuple2.with(backMoney, LocalDateTime.now()));
+        }
+        String backMsg = "充值金额(" + rechargeAmount + ") 已回传:" + backInfo.first + "笔,当前挡位:" + rechargeLevel.getBackCountOfUser() + "笔,回传(" + backCount + "-" + backMoney + ")笔";
+        log.error("订单 id[{}]通过回传策略[{}]判断后,回传。回传日志:{}", orderId, policyId, backMsg);
+        return Tuples.tuple(Boolean.TRUE, rechargeMoney, backMsg, splitOrder);
+    }
+
+    private static Tuple3<Boolean, Long, String> policyOfDefault(String orderId, GameBackPolicy gameBackPolicy,
+                                                                 long rechargeMoney, boolean isFirstOrder,
+                                                                 LocalDateTime payTime, LocalDateTime regTime,
+                                                                 String userId, IBackPolicyCheck backPolicyCheck) {
         if (gameBackPolicy.getSupperSmallAmount() != null && gameBackPolicy.getSupperSmallAmount() >= rechargeMoney) {
             log.error("订单 id[{}]被判定为超小额订单({}),默认不回传", orderId, gameBackPolicy.getSupperSmallAmount());
             return Tuples.tuple(Boolean.FALSE, rechargeMoney, "超小额订单(<=" + gameBackPolicy.getSupperSmallAmount() + "),不回传");
@@ -64,6 +245,9 @@ public class BackPolicyUtil {
                 && ((DateUtil.localDateTimeToSecond(payTime) - DateUtil.localDateTimeToSecond(regTime)) / 60) > gameBackPolicy.getRegPayIntervalTime()) {
             // 补单
             log.error("订单 id[{}]通过回传策略[{}]判断后,超过注册充值间隔时间,走补单逻辑 {}, money: {}.", orderId, gameBackPolicy.getId(), gameBackPolicy.getRegPayIntervalTime(), totalRechargeAmount);
+
+            List<GameBackPolicyVO.PolicyDownLevel> downLevels = StringUtils.isEmpty(gameBackPolicy.getMarkUpDownLevel()) ? Collections.emptyList()
+                    : Arrays.stream(gameBackPolicy.getMarkUpDownLevel().split(",")).map(BackPolicyUtil::transformDownLevel).collect(Collectors.toList());
             if (gameBackPolicy.getMarkUpOrder() != null && gameBackPolicy.getMarkUpOrder()) {
                 long money = backUnit == BackUnitEnum.LARGE_AMOUNT ? totalRechargeAmount : rechargeMoney;
                 markUpTime = gameBackPolicy.getRegPayIntervalTime();
@@ -87,17 +271,17 @@ public class BackPolicyUtil {
                     int ignoreCount = Integer.parseInt(temp[1]);
                     if (backCount == 0) {
                         log.error("订单 id[{}]通过回传策略[{}]判断后,不回传,原因:回传比例 {}", orderId, gameBackPolicy.getId(), backRate);
-                        return Tuples.tuple(Boolean.FALSE, downLevel(rechargeMoney, gameBackPolicy.getMarkUpDownLevel()), "补单-按比例回传,回传比例为 0,全部不回传");
+                        return Tuples.tuple(Boolean.FALSE, downLevel(rechargeMoney, downLevels), "补单-按比例回传,回传比例为 0,全部不回传");
                     }
                     if (ignoreCount == 0) {
                         log.error("订单 id[{}]通过回传策略[{}]判断后,回传,原因:回传比例 {}", orderId, gameBackPolicy.getId(), backRate);
-                        return Tuples.tuple(Boolean.TRUE, downLevel(rechargeMoney, gameBackPolicy.getMarkUpDownLevel()), "补单-按比例回传,忽略比例为 0,全部回传");
+                        return Tuples.tuple(Boolean.TRUE, downLevel(rechargeMoney, downLevels), "补单-按比例回传,忽略比例为 0,全部回传");
                     }
                     long isBackCount = backPolicyCheck.markUpOfFixedRate(backCount + ignoreCount, markUpTime);
                     backMsg = "补单-按比例回传,每 " + (backCount + ignoreCount) + "笔回传 " + backCount + "笔,当前第 " + (isBackCount + 1) + "笔";
                     if (isBackCount >= backCount) {
                         log.error("订单 id[{}]通过回传策略[{}]判断后,不回传,原因:{}", orderId, gameBackPolicy.getId(), backMsg);
-                        return Tuples.tuple(Boolean.FALSE, downLevel(rechargeMoney, gameBackPolicy.getMarkUpDownLevel()), backMsg);
+                        return Tuples.tuple(Boolean.FALSE, downLevel(rechargeMoney, downLevels), backMsg);
                     }
                 } else if (Objects.equals(backType, GameBackPolicy.POLICY_TYPE_RANDOM_RATE)) {
                     // 随机概率回传
@@ -105,22 +289,22 @@ public class BackPolicyUtil {
                     backMsg = "补单-随机概率回传(" + NumberUtil.multiply100(new BigDecimal(backRate)) + "%)";
                     if (!isBack) {
                         log.error("订单 id[{}]通过回传策略[{}]判断后,不回传,原因:{}", orderId, gameBackPolicy.getId(), backMsg);
-                        return Tuples.tuple(Boolean.FALSE, downLevel(rechargeMoney, gameBackPolicy.getMarkUpDownLevel()), backMsg);
+                        return Tuples.tuple(Boolean.FALSE, downLevel(rechargeMoney, downLevels), backMsg);
                     }
                 } else {
                     throw new RuntimeException("回传策略[" + gameBackPolicy.getId() + "]配置错误,未知的回传类型:" + backType);
                 }
                 if (gameBackPolicy.getMarkUpBackCountOfUser() == null) {
                     log.error("订单 id[{}]通过回传策略[{}]判断后,回传,原因:回传概率 {}", orderId, gameBackPolicy.getId(), backMsg);
-                    return Tuples.tuple(Boolean.TRUE, downLevel(rechargeMoney, gameBackPolicy.getMarkUpDownLevel()), backMsg);
+                    return Tuples.tuple(Boolean.TRUE, downLevel(rechargeMoney, downLevels), backMsg);
                 }
                 long userBackCount = backPolicyCheck.markUpForUser(userId, markUpTime);
                 backMsg = backMsg + ",单用户最大回传 " + gameBackPolicy.getMarkUpBackCountOfUser() + "笔,当前已回传 " + userBackCount + "笔";
                 log.error("订单 id[{}]通过回传策略[{}]判断后,是否回传:{},原因:{}", orderId, gameBackPolicy.getId(), userBackCount < gameBackPolicy.getMarkUpBackCountOfUser(), backMsg);
-                return Tuples.tuple(userBackCount < gameBackPolicy.getMarkUpBackCountOfUser(), downLevel(rechargeMoney, gameBackPolicy.getMarkUpDownLevel()), backMsg);
+                return Tuples.tuple(userBackCount < gameBackPolicy.getMarkUpBackCountOfUser(), downLevel(rechargeMoney, downLevels), backMsg);
             } else {
                 log.error("订单 id[{}]通过回传策略[{}]判断后,不回传,原因:超过注册充值间隔时间但是未开启补单", orderId, gameBackPolicy.getId());
-                return Tuples.tuple(Boolean.FALSE, downLevel(rechargeMoney, gameBackPolicy.getMarkUpDownLevel()), "补单-未开启补单");
+                return Tuples.tuple(Boolean.FALSE, downLevel(rechargeMoney, downLevels), "补单-未开启补单");
             }
         }
 
@@ -176,6 +360,8 @@ public class BackPolicyUtil {
         Integer maxBackCountOfUser = firstPolicy ? gameBackPolicy.getFirstBackCountOfUser() : gameBackPolicy.getRechargeBackCountOfUser();
         String backMsg = firstPolicy ? "首-" : "次-";
         String downLevelString = firstPolicy ? gameBackPolicy.getFirstDownLevel() : gameBackPolicy.getRechargeDownLevel();
+        List<GameBackPolicyVO.PolicyDownLevel> downLevels = StringUtils.isEmpty(downLevelString) ? Collections.emptyList()
+                : Arrays.stream(downLevelString.split(",")).map(BackPolicyUtil::transformDownLevel).collect(Collectors.toList());
         if (Objects.equals(backType, GameBackPolicy.POLICY_TYPE_FIXED_RATE)) {
             // 固定比例回传
             String[] temp = backRate.split(":");
@@ -184,18 +370,18 @@ public class BackPolicyUtil {
             if (backCount == 0) {
                 backMsg = backMsg + "按比例回传,回传比例为 0,全部不回传";
                 log.error("订单 id[{}]通过回传策略[{}]判断后,不回传,原因:{}", orderId, gameBackPolicy.getId(), backMsg);
-                return Tuples.tuple(Boolean.FALSE, downLevel(rechargeMoney, downLevelString), backMsg);
+                return Tuples.tuple(Boolean.FALSE, downLevel(rechargeMoney, downLevels), backMsg);
             }
             if (ignoreCount == 0) {
                 backMsg = backMsg + "按比例回传,忽略比例为 0,全部回传";
                 log.error("订单 id[{}]通过回传策略[{}]判断后,回传,原因:{}", orderId, gameBackPolicy.getId(), backMsg);
-                return Tuples.tuple(Boolean.TRUE, downLevel(rechargeMoney, downLevelString), backMsg);
+                return Tuples.tuple(Boolean.TRUE, downLevel(rechargeMoney, downLevels), backMsg);
             }
             long isBackCount = backPolicyCheck.backCountForFixedRate(backCount + ignoreCount, backUnit, firstPolicy);
             backMsg = backMsg + "按比例回传,每 " + (backCount + ignoreCount) + "笔回传 " + backCount + "笔,当前第 " + (isBackCount + 1) + "笔";
             if (isBackCount >= backCount) {
                 log.error("订单 id[{}]通过回传策略[{}]判断后,不回传,原因:{}", orderId, gameBackPolicy.getId(), backMsg);
-                return Tuples.tuple(Boolean.FALSE, downLevel(rechargeMoney, downLevelString), backMsg);
+                return Tuples.tuple(Boolean.FALSE, downLevel(rechargeMoney, downLevels), backMsg);
             }
         } else if (Objects.equals(backType, GameBackPolicy.POLICY_TYPE_RANDOM_RATE)) {
             // 随机概率回传
@@ -203,7 +389,7 @@ public class BackPolicyUtil {
             backMsg = backMsg + "随机概率回传(" + NumberUtil.multiply100(new BigDecimal(backRate)) + "%)";
             if (!isBack) {
                 log.error("订单 id[{}]通过回传策略[{}]判断后,不回传,原因:{}", orderId, gameBackPolicy.getId(), backMsg);
-                return Tuples.tuple(Boolean.FALSE, downLevel(rechargeMoney, downLevelString), backMsg);
+                return Tuples.tuple(Boolean.FALSE, downLevel(rechargeMoney, downLevels), backMsg);
             }
         } else {
             throw new RuntimeException("回传策略[" + gameBackPolicy.getId() + "]配置错误,未知的回传类型:" + backType);
@@ -211,100 +397,34 @@ public class BackPolicyUtil {
 
         if (maxBackCountOfUser == null) {
             log.error("订单 id[{}]通过回传策略[{}]判断后,回传,原因:回传概率 {}", orderId, gameBackPolicy.getId(), backMsg);
-            return Tuples.tuple(Boolean.TRUE, downLevel(rechargeMoney, downLevelString), backMsg);
+            return Tuples.tuple(Boolean.TRUE, downLevel(rechargeMoney, downLevels), backMsg);
         }
         long userBackCount = backPolicyCheck.backCountForUser(backUnit, userId, firstPolicy);
         backMsg = backMsg + ",单用户最大回传 " + maxBackCountOfUser + "笔,当前已回传 " + userBackCount + "笔";
         log.error("订单 id[{}]通过回传策略[{}]判断后,是否回传:{},原因:{}", orderId, gameBackPolicy.getId(), userBackCount < maxBackCountOfUser, backMsg);
-        return Tuples.tuple(userBackCount < maxBackCountOfUser, downLevel(rechargeMoney, downLevelString), backMsg);
-    }
-
-    /**
-     * 拆单逻辑
-     */
-    public static Tuple3<Boolean, Long, List<Tuple2<Long, LocalDateTime>>> splitOrder(GameBackPolicy gameBackPolicy, Long backMoney) {
-        if (gameBackPolicy == null || StringUtils.isBlank(gameBackPolicy.getSplitStrategy())) {
-            return Tuple3.with(false, backMoney, null);
-        }
-        Collection<GameBackPolicyVO.SplitStrategy> splitStrategyList = JsonUtil.toList(gameBackPolicy.getSplitStrategy(), List.class, GameBackPolicyVO.SplitStrategy.class);
-        if (CollectionUtils.isEmpty(splitStrategyList)) {
-            return Tuple3.with(false, backMoney, null);
-        }
-        GameBackPolicyVO.SplitStrategy backSplitStrategy = null;
-        for (GameBackPolicyVO.SplitStrategy splitStrategy : splitStrategyList) {
-            if (NumberUtil.multiply100(splitStrategy.getPayMoney()).longValue() == backMoney) {
-                backSplitStrategy = splitStrategy;
-                break;
-            }
-        }
-        if (backSplitStrategy == null) {
-            return Tuple3.with(false, backMoney, null);
-        }
-        List<Tuple2<Long, LocalDateTime>> result = new ArrayList<>();
-        LocalDateTime beginTime = LocalDateTime.now();
-        long sumMoney = 0L;
-        for (BigDecimal splitMoney : backSplitStrategy.getSplitList()) {
-            long money = NumberUtil.multiply100(splitMoney).longValue();
-            sumMoney += money;
-            result.add(Tuple2.with(money, beginTime));
-            int randomMinute = RandomUtils.nextInt(backSplitStrategy.getBetweenMinuteMin(), backSplitStrategy.getBetweenMinuteMax());
-            beginTime = beginTime.plusMinutes(randomMinute);
-        }
-        return Tuple3.with(true, sumMoney, result);
+        return Tuples.tuple(userBackCount < maxBackCountOfUser, downLevel(rechargeMoney, downLevels), backMsg);
     }
 
-    private static Long downLevel(Long rechargeMoney, String downLevelStr) {
-        if (StringUtils.isBlank(downLevelStr)) {
+    private static Long downLevel(Long rechargeMoney, List<GameBackPolicyVO.PolicyDownLevel> downLevels) {
+        if (CollectionUtils.isEmpty(downLevels)) {
             return rechargeMoney;
         }
-        String[] downLevelList = downLevelStr.split(",");
-        for (String downLevel : downLevelList) {
-            String[] tmp = downLevel.split("_");
-            long minMoney = Long.parseLong(tmp[0]);
-            long maxMoney = Long.parseLong(tmp[1]);
-            Long backMoney = Long.parseLong(tmp[2]);
-            if (rechargeMoney >= minMoney && rechargeMoney <= maxMoney) {
-                return backMoney;
+        BigDecimal rechargeAmount = NumberUtil.divide100(new BigDecimal(rechargeMoney));
+        for (GameBackPolicyVO.PolicyDownLevel downLevel : downLevels) {
+            if (rechargeAmount.compareTo(downLevel.getMinMoney()) >= 0 && rechargeAmount.compareTo(downLevel.getMaxMoney()) <= 0) {
+                return NumberUtil.multiply100(downLevel.getBackMoney()).longValue();
             }
         }
         return rechargeMoney;
     }
 
-    private static Tuple2<Integer, Integer> approximate(int molecular, int denominator) {
-        if (molecular % denominator == 0) {
-            int temp = molecular / denominator;
-            return Tuples.tuple(temp, temp);
-        }
-        int model = 2;
-        do {
-            if (molecular % model == 0 && denominator % model == 0) {
-                molecular = molecular / model;
-                denominator = denominator / model;
-                continue;
-            }
-            model++;
-        } while (model <= denominator / 2);
-        return Tuples.tuple(molecular, denominator);
-    }
-
-    /**
-     * 降档
-     */
-    public static long lowRechargeLevel(long rechargeMoney, String levelDownStr) {
-        if (StringUtils.isBlank(levelDownStr)) {
-            // 无需降档
-            return rechargeMoney;
-        }
-        String[] levelDownStrList = levelDownStr.split(",");
-        for (String levelDown : levelDownStrList) {
-            String[] tmp = levelDown.split("_");
-            long min = Long.parseLong(tmp[0]), max = Long.parseLong(tmp[1]), back = Long.parseLong(tmp[2]);
-            if (rechargeMoney >= min && rechargeMoney <= max) {
-                return back;
-            }
-        }
-        // 没有匹配金额规则,直接返回
-        return rechargeMoney;
+    private static GameBackPolicyVO.PolicyDownLevel transformDownLevel(String downLevel) {
+        String[] tmp = downLevel.split("_");
+        return GameBackPolicyVO.PolicyDownLevel.builder()
+                .minMoney(NumberUtil.divide100(new BigDecimal(Long.parseLong(tmp[0]))))
+                .maxMoney(NumberUtil.divide100(new BigDecimal(Long.parseLong(tmp[1]))))
+                .backMoney(NumberUtil.divide100(new BigDecimal(Long.parseLong(tmp[2]))))
+                .build();
     }
 
     public interface IBackPolicyCheck {
@@ -332,5 +452,13 @@ public class BackPolicyUtil {
          * 获取用户的累充金额
          */
         Long totalRechargeAmount();
+
+        /**
+         * 单个用户已回传订单数(包含拆单的订单数)
+         * Tuple2<回传订单数、回传金额>
+         */
+        default Tuple2<Long, Long> backCountForUserWithSplitOrder(String userId) {
+            throw new RuntimeException("暂不支持!!");
+        }
     }
 }

+ 0 - 5
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/component/DataPowerComponent.java

@@ -61,13 +61,8 @@ public class DataPowerComponent {
             return Tuple2.with(new ArrayList<>(subUserIds), null);
         }
         GameAuthUserVO userGameInfo = gameAuthRpc.getGameAuthByUserIds().getData();
-        log.error("11111, userId :{}, userGameInfo : {}", SecurityUtil.getUserId(), JsonUtil.toString(userGameInfo));
-        List<Long> gameIdList = userGameInfo.getGameIdList();
-//        String str = gameIdList.stream().map(String::valueOf).collect(Collectors.joining(","));
         //原有的游戏ID添加通包游戏的权限
         List<Long> gameIds = getFullGameIdList(userGameInfo.getGameIdList());
-//        String strIds = gameIds.stream().map(String::valueOf).collect(Collectors.joining(","));
-        log.error("22222, userId :{},gameIds : {}",SecurityUtil.getUserId(), JsonUtil.toString(gameIds));
         if (CollectionUtils.isEmpty(gameIds)) {
             throw new BaseException("没有游戏查看权限,请联系管理员指派游戏权限");
         }

+ 16 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/GameDataController.java

@@ -139,6 +139,20 @@ public class GameDataController {
         return ResultVO.ok(activeDataService.getActiveDataTotal(dto));
     }
 
+
+    @ApiOperation(value = "游戏媒体留存数据")
+    @PreAuthorize(permissionKey = "gameData:media:activeDay")
+    @PostMapping("/mediaActiveData/day")
+    public ResultVO<Page<MediaActiveDataDayVO>> getMediaActiveDataDay(@RequestBody MediaActiveDataDayDTO dto) {
+        return ResultVO.ok(activeDataService.getMediaActiveDataDay(dto));
+    }
+
+    @ApiOperation(value = "游戏媒体留存数据总计")
+    @PreAuthorize(permissionKey = "gameData:media:activeTotal")
+    @PostMapping("/mediaActiveData/total")
+    public ResultVO<MediaActiveDataTotalVO> getMediaActiveDataTotal(@RequestBody MediaActiveDataDayDTO dto) {
+        return ResultVO.ok(activeDataService.getMediaActiveDataTotal(dto));
+    }
     @ApiOperation(value = "流水监控")
     @PreAuthorize(permissionKey = "gameData:flow:monitor")
     @PostMapping("/flow/monitor")
@@ -155,4 +169,6 @@ public class GameDataController {
 
 
 
+
+
 }

+ 58 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/MediaActiveDataDayDTO.java

@@ -0,0 +1,58 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+import com.zanxiang.game.data.serve.pojo.base.BasePage;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * packageName com.zanxiang.game.data.serve.pojo.dto
+ *
+ * @author ZhangXianyu
+ * @date 2024/9/2
+ * @description 游戏媒体留存数据DTO
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class MediaActiveDataDayDTO extends BasePage {
+
+    @ApiModelProperty(notes = "游戏ID")
+    private List<Long> gameId;
+
+    @ApiModelProperty(notes = "游戏类别")
+    private Long classify;
+
+    @ApiModelProperty(value = "SDK来源")
+    private String sourceSystem;
+
+    @ApiModelProperty(notes = "注册开始时间")
+    private LocalDate registeredBeginDate;
+
+    @ApiModelProperty(notes = "注册结束时间")
+    private LocalDate registeredEndDate;
+
+    @ApiModelProperty(notes = """
+            选择留存数据的类型:reg -> 注册留存 ; role -> 角色留存 ; amount -> 付费留存
+            """)
+    private String activeTypes;
+
+    @ApiModelProperty(notes = "排序字段")
+    private String sortFiled;
+
+    @ApiModelProperty(notes = "排序方式:升序asc;降序desc")
+    private String sortType;
+
+    @ApiModelProperty(notes = "游戏维度:1-子游戏维度;2-父游戏维度")
+        private Long gameDimension = 1L;
+
+    @ApiModelProperty(value = "媒体类型")
+    private String accountType;
+
+}

+ 1852 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsGameMediaActiveOrderDay.java

@@ -0,0 +1,1852 @@
+package com.zanxiang.game.data.serve.pojo.entity;
+
+import lombok.Data;
+import org.nutz.dao.entity.annotation.Column;
+import org.nutz.dao.entity.annotation.PK;
+import org.nutz.dao.entity.annotation.Table;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+@Data
+@Table(AdsGameMediaActiveOrderDay.TABLE_NAME)
+@PK({"dt", "gameId", "sourceSystem"})
+public class AdsGameMediaActiveOrderDay implements Serializable {
+    private static final long serialVersionUID = 1L;
+    public static final String TABLE_NAME = "ads_game_type_active_order_day";
+     
+    /**
+    * 用户注册时间
+    */
+    private LocalDate dt;
+
+    /**
+     * 媒体类型
+     */
+    private String accountType;
+    
+    /**
+    * SDK来源
+    */
+    private String sourceSystem;
+    
+    /**
+    * 游戏ID
+    */
+    private Long gameId;
+    
+    /**
+    * 游戏名称
+    */    
+    @Column
+    private String gameName;
+    
+    /**
+    * 游戏类别
+    */    
+    @Column
+    private Long gameClassify;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da1;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da2;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da3;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da13;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da14;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da15;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da16;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da17;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da18;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da19;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da20;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da21;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da22;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da23;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da24;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da25;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da26;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da27;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da28;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da29;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da30;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da31;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da32;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da33;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da34;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da35;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da36;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da37;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da38;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da39;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da40;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da41;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da42;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da43;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da44;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da45;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da46;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da47;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da48;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da49;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da50;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da51;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da52;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da53;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da54;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da55;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da56;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da57;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da58;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da59;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da60;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da61;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da62;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da63;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da64;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da65;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da66;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da67;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da68;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da69;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da70;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da71;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da72;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da73;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da74;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da75;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da76;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da77;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da78;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da79;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da80;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da81;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da82;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da83;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da84;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da85;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da86;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da87;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da88;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da89;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da90;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String total;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa1;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa2;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa3;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa13;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa14;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa15;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa16;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa17;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa18;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa19;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa20;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa21;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa22;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa23;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa24;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa25;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa26;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa27;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa28;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa29;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa30;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa31;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa32;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa33;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa34;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa35;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa36;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa37;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa38;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa39;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa40;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa41;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa42;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa43;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa44;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa45;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa46;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa47;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa48;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa49;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa50;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa51;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa52;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa53;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa54;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa55;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa56;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa57;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa58;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa59;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa60;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa61;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa62;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa63;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa64;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa65;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa66;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa67;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa68;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa69;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa70;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa71;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa72;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa73;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa74;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa75;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa76;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa77;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa78;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa79;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa80;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa81;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa82;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa83;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa84;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa85;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa86;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa87;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa88;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa89;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa90;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyTotal;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa1;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa2;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa3;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa13;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa14;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa15;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa16;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa17;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa18;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa19;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa20;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa21;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa22;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa23;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa24;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa25;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa26;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa27;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa28;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa29;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa30;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa31;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa32;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa33;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa34;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa35;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa36;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa37;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa38;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa39;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa40;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa41;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa42;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa43;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa44;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa45;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa46;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa47;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa48;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa49;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa50;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa51;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa52;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa53;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa54;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa55;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa56;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa57;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa58;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa59;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa60;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa61;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa62;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa63;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa64;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa65;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa66;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa67;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa68;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa69;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa70;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa71;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa72;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa73;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa74;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa75;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa76;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa77;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa78;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa79;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa80;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa81;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa82;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa83;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa84;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa85;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa86;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa87;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa88;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa89;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa90;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureTotal;
+
+}
+
+

+ 1849 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsGameMediaActiveOrderDayParent.java

@@ -0,0 +1,1849 @@
+package com.zanxiang.game.data.serve.pojo.entity;
+
+import lombok.Data;
+import org.nutz.dao.entity.annotation.Column;
+import org.nutz.dao.entity.annotation.PK;
+import org.nutz.dao.entity.annotation.Table;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+@Data
+@Table(AdsGameMediaActiveOrderDayParent.TABLE_NAME)
+@PK({"dt", "gameId", "sourceSystem"})
+public class AdsGameMediaActiveOrderDayParent implements Serializable {
+    private static final long serialVersionUID = 1L;
+    public static final String TABLE_NAME = "game_ads_parent.ads_game_type_active_order_day_parent";
+     
+    /**
+    * 用户注册时间
+    */
+    private LocalDate dt;
+
+    /**
+     * 媒体类型
+     */
+    private String accountType;
+    
+    /**
+    * SDK来源
+    */
+    private String sourceSystem;
+
+    private Long gameId;
+
+    /**
+     * 游戏名称
+     */
+    @Column
+    private String parentGameName;
+
+    /**
+     * 游戏类别
+     */
+    @Column
+    private Long parentGameClassify;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da1;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da2;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da3;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da13;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da14;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da15;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da16;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da17;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da18;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da19;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da20;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da21;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da22;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da23;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da24;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da25;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da26;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da27;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da28;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da29;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da30;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da31;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da32;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da33;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da34;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da35;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da36;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da37;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da38;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da39;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da40;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da41;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da42;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da43;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da44;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da45;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da46;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da47;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da48;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da49;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da50;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da51;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da52;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da53;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da54;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da55;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da56;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da57;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da58;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da59;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da60;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da61;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da62;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da63;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da64;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da65;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da66;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da67;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da68;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da69;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da70;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da71;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da72;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da73;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da74;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da75;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da76;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da77;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da78;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da79;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da80;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da81;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da82;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da83;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da84;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da85;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da86;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da87;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da88;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da89;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da90;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String total;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa1;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa2;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa3;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa13;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa14;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa15;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa16;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa17;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa18;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa19;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa20;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa21;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa22;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa23;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa24;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa25;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa26;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa27;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa28;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa29;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa30;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa31;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa32;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa33;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa34;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa35;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa36;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa37;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa38;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa39;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa40;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa41;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa42;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa43;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa44;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa45;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa46;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa47;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa48;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa49;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa50;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa51;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa52;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa53;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa54;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa55;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa56;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa57;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa58;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa59;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa60;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa61;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa62;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa63;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa64;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa65;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa66;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa67;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa68;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa69;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa70;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa71;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa72;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa73;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa74;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa75;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa76;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa77;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa78;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa79;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa80;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa81;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa82;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa83;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa84;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa85;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa86;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa87;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa88;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa89;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa90;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyTotal;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa1;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa2;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa3;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa13;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa14;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa15;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa16;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa17;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa18;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa19;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa20;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa21;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa22;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa23;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa24;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa25;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa26;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa27;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa28;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa29;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa30;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa31;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa32;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa33;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa34;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa35;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa36;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa37;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa38;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa39;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa40;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa41;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa42;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa43;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa44;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa45;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa46;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa47;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa48;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa49;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa50;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa51;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa52;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa53;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa54;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa55;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa56;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa57;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa58;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa59;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa60;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa61;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa62;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa63;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa64;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa65;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa66;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa67;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa68;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa69;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa70;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa71;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa72;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa73;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa74;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa75;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa76;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa77;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa78;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa79;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa80;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa81;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa82;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa83;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa84;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa85;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa86;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa87;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa88;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa89;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa90;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureTotal;
+
+}
+
+

+ 1858 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsGameMediaActiveRegDay.java

@@ -0,0 +1,1858 @@
+package com.zanxiang.game.data.serve.pojo.entity;
+
+import lombok.Data;
+import org.nutz.dao.entity.annotation.Column;
+import org.nutz.dao.entity.annotation.PK;
+import org.nutz.dao.entity.annotation.Table;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+@Data
+@Table(AdsGameMediaActiveRegDay.TABLE_NAME)
+@PK({"dt", "gameId", "sourceSystem"})
+public class AdsGameMediaActiveRegDay implements Serializable {
+    private static final long serialVersionUID = 1L;
+    public static final String TABLE_NAME = "ads_game_type_active_reg_day";
+     
+    /**
+    * 用户注册时间
+    */
+    private LocalDate dt;
+
+    /**
+     * 媒体类型
+     */
+    private String accountType;
+    
+    /**
+    * SDK来源
+    */
+    private String sourceSystem;
+
+    /**
+     * 游戏ID
+     */
+    private Long gameId;
+
+    /**
+     * 游戏名称
+     */
+    @Column
+    private String gameName;
+
+    /**
+     * 游戏类别
+     */
+    @Column
+    private Long gameClassify;
+
+    /**
+    * 注册人数
+    */    
+    @Column
+    private Long regNum;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da1;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da2;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da3;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da13;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da14;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da15;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da16;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da17;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da18;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da19;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da20;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da21;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da22;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da23;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da24;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da25;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da26;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da27;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da28;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da29;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da30;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da31;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da32;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da33;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da34;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da35;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da36;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da37;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da38;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da39;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da40;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da41;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da42;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da43;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da44;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da45;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da46;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da47;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da48;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da49;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da50;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da51;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da52;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da53;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da54;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da55;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da56;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da57;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da58;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da59;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da60;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da61;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da62;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da63;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da64;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da65;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da66;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da67;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da68;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da69;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da70;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da71;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da72;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da73;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da74;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da75;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da76;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da77;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da78;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da79;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da80;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da81;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da82;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da83;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da84;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da85;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da86;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da87;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da88;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da89;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da90;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String total;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa1;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa2;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa3;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa13;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa14;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa15;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa16;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa17;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa18;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa19;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa20;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa21;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa22;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa23;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa24;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa25;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa26;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa27;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa28;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa29;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa30;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa31;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa32;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa33;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa34;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa35;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa36;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa37;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa38;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa39;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa40;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa41;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa42;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa43;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa44;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa45;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa46;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa47;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa48;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa49;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa50;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa51;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa52;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa53;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa54;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa55;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa56;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa57;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa58;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa59;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa60;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa61;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa62;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa63;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa64;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa65;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa66;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa67;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa68;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa69;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa70;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa71;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa72;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa73;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa74;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa75;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa76;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa77;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa78;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa79;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa80;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa81;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa82;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa83;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa84;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa85;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa86;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa87;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa88;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa89;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa90;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyTotal;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa1;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa2;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa3;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa13;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa14;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa15;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa16;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa17;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa18;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa19;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa20;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa21;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa22;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa23;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa24;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa25;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa26;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa27;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa28;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa29;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa30;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa31;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa32;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa33;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa34;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa35;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa36;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa37;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa38;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa39;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa40;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa41;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa42;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa43;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa44;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa45;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa46;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa47;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa48;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa49;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa50;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa51;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa52;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa53;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa54;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa55;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa56;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa57;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa58;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa59;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa60;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa61;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa62;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa63;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa64;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa65;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa66;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa67;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa68;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa69;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa70;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa71;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa72;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa73;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa74;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa75;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa76;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa77;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa78;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa79;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa80;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa81;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa82;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa83;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa84;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa85;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa86;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa87;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa88;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa89;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa90;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureTotal;
+
+}
+
+

+ 1856 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsGameMediaActiveRegDayParent.java

@@ -0,0 +1,1856 @@
+package com.zanxiang.game.data.serve.pojo.entity;
+
+import lombok.Data;
+import org.nutz.dao.entity.annotation.Column;
+import org.nutz.dao.entity.annotation.PK;
+import org.nutz.dao.entity.annotation.Table;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+@Data
+@Table(AdsGameMediaActiveRegDayParent.TABLE_NAME)
+@PK({"dt", "gameId", "sourceSystem"})
+public class AdsGameMediaActiveRegDayParent implements Serializable {
+    private static final long serialVersionUID = 1L;
+    public static final String TABLE_NAME = "game_ads_parent.ads_game_type_active_reg_day_parent";
+     
+    /**
+    * 用户注册时间
+    */
+    private LocalDate dt;
+
+    /**
+     * 媒体类型
+     */
+    private String accountType;
+    
+    /**
+    * SDK来源
+    */
+    private String sourceSystem;
+
+
+    private Long gameId;
+
+    /**
+     * 游戏名称
+     */
+    @Column
+    private String parentGameName;
+
+    /**
+     * 游戏类别
+     */
+    @Column
+    private Long parentGameClassify;
+
+    /**
+    * 注册人数
+    */    
+    @Column
+    private Long regNum;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da1;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da2;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da3;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da13;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da14;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da15;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da16;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da17;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da18;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da19;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da20;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da21;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da22;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da23;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da24;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da25;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da26;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da27;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da28;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da29;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da30;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da31;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da32;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da33;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da34;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da35;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da36;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da37;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da38;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da39;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da40;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da41;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da42;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da43;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da44;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da45;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da46;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da47;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da48;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da49;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da50;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da51;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da52;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da53;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da54;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da55;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da56;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da57;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da58;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da59;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da60;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da61;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da62;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da63;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da64;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da65;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da66;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da67;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da68;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da69;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da70;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da71;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da72;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da73;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da74;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da75;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da76;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da77;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da78;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da79;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da80;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da81;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da82;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da83;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da84;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da85;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da86;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da87;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da88;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da89;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da90;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String total;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa1;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa2;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa3;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa13;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa14;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa15;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa16;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa17;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa18;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa19;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa20;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa21;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa22;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa23;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa24;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa25;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa26;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa27;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa28;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa29;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa30;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa31;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa32;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa33;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa34;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa35;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa36;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa37;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa38;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa39;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa40;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa41;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa42;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa43;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa44;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa45;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa46;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa47;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa48;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa49;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa50;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa51;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa52;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa53;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa54;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa55;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa56;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa57;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa58;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa59;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa60;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa61;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa62;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa63;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa64;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa65;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa66;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa67;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa68;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa69;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa70;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa71;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa72;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa73;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa74;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa75;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa76;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa77;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa78;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa79;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa80;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa81;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa82;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa83;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa84;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa85;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa86;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa87;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa88;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa89;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa90;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyTotal;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa1;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa2;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa3;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa13;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa14;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa15;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa16;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa17;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa18;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa19;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa20;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa21;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa22;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa23;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa24;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa25;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa26;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa27;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa28;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa29;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa30;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa31;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa32;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa33;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa34;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa35;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa36;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa37;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa38;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa39;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa40;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa41;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa42;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa43;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa44;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa45;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa46;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa47;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa48;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa49;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa50;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa51;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa52;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa53;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa54;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa55;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa56;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa57;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa58;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa59;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa60;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa61;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa62;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa63;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa64;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa65;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa66;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa67;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa68;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa69;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa70;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa71;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa72;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa73;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa74;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa75;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa76;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa77;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa78;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa79;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa80;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa81;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa82;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa83;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa84;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa85;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa86;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa87;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa88;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa89;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa90;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureTotal;
+
+}
+
+

+ 1852 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsGameMediaActiveRoleDay.java

@@ -0,0 +1,1852 @@
+package com.zanxiang.game.data.serve.pojo.entity;
+
+import lombok.Data;
+import org.nutz.dao.entity.annotation.Column;
+import org.nutz.dao.entity.annotation.PK;
+import org.nutz.dao.entity.annotation.Table;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+@Data
+@Table(AdsGameMediaActiveRoleDay.TABLE_NAME)
+@PK({"dt", "gameId", "sourceSystem"})
+public class AdsGameMediaActiveRoleDay implements Serializable {
+    private static final long serialVersionUID = 1L;
+    public static final String TABLE_NAME = "ads_game_type_active_role_day";
+     
+    /**
+    * 用户注册时间
+    */
+    private LocalDate dt;
+
+    /**
+     * 媒体类型
+     */
+    private String accountType;
+    
+    /**
+    * SDK来源
+    */
+    private String sourceSystem;
+    
+    /**
+    * 游戏ID
+    */
+    private Long gameId;
+    
+    /**
+    * 游戏名称
+    */    
+    @Column
+    private String gameName;
+    
+    /**
+    * 游戏类别
+    */    
+    @Column
+    private Long gameClassify;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da1;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da2;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da3;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da13;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da14;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da15;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da16;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da17;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da18;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da19;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da20;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da21;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da22;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da23;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da24;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da25;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da26;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da27;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da28;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da29;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da30;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da31;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da32;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da33;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da34;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da35;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da36;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da37;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da38;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da39;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da40;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da41;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da42;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da43;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da44;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da45;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da46;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da47;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da48;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da49;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da50;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da51;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da52;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da53;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da54;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da55;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da56;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da57;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da58;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da59;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da60;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da61;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da62;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da63;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da64;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da65;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da66;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da67;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da68;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da69;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da70;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da71;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da72;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da73;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da74;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da75;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da76;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da77;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da78;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da79;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da80;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da81;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da82;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da83;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da84;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da85;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da86;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da87;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da88;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da89;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da90;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String total;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa1;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa2;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa3;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa13;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa14;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa15;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa16;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa17;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa18;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa19;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa20;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa21;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa22;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa23;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa24;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa25;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa26;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa27;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa28;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa29;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa30;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa31;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa32;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa33;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa34;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa35;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa36;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa37;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa38;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa39;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa40;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa41;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa42;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa43;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa44;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa45;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa46;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa47;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa48;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa49;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa50;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa51;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa52;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa53;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa54;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa55;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa56;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa57;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa58;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa59;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa60;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa61;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa62;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa63;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa64;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa65;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa66;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa67;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa68;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa69;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa70;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa71;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa72;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa73;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa74;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa75;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa76;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa77;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa78;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa79;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa80;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa81;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa82;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa83;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa84;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa85;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa86;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa87;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa88;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa89;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa90;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyTotal;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa1;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa2;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa3;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa13;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa14;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa15;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa16;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa17;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa18;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa19;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa20;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa21;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa22;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa23;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa24;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa25;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa26;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa27;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa28;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa29;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa30;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa31;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa32;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa33;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa34;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa35;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa36;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa37;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa38;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa39;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa40;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa41;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa42;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa43;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa44;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa45;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa46;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa47;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa48;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa49;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa50;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa51;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa52;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa53;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa54;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa55;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa56;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa57;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa58;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa59;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa60;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa61;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa62;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa63;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa64;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa65;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa66;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa67;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa68;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa69;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa70;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa71;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa72;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa73;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa74;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa75;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa76;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa77;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa78;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa79;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa80;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa81;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa82;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa83;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa84;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa85;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa86;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa87;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa88;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa89;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa90;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureTotal;
+
+}
+
+

+ 1849 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsGameMediaActiveRoleDayParent.java

@@ -0,0 +1,1849 @@
+package com.zanxiang.game.data.serve.pojo.entity;
+
+import lombok.Data;
+import org.nutz.dao.entity.annotation.Column;
+import org.nutz.dao.entity.annotation.PK;
+import org.nutz.dao.entity.annotation.Table;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+@Data
+@Table(AdsGameMediaActiveRoleDayParent.TABLE_NAME)
+@PK({"dt", "gameId", "sourceSystem"})
+public class AdsGameMediaActiveRoleDayParent implements Serializable {
+    private static final long serialVersionUID = 1L;
+    public static final String TABLE_NAME = "game_ads_parent.ads_game_type_active_role_day_parent";
+     
+    /**
+    * 用户注册时间
+    */
+    private LocalDate dt;
+
+    /**
+     * 媒体类型
+     */
+    private String accountType;
+    
+    /**
+    * SDK来源
+    */
+    private String sourceSystem;
+
+    private Long gameId;
+
+    /**
+     * 游戏名称
+     */
+    @Column
+    private String parentGameName;
+
+    /**
+     * 游戏类别
+     */
+    @Column
+    private Long parentGameClassify;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da1;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da2;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da3;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da13;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da14;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da15;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da16;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da17;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da18;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da19;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da20;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da21;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da22;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da23;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da24;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da25;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da26;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da27;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da28;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da29;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da30;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da31;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da32;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da33;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da34;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da35;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da36;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da37;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da38;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da39;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da40;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da41;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da42;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da43;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da44;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da45;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da46;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da47;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da48;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da49;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da50;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da51;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da52;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da53;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da54;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da55;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da56;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da57;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da58;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da59;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da60;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da61;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da62;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da63;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da64;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da65;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da66;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da67;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da68;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da69;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da70;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da71;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da72;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da73;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da74;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da75;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da76;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da77;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da78;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da79;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da80;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da81;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da82;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da83;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da84;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da85;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da86;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da87;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da88;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da89;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String da90;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String m12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String total;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa1;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa2;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa3;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa13;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa14;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa15;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa16;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa17;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa18;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa19;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa20;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa21;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa22;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa23;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa24;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa25;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa26;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa27;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa28;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa29;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa30;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa31;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa32;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa33;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa34;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa35;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa36;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa37;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa38;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa39;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa40;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa41;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa42;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa43;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa44;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa45;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa46;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa47;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa48;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa49;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa50;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa51;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa52;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa53;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa54;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa55;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa56;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa57;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa58;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa59;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa60;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa61;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa62;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa63;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa64;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa65;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa66;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa67;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa68;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa69;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa70;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa71;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa72;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa73;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa74;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa75;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa76;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa77;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa78;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa79;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa80;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa81;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa82;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa83;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa84;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa85;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa86;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa87;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa88;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa89;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyDa90;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyM12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String buyTotal;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa1;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa2;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa3;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa13;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa14;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa15;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa16;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa17;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa18;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa19;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa20;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa21;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa22;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa23;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa24;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa25;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa26;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa27;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa28;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa29;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa30;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa31;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa32;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa33;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa34;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa35;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa36;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa37;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa38;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa39;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa40;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa41;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa42;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa43;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa44;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa45;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa46;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa47;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa48;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa49;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa50;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa51;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa52;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa53;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa54;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa55;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa56;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa57;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa58;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa59;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa60;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa61;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa62;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa63;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa64;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa65;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa66;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa67;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa68;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa69;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa70;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa71;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa72;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa73;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa74;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa75;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa76;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa77;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa78;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa79;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa80;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa81;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa82;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa83;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa84;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa85;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa86;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa87;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa88;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa89;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureDa90;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM4;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM5;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM6;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM7;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM8;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM9;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM10;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM11;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureM12;
+    
+    /**
+    * 活跃人数/留存率
+    */    
+    @Column
+    private String natureTotal;
+
+}
+
+

+ 1481 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/MediaActiveDataDayVO.java

@@ -0,0 +1,1481 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotEmpty;
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+/**
+ * packageName com.zanxiang.game.data.serve.pojo.vo
+ *
+ * @author ZhangXianyu
+ * @date 2024/9/2
+ * @description 每日媒体留存数据VO
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class MediaActiveDataDayVO implements Serializable {
+
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty(value = "游戏ID")
+    private Long gameId;
+
+    /**
+     * 媒体类型
+     */
+    @ApiModelProperty(value = "媒体类型")
+    private String accountType;
+
+    /**
+     * 推广游戏名称
+     */
+    @ApiModelProperty(value = "游戏名称")
+    private String gameName;
+
+    /**
+     * 推广游戏应用类型
+     */
+    @ApiModelProperty(value = "游戏类型")
+    private Long gameClassify;
+
+    /**
+     * SDK来源
+     */
+    @ApiModelProperty(value = "SDK来源")
+    private String sourceSystem;
+
+    /**
+     * 注册时间
+     */
+    @ApiModelProperty(value = "注册时间(消耗时间)")
+    private LocalDate costDate;
+
+    /**
+     * 消耗
+     */
+    @ApiModelProperty(value = "消耗")
+    private BigDecimal cost;
+
+    /**
+     * 注册人数
+     */
+    @ApiModelProperty(value = "注册人数")
+    private Long regNum;
+
+    /**
+     * 首日新用户充值次数
+     */
+    @ApiModelProperty(value = "首日新用户充值次数")
+    private Long firstNewUserAmountCount;
+
+    /**
+     * 首日新用户充值人数
+     */
+    @ApiModelProperty(value = "首日新用户充值人数")
+    private Long firstNewUserAmountNum;
+
+    /**
+     * 首日新用户充值金额
+     */
+    @ApiModelProperty(value = "首日新用户充值金额")
+    private BigDecimal firstNewUserAmount;
+
+    /**
+     * 老用户充值次数
+     */
+    @ApiModelProperty(value = "老用户充值次数")
+    private Long oldUserCount;
+
+    /**
+     * 老用户充值人数
+     */
+    @ApiModelProperty(value = "老用户充值人数")
+    private Long oldUserNum;
+
+    @ApiModelProperty(value = "当日充值成本 = 消耗 / 新用户累计充值人数")
+    private BigDecimal totalRechargeCost;
+
+    /**
+     * 老用户充值金额
+     */
+    @ApiModelProperty(value = "老用户充值金额")
+    private BigDecimal oldUserAmount;
+
+    /**
+     * 账面充值次数
+     */
+    @ApiModelProperty(value = "账面充值次数")
+    private Long amountCount;
+
+    /**
+     * 账面充值人数
+     */
+    @ApiModelProperty(value = "账面充值人数")
+    private Long amountNum;
+
+    /**
+     * 账面充值金额
+     */
+    @ApiModelProperty(value = "账面充值金额")
+    private BigDecimal amount;
+
+    /**
+     * 新用户累计充值次数
+     */
+    @ApiModelProperty(value = "新用户累计充值次数")
+    private Long newUserTotalAmountCount;
+
+    /**
+     * 新用户累计充值人数
+     */
+    @ApiModelProperty(value = "新用户累计充值人数")
+    private Long newUserTotalAmountNum;
+
+    /**
+     * 新用户累计充值金额
+     */
+    @ApiModelProperty(value = "新用户累计充值金额")
+    private BigDecimal newUserTotalAmount;
+
+    /**
+     * 首日Roi
+     */
+    @ApiModelProperty(value = "首日Roi")
+    private BigDecimal firstRoi;
+
+    @ApiModelProperty(value = "首日付费率)")
+    private BigDecimal firstAmountRate;
+
+    @ApiModelProperty(value = "当天付费率")
+    private BigDecimal todayAmountRate;
+
+    /**
+     * 当天付费ARPU
+     */
+    @ApiModelProperty(value = "当天付费ARPU")
+    private BigDecimal todayAmountArpu;
+
+    /**
+     * 账面ARPU
+     */
+    @ApiModelProperty(value = "账面ARPU")
+    private BigDecimal amountArpu;
+
+    /**
+     * 首日付费ARPU
+     */
+    @ApiModelProperty(value = "首日付费ARPU")
+    private BigDecimal firstAmountArpu;
+
+    /**
+     * 账面客单价
+     */
+    @ApiModelProperty(value = "账面客单价")
+    private BigDecimal avgAmount;
+
+    @ApiModelProperty(value = "总回收率 = 新用户累计充值金额 / 消耗")
+    private BigDecimal totalRoi;
+
+    /**
+     * 新增注册ARPU
+     */
+    @ApiModelProperty(value = "新增注册ARPU")
+    private BigDecimal regUserArpu;
+
+    /**
+     * 新用户付费比
+     */
+    @ApiModelProperty(value = "新用户付费比")
+    private BigDecimal newUserRate;
+
+    /**
+     * 首日客单价
+     */
+    @ApiModelProperty(value = "首日客单价")
+    private BigDecimal firstAvgAmount;
+
+    /**
+     * 当天客单价
+     */
+    @ApiModelProperty(value = "当天客单价")
+    private BigDecimal todayAvgAmount;
+
+    /**
+     * 账面客单价
+     */
+    @ApiModelProperty(value = "账面客单价")
+    private BigDecimal paperAvg;
+
+    /**
+     * 复充率
+     */
+    @ApiModelProperty(value = "复充率")
+    private BigDecimal userAgainRate;
+
+    /**
+     * 新增注册ARPU
+     */
+    @ApiModelProperty(value = "新增注册ARPU")
+    private BigDecimal newRegArpu;
+
+    /**
+     * 首日付费ARPU
+     */
+    @ApiModelProperty(value = "首日付费ARPU")
+    private BigDecimal firstArpu;
+
+    /**
+     * 当天付费ARPU
+     */
+    @ApiModelProperty(value = "当天付费ARPU")
+    private BigDecimal todayArpu;
+
+    /**
+     * 账面ARPU
+     */
+    @ApiModelProperty(value = "账面ARPU")
+    private BigDecimal paperArpu;
+
+    @ApiModelProperty(value = "注册成本 = 消耗 / 注册人数")
+    private BigDecimal regCost;
+
+    @ApiModelProperty(value = "当日回收率")
+    private BigDecimal todayRoi;
+
+    @ApiModelProperty(value = "首日充值成本 = 消耗 / 首日新用户充值人数")
+    private BigDecimal firstNewUserRechargeCost;
+
+    @ApiModelProperty(value = "单日付费100+人数")
+    private Long hundredUserNum;
+
+    @ApiModelProperty(value = "单日付费100+成本 = 消耗 / 单日付费100+人数")
+    private BigDecimal hundredUserNumCost;
+
+    @ApiModelProperty(value = "首日创角人数")
+    private Long firstRoleNum;
+
+    @ApiModelProperty(value = "创角人数")
+    private Long roleNum;
+
+    @ApiModelProperty(value = "新用户累计创角人数")
+    private Long newUserTotalRoleNum;
+
+    @ApiModelProperty(value = "首日创角人数成本")
+    private BigDecimal firstRoleNumCost;
+
+    @ApiModelProperty(value = "创角人数成本")
+    private BigDecimal roleNumCost;
+
+    @ApiModelProperty(value = "新用户累计创角人数成本")
+    private BigDecimal newUserTotalRoleNumCost;
+
+    @ApiModelProperty(value = "首日创角率")
+    private BigDecimal firstRoleNumRate;
+
+    @ApiModelProperty(value = "创角率")
+    private BigDecimal roleNumRate;
+
+    @ApiModelProperty(value = "新用户累计创角率")
+    private BigDecimal newUserTotalRoleNumRate;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da1;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da2;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da3;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da4;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da5;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da6;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da7;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da8;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da9;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da10;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da11;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da12;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da13;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da14;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da15;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da16;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da17;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da18;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da19;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da20;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da21;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da22;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da23;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da24;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da25;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da26;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da27;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da28;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da29;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da30;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da31;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da32;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da33;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da34;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da35;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da36;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da37;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da38;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da39;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da40;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da41;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da42;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da43;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da44;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da45;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da46;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da47;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da48;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da49;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da50;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da51;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da52;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da53;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da54;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da55;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da56;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da57;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da58;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da59;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da60;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da61;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da62;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da63;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da64;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da65;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da66;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da67;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da68;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da69;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da70;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da71;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da72;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da73;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da74;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da75;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da76;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da77;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da78;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da79;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da80;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da81;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da82;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da83;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da84;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da85;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da86;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da87;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da88;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da89;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da90;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m4;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m5;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m6;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m7;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m8;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m9;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m10;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m11;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m12;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da1Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da2Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da3Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da4Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da5Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da6Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da7Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da8Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da9Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da10Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da11Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da12Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da13Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da14Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da15Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da16Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da17Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da18Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da19Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da20Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da21Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da22Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da23Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da24Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da25Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da26Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da27Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da28Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da29Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da30Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da31Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da32Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da33Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da34Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da35Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da36Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da37Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da38Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da39Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da40Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da41Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da42Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da43Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da44Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da45Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da46Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da47Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da48Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da49Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da50Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da51Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da52Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da53Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da54Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da55Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da56Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da57Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da58Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da59Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da60Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da61Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da62Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da63Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da64Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da65Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da66Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da67Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da68Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da69Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da70Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da71Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da72Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da73Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da74Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da75Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da76Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da77Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da78Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da79Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da80Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da81Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da82Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da83Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da84Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da85Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da86Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da87Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da88Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da89Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(展示的数据)")
+    private ActiveDataTrendVO da90Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第4-12月(展示的数据)")
+    private ActiveDataTrendVO m4Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第4-12月(展示的数据)")
+    private ActiveDataTrendVO m5Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第4-12月(展示的数据)")
+    private ActiveDataTrendVO m6Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第4-12月(展示的数据)")
+    private ActiveDataTrendVO m7Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第4-12月(展示的数据)")
+    private ActiveDataTrendVO m8Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第4-12月(展示的数据)")
+    private ActiveDataTrendVO m9Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第4-12月(展示的数据)")
+    private ActiveDataTrendVO m10Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第4-12月(展示的数据)")
+    private ActiveDataTrendVO m11Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第4-12月(展示的数据)")
+    private ActiveDataTrendVO m12Trend;
+
+
+}

+ 1405 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/MediaActiveDataTotalVO.java

@@ -0,0 +1,1405 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+/**
+ * packageName com.zanxiang.game.data.serve.pojo.vo
+ *
+ * @author ZhangXianyu
+ * @date 2024/9/2
+ * @description 每日游戏媒体留存总数据VO
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class MediaActiveDataTotalVO {
+    /**
+     * 消耗
+     */
+    @ApiModelProperty(value = "消耗")
+    private BigDecimal cost;
+
+    /**
+     * 注册人数
+     */
+    @ApiModelProperty(value = "注册人数")
+    private Long regNum;
+
+    /**
+     * 首日新用户充值次数
+     */
+    @ApiModelProperty(value = "首日新用户充值次数")
+    private Long firstNewUserAmountCount;
+
+    /**
+     * 首日新用户充值人数
+     */
+    @ApiModelProperty(value = "首日新用户充值人数")
+    private Long firstNewUserAmountNum;
+
+    /**
+     * 首日新用户充值金额
+     */
+    @ApiModelProperty(value = "首日新用户充值金额")
+    private BigDecimal firstNewUserAmount;
+
+    /**
+     * 老用户充值次数
+     */
+    @ApiModelProperty(value = "老用户充值次数")
+    private Long oldUserCount;
+
+    /**
+     * 老用户充值人数
+     */
+    @ApiModelProperty(value = "老用户充值人数")
+    private Long oldUserNum;
+
+    /**
+     * 老用户充值金额
+     */
+    @ApiModelProperty(value = "老用户充值金额")
+    private BigDecimal oldUserAmount;
+
+    /**
+     * 账面充值次数
+     */
+    @ApiModelProperty(value = "账面充值次数")
+    private Long amountCount;
+
+    /**
+     * 账面充值人数
+     */
+    @ApiModelProperty(value = "账面充值人数")
+    private Long amountNum;
+
+    /**
+     * 账面充值金额
+     */
+    @ApiModelProperty(value = "账面充值金额")
+    private BigDecimal amount;
+
+    /**
+     * 新用户累计充值次数
+     */
+    @ApiModelProperty(value = "新用户累计充值次数")
+    private Long newUserTotalAmountCount;
+
+    /**
+     * 新用户累计充值人数
+     */
+    @ApiModelProperty(value = "新用户累计充值人数")
+    private Long newUserTotalAmountNum;
+
+    /**
+     * 新用户累计充值金额
+     */
+    @ApiModelProperty(value = "新用户累计充值金额")
+    private BigDecimal newUserTotalAmount;
+
+    /**
+     * 首日Roi
+     */
+    @ApiModelProperty(value = "首日Roi")
+    private BigDecimal firstRoi;
+
+    @ApiModelProperty(value = "首日付费率(总)")
+    private BigDecimal firstAmountRate;
+
+    @ApiModelProperty(value = "当天付费率(总)")
+    private BigDecimal todayAmountRate;
+
+    /**
+     * 新用户付费比
+     */
+    @ApiModelProperty(value = "新用户付费比")
+    private BigDecimal newUserRate;
+
+    /**
+     * 首日客单价
+     */
+    @ApiModelProperty(value = "首日客单价")
+    private BigDecimal firstAvgAmount;
+
+    /**
+     * 当天客单价
+     */
+    @ApiModelProperty(value = "当天客单价")
+    private BigDecimal todayAvgAmount;
+
+    /**
+     * 账面客单价
+     */
+    @ApiModelProperty(value = "账面客单价")
+    private BigDecimal avgAmount;
+
+    /**
+     * 复充率
+     */
+    @ApiModelProperty(value = "复充率")
+    private BigDecimal userAgainRate;
+
+    /**
+     * 新增注册ARPU
+     */
+    @ApiModelProperty(value = "新增注册ARPU")
+    private BigDecimal regUserArpu;
+
+    /**
+     * 首日付费ARPU
+     */
+    @ApiModelProperty(value = "首日付费ARPU")
+    private BigDecimal firstAmountArpu;
+
+    /**
+     * 当天付费ARPU
+     */
+    @ApiModelProperty(value = "当天付费ARPU")
+    private BigDecimal todayAmountArpu;
+
+    /**
+     * 账面ARPU
+     */
+    @ApiModelProperty(value = "账面ARPU")
+    private BigDecimal amountArpu;
+
+    @ApiModelProperty(value = "注册成本 = 消耗 / 注册人数")
+    private BigDecimal regCost;
+
+    @ApiModelProperty(value = "总回收率 = 新用户累计充值金额 / 消耗")
+    private BigDecimal totalRoi;
+
+    @ApiModelProperty(value = "首日充值成本 = 消耗 / 首日新用户充值人数")
+    private BigDecimal firstNewUserRechargeCost;
+
+    @ApiModelProperty(value = "总充值成本 = 消耗 / 新用户累计充值人数")
+    private BigDecimal totalRechargeCost;
+
+    @ApiModelProperty(value = "单日付费100+人数")
+    private Long hundredUserNum;
+
+    @ApiModelProperty(value = "单日付费100+成本 = 消耗 / 单日付费100+人数")
+    private BigDecimal hundredUserNumCost;
+
+    @ApiModelProperty(value = "首日创角人数")
+    private Long firstRoleNum;
+
+    @ApiModelProperty(value = "创角人数")
+    private Long roleNum;
+
+    @ApiModelProperty(value = "新用户累计创角人数")
+    private Long newUserTotalRoleNum;
+
+    @ApiModelProperty(value = "首日创角人数成本")
+    private BigDecimal firstRoleNumCost;
+
+    @ApiModelProperty(value = "创角人数成本")
+    private BigDecimal roleNumCost;
+
+    @ApiModelProperty(value = "新用户累计创角人数成本")
+    private BigDecimal newUserTotalRoleNumCost;
+
+    @ApiModelProperty(value = "首日创角率")
+    private BigDecimal firstRoleNumRate;
+
+    @ApiModelProperty(value = "创角率")
+    private BigDecimal roleNumRate;
+
+    @ApiModelProperty(value = "新用户累计创角率")
+    private BigDecimal newUserTotalRoleNumRate;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da1;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da2;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da3;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da4;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da5;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da6;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da7;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da8;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da9;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da10;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da11;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da12;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da13;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da14;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da15;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da16;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da17;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da18;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da19;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da20;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da21;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da22;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da23;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da24;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da25;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da26;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da27;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da28;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da29;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da30;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da31;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da32;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da33;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da34;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da35;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da36;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da37;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da38;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da39;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da40;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da41;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da42;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da43;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da44;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da45;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da46;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da47;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da48;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da49;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da50;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da51;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da52;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da53;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da54;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da55;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da56;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da57;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da58;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da59;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da60;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da61;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da62;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da63;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da64;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da65;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da66;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da67;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da68;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da69;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da70;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da71;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da72;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da73;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da74;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da75;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da76;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da77;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da78;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da79;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da80;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da81;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da82;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da83;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da84;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da85;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da86;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da87;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da88;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da89;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da90;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m4;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m5;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m6;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m7;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m8;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m9;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m10;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m11;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m12;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da1Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da2Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da3Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da4Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da5Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da6Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da7Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da8Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da9Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da10Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da11Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da12Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da13Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da14Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da15Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da16Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da17Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da18Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da19Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da20Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da21Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da22Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da23Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da24Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da25Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da26Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da27Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da28Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da29Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da30Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da31Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da32Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da33Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da34Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da35Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da36Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da37Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da38Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da39Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da40Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da41Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da42Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da43Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da44Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da45Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da46Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da47Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da48Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da49Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da50Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da51Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da52Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da53Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da54Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da55Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da56Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da57Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da58Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da59Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da60Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da61Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da62Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da63Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da64Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da65Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da66Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da67Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da68Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da69Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da70Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da71Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da72Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da73Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da74Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da75Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da76Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da77Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da78Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da79Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da80Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da81Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da82Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da83Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da84Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da85Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da86Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da87Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da88Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da89Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第1-90天(活跃人数/留存率)")
+    private ActiveDataTrendVO da90Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第4-12月(活跃人数/留存率)")
+    private ActiveDataTrendVO m4Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第4-12月(活跃人数/留存率)")
+    private ActiveDataTrendVO m5Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第4-12月(活跃人数/留存率)")
+    private ActiveDataTrendVO m6Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第4-12月(活跃人数/留存率)")
+    private ActiveDataTrendVO m7Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第4-12月(活跃人数/留存率)")
+    private ActiveDataTrendVO m8Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第4-12月(活跃人数/留存率)")
+    private ActiveDataTrendVO m9Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第4-12月(活跃人数/留存率)")
+    private ActiveDataTrendVO m10Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第4-12月(活跃人数/留存率)")
+    private ActiveDataTrendVO m11Trend;
+
+    /**
+     * 活跃人数/留存率
+     */
+    @ApiModelProperty(value = "第4-12月(活跃人数/留存率)")
+    private ActiveDataTrendVO m12Trend;
+}

+ 16 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IActiveDataService.java

@@ -2,8 +2,11 @@ package com.zanxiang.game.data.serve.service;
 
 import com.zanxiang.game.data.serve.pojo.dto.ActiveDataDayDTO;
 import com.zanxiang.game.data.serve.pojo.dto.ActiveDataTotalDTO;
+import com.zanxiang.game.data.serve.pojo.dto.MediaActiveDataDayDTO;
 import com.zanxiang.game.data.serve.pojo.vo.ActiveDataDayVO;
 import com.zanxiang.game.data.serve.pojo.vo.ActiveDataTotalVO;
+import com.zanxiang.game.data.serve.pojo.vo.MediaActiveDataDayVO;
+import com.zanxiang.game.data.serve.pojo.vo.MediaActiveDataTotalVO;
 import com.zanxiang.game.data.serve.utils.Page;
 
 public interface IActiveDataService {
@@ -12,4 +15,17 @@ public interface IActiveDataService {
 
     ActiveDataTotalVO getActiveDataTotal(ActiveDataTotalDTO dto);
 
+    /**
+     * 游戏媒体留存数据
+     * @param dto
+     * @return
+     */
+    Page<MediaActiveDataDayVO> getMediaActiveDataDay(MediaActiveDataDayDTO dto);
+
+    /**
+     * 游戏媒体留存数据总计
+     * @param dto
+     * @return
+     */
+    MediaActiveDataTotalVO getMediaActiveDataTotal(MediaActiveDataDayDTO dto);
 }

Diff do ficheiro suprimidas por serem muito extensas
+ 868 - 38
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/IActiveDataServiceImpl.java


Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff