Browse Source

Merge remote-tracking branch 'origin/package' into package

shishaosong 1 year ago
parent
commit
d1acb79791
100 changed files with 17425 additions and 483 deletions
  1. 49 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/AdsGameServerController.java
  2. 7 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/AdsOrderDetailController.java
  3. 27 2
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/AdsPromotionDayController.java
  4. 35 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/GameDataController.java
  5. 88 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/PitcherDataController.java
  6. 6 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/AdsOrderDetailListDTO.java
  7. 71 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GameDataFirstNewUserAgainDTO.java
  8. 58 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GameDataFirstNewUserAgainTotalDTO.java
  9. 34 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GameDataUserDetailsDTO.java
  10. 72 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GameServerDayDTO.java
  11. 58 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GameServerDayTotalDTO.java
  12. 70 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/LtvDataDTO.java
  13. 58 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/LtvDataTotalDTO.java
  14. 9 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/PitcherDataDayDTO.java
  15. 9 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/PitcherDataDayTotalDTO.java
  16. 9 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/PitcherDataTotalDTO.java
  17. 9 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/PitcherDataTotalSumDTO.java
  18. 9 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/PitcherGameDataDayDTO.java
  19. 9 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/PitcherGameDataDayTotalDTO.java
  20. 9 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/PitcherGameDataTotalDTO.java
  21. 9 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/PitcherGameDataTotalSumDTO.java
  22. 131 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/TencentPromotionDayDTO.java
  23. 118 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/TencentPromotionDayTotalDTO.java
  24. 1033 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsAdgroupDay.java
  25. 812 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsGameFirstNewUserAgainDay.java
  26. 357 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsGameServerDay.java
  27. 11 4
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsPromotionDay.java
  28. 1858 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsUserRoleLtvTrend.java
  29. 59 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/FirstNewUserAgainTrendVO.java
  30. 717 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameDataFirstNewUserAgainTotalVO.java
  31. 747 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameDataFirstNewUserAgainVO.java
  32. 64 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameDataUserDetailsVO.java
  33. 568 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameServerDayTotalVO.java
  34. 611 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameServerDayVO.java
  35. 71 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameServerTrendVO.java
  36. 2023 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/LtvDataTotalVO.java
  37. 2055 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/LtvDataVO.java
  38. 9 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/PitcherDataDayTotalVO.java
  39. 9 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/PitcherDataDayVO.java
  40. 9 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/PitcherDataTotalSumVO.java
  41. 9 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/PitcherDataTotalVO.java
  42. 9 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/PitcherGameDataDayTotalVO.java
  43. 9 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/PitcherGameDataDayVO.java
  44. 9 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/PitcherGameDataTotalSumVO.java
  45. 9 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/PitcherGameDataTotalVO.java
  46. 886 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/TencentPromotionDayTotalVO.java
  47. 1062 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/TencentPromotionDayVO.java
  48. 25 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IAdsPromotionDayService.java
  49. 35 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IGameDataService.java
  50. 25 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IGameServerService.java
  51. 49 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IPitcherDataService.java
  52. 1 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/AdsOrderDetailService.java
  53. 710 258
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameDataServiceImpl.java
  54. 462 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameServerServiceImpl.java
  55. 104 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/PitcherDataServiceImpl.java
  56. 683 162
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/PromotionDayServiceImpl.java
  57. 1 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/ManageApplication.java
  58. 57 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/GameServerController.java
  59. 54 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/GameUserConfigController.java
  60. 14 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/OrderController.java
  61. 49 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameRemitLogListParam.java
  62. 57 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameServerAddUpdateParam.java
  63. 48 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameServerListParam.java
  64. 35 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameUserConfigAddUpdateParam.java
  65. 21 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameUserConfigListParam.java
  66. 9 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/IpBanAddParam.java
  67. 6 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/IpBanListParam.java
  68. 1 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/OrderParam.java
  69. 12 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/UserNameAuthListParam.java
  70. 81 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/GameRemitLogVO.java
  71. 75 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/GameServerListVO.java
  72. 51 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/GameUserConfigListVO.java
  73. 6 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/GameUserRoleListVO.java
  74. 12 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/IpBanVO.java
  75. 7 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/OrderExcelVO.java
  76. 6 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/OrderVO.java
  77. 12 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/UserCardVO.java
  78. 23 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IGameRemitLogService.java
  79. 51 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IGameServerService.java
  80. 40 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IGameUserConfigService.java
  81. 88 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameRemitLogServiceImpl.java
  82. 114 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameServerServiceImpl.java
  83. 87 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameUserConfigServiceImpl.java
  84. 33 26
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameUserRoleServiceImpl.java
  85. 12 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/IpBanServiceImpl.java
  86. 36 18
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/OrderServiceImpl.java
  87. 11 4
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/UserCardServiceImpl.java
  88. 13 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/UserServiceImpl.java
  89. 5 0
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/GameRemitLog.java
  90. 81 0
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/GameServer.java
  91. 68 0
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/GameUserConfig.java
  92. 5 0
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/IpBan.java
  93. 10 0
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/UserCard.java
  94. 12 0
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/GameServerMapper.java
  95. 12 0
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/GameUserConfigMapper.java
  96. 6 0
      game-module/game-module-sdk/pom.xml
  97. 1 1
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/SDKApplication.java
  98. 41 0
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/config/KafkaConfig.java
  99. 1 5
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/controller/PayController.java
  100. 7 0
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/controller/UserController.java

+ 49 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/AdsGameServerController.java

@@ -0,0 +1,49 @@
+package com.zanxiang.game.data.serve.controller;
+
+import com.zanxiang.erp.security.annotation.PreAuthorize;
+import com.zanxiang.game.data.serve.pojo.dto.GameServerDayDTO;
+import com.zanxiang.game.data.serve.pojo.dto.GameServerDayTotalDTO;
+import com.zanxiang.game.data.serve.pojo.vo.GameServerDayTotalVO;
+import com.zanxiang.game.data.serve.pojo.vo.GameServerDayVO;
+import com.zanxiang.game.data.serve.service.IGameServerService;
+import com.zanxiang.game.data.serve.utils.Page;
+import com.zanxiang.module.util.pojo.ResultVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author tianhua
+ * @time 2023/8/14
+ * @Description 游戏区服控制层
+ **/
+@Api(tags = "游戏区服")
+@RestController
+@RequestMapping("/gameServer")
+@Slf4j
+public class AdsGameServerController {
+
+    @Autowired
+    private IGameServerService gameServerService;
+
+    @ApiOperation(value = "游戏区服数据")
+    @PreAuthorize(permissionKey = "gameServer:adsGameServerDay:day")
+    @PostMapping("/day")
+    public ResultVO<Page<GameServerDayVO>> getGameServerDataDay(@RequestBody GameServerDayDTO dto) {
+        return ResultVO.ok(gameServerService.getGameServerDataDay(dto));
+    }
+
+    @ApiOperation(value = "游戏区服数据总计一栏")
+    @PreAuthorize(permissionKey = "gameServer:adsGameServerDay:dayTotal")
+    @PostMapping("/day/total")
+    public ResultVO<GameServerDayTotalVO> getGameServerDataDayTotal(@RequestBody GameServerDayTotalDTO dto) {
+        return ResultVO.ok(gameServerService.getGameServerDataDayTotal(dto));
+    }
+
+
+}

+ 7 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/AdsOrderDetailController.java

@@ -11,6 +11,7 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 import lombok.extern.slf4j.Slf4j;
+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.PostMapping;
@@ -32,6 +33,12 @@ public class AdsOrderDetailController {
     @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = AdsOrderDetailVO.class)})
     @PostMapping("/list")
     public ResultVO<Page<AdsOrderDetailVO>> orderList(@Validated @RequestBody AdsOrderDetailListDTO dto) {
+        if (StringUtils.isBlank(dto.getSortFiled())) {
+            dto.setSortFiled("order_create_time");
+        }
+        if (StringUtils.isBlank(dto.getSortType())) {
+            dto.setSortType("desc");
+        }
         return ResultVO.ok(gameOrderService.listOfPage(dto));
     }
 }

+ 27 - 2
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/AdsPromotionDayController.java

@@ -3,8 +3,12 @@ package com.zanxiang.game.data.serve.controller;
 import com.zanxiang.erp.security.annotation.PreAuthorize;
 import com.zanxiang.game.data.serve.pojo.dto.PromotionDayDTO;
 import com.zanxiang.game.data.serve.pojo.dto.PromotionDayTotalDTO;
+import com.zanxiang.game.data.serve.pojo.dto.TencentPromotionDayDTO;
+import com.zanxiang.game.data.serve.pojo.dto.TencentPromotionDayTotalDTO;
 import com.zanxiang.game.data.serve.pojo.vo.PromotionDayTotalVO;
 import com.zanxiang.game.data.serve.pojo.vo.PromotionDayVO;
+import com.zanxiang.game.data.serve.pojo.vo.TencentPromotionDayTotalVO;
+import com.zanxiang.game.data.serve.pojo.vo.TencentPromotionDayVO;
 import com.zanxiang.game.data.serve.service.IAdsPromotionDayService;
 import com.zanxiang.game.data.serve.utils.Page;
 import com.zanxiang.module.util.pojo.ResultVO;
@@ -34,7 +38,7 @@ public class AdsPromotionDayController {
     @ApiOperation(value = "广告监控数据")
     @PreAuthorize(permissionKey = "promotionData:adsPromotionDay:day")
     @PostMapping("/day")
-    public ResultVO<Page<PromotionDayVO>> getPromotionDayData(@RequestBody PromotionDayDTO dto){
+    public ResultVO<Page<PromotionDayVO>> getPromotionDayData(@RequestBody PromotionDayDTO dto) {
         return ResultVO.ok(adsPromotionDayService.getPromotionDayData(dto));
     }
 
@@ -48,8 +52,29 @@ public class AdsPromotionDayController {
     @ApiOperation(value = "广告监控每日数据")
     @PreAuthorize(permissionKey = "promotionData:adsPromotionDay:dayList")
     @PostMapping("/day/list")
-    public ResultVO<Page<PromotionDayVO>> getPromotionDayListData(@RequestBody PromotionDayDTO dto){
+    public ResultVO<Page<PromotionDayVO>> getPromotionDayListData(@RequestBody PromotionDayDTO dto) {
         return ResultVO.ok(adsPromotionDayService.getPromotionDayListData(dto));
     }
 
+    @ApiOperation(value = "腾讯广告监控数据")
+    @PreAuthorize(permissionKey = "promotionData:adsAdGroupDay:day")
+    @PostMapping("/tencent/day")
+    public ResultVO<Page<TencentPromotionDayVO>> getTencentPromotionDayData(@RequestBody TencentPromotionDayDTO dto) {
+        return ResultVO.ok(adsPromotionDayService.getTencentPromotionDayData(dto));
+    }
+
+    @ApiOperation(value = "腾讯广告监控数据总计")
+    @PreAuthorize(permissionKey = "promotionData:adsAdGroupDay:total")
+    @PostMapping("/tencent/total")
+    public ResultVO<TencentPromotionDayTotalVO> getTencentPromotionDayTotalData(@RequestBody TencentPromotionDayTotalDTO dto) {
+        return ResultVO.ok(adsPromotionDayService.getTencentPromotionDayTotalData(dto));
+    }
+
+    @ApiOperation(value = "腾讯广告监控每日数据")
+    @PreAuthorize(permissionKey = "promotionData:adsAdGroupDay:dayList")
+    @PostMapping("/tencent/day/list")
+    public ResultVO<Page<TencentPromotionDayVO>> getTencentPromotionDayListData(@RequestBody TencentPromotionDayDTO dto) {
+        return ResultVO.ok(adsPromotionDayService.getTencentPromotionDayListData(dto));
+    }
+
 }

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

@@ -87,4 +87,39 @@ public class GameDataController {
         return ResultVO.ok(gameDataService.getGameDataAgainDay(dto));
     }
 
+    @ApiOperation(value = "LTV数据")
+    @PreAuthorize(permissionKey = "gameData:adsGameDay:ltv")
+    @PostMapping("/ltv")
+    public ResultVO<Page<LtvDataVO>> getLtvData(@RequestBody LtvDataDTO dto) {
+        return ResultVO.ok(gameDataService.getLtvData(dto));
+    }
+
+    @ApiOperation(value = "LTV数据总计一栏")
+    @PreAuthorize(permissionKey = "gameData:adsGameDay:ltvTotal")
+    @PostMapping("/ltv/total")
+    public ResultVO<LtvDataTotalVO> getLtvDataTotal(@RequestBody LtvDataTotalDTO dto) {
+        return ResultVO.ok(gameDataService.getLtvTotalData(dto));
+    }
+
+    @ApiOperation(value = "游戏首日复充")
+    @PreAuthorize(permissionKey = "gameData:adsGameDay:firstNewUserAgain")
+    @PostMapping("/firstNewUser/again")
+    public ResultVO<Page<GameDataFirstNewUserAgainVO>> getFirstNewUserAgain(@RequestBody GameDataFirstNewUserAgainDTO dto) {
+        return ResultVO.ok(gameDataService.getFirstNewUserAgain(dto));
+    }
+
+    @ApiOperation(value = "游戏首日复充总计")
+    @PreAuthorize(permissionKey = "gameData:adsGameDay:firstNewUserAgainTotal")
+    @PostMapping("/firstNewUser/again/total")
+    public ResultVO<GameDataFirstNewUserAgainTotalVO> getFirstNewUserAgainTotal(@RequestBody GameDataFirstNewUserAgainTotalDTO dto) {
+        return ResultVO.ok(gameDataService.getFirstNewUserAgainTotal(dto));
+    }
+
+    @ApiOperation(value = "用户详情")
+    @PreAuthorize(permissionKey = "gameData:adsGameDay:userDetails")
+    @PostMapping("/user/details")
+    public ResultVO<Page<GameDataUserDetailsVO>> getUserDetails(@RequestBody GameDataUserDetailsDTO dto) {
+        return ResultVO.ok(gameDataService.getUserDetails(dto));
+    }
+
 }

+ 88 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/PitcherDataController.java

@@ -0,0 +1,88 @@
+package com.zanxiang.game.data.serve.controller;
+
+import com.zanxiang.game.data.serve.pojo.dto.*;
+import com.zanxiang.game.data.serve.pojo.vo.*;
+import com.zanxiang.game.data.serve.service.IPitcherDataService;
+import com.zanxiang.game.data.serve.utils.Page;
+import com.zanxiang.module.util.pojo.ResultVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author tianhua
+ * @time 2023/8/15
+ * @Description 投手数据相关控制层接口
+ **/
+@Api(tags = "投手数据")
+@RestController
+@RequestMapping("/pitcherData")
+@Slf4j
+public class PitcherDataController {
+
+    @Autowired
+    private IPitcherDataService pitcherDataService;
+
+    @ApiOperation(value = "投手每日数据")
+    //@PreAuthorize(permissionKey = "pitcherData:pitcher:day")
+    @PostMapping("/pitcher/day")
+    public ResultVO<Page<PitcherDataDayVO>> getPitcherDataDay(@RequestBody PitcherDataDayDTO dto) {
+        return ResultVO.ok(pitcherDataService.getPitcherDataDay(dto));
+    }
+
+    @ApiOperation(value = "投手每日数据总计")
+    //@PreAuthorize(permissionKey = "pitcherData:pitcher:dayTotal")
+    @PostMapping("/pitcher/day/total")
+    public ResultVO<PitcherDataDayTotalVO> getPitcherDataDayTotal(@RequestBody PitcherDataDayTotalDTO dto) {
+        return ResultVO.ok(pitcherDataService.getPitcherDataDayTotal(dto));
+    }
+
+    @ApiOperation(value = "投手总数据")
+    //@PreAuthorize(permissionKey = "pitcherData:pitcher:total")
+    @PostMapping("/pitcher/total")
+    public ResultVO<Page<PitcherDataTotalVO>> getPitcherDataTotal(@RequestBody PitcherDataTotalDTO dto) {
+        return ResultVO.ok(pitcherDataService.getPitcherDataTotal(dto));
+    }
+
+    @ApiOperation(value = "投手总数据总计")
+    //@PreAuthorize(permissionKey = "pitcherData:pitcher:totalSum")
+    @PostMapping("/pitcher/total/sum")
+    public ResultVO<PitcherDataTotalSumVO> getPitcherDataTotalSum(@RequestBody PitcherDataTotalSumDTO dto) {
+        return ResultVO.ok(pitcherDataService.getPitcherDataTotalSum(dto));
+    }
+
+    @ApiOperation(value = "投手游戏每日数据")
+    //@PreAuthorize(permissionKey = "pitcherData:pitcherGame:day")
+    @PostMapping("/pitcherGame/day")
+    public ResultVO<Page<PitcherGameDataDayVO>> getPitcherGameDataDay(@RequestBody PitcherGameDataDayDTO dto) {
+        return ResultVO.ok(pitcherDataService.getPitcherGameDataDay(dto));
+    }
+
+    @ApiOperation(value = "投手游戏每日数据总计")
+    //@PreAuthorize(permissionKey = "pitcherData:pitcherGame:dayTotal")
+    @PostMapping("/pitcherGame/day/total")
+    public ResultVO<PitcherGameDataDayTotalVO> getPitcherGameDataDayTotal(@RequestBody PitcherGameDataDayTotalDTO dto) {
+        return ResultVO.ok(pitcherDataService.getPitcherGameDataDayTotal(dto));
+    }
+
+    @ApiOperation(value = "投手游戏总数据")
+    //@PreAuthorize(permissionKey = "pitcherData:pitcherGame:total")
+    @PostMapping("/pitcherGame/total")
+    public ResultVO<Page<PitcherGameDataTotalVO>> getPitcherGameDataTotal(@RequestBody PitcherGameDataTotalDTO dto) {
+        return ResultVO.ok(pitcherDataService.getPitcherGameDataTotal(dto));
+    }
+
+    @ApiOperation(value = "投手游戏总数据总计")
+    //@PreAuthorize(permissionKey = "pitcherData:pitcherGame:totalSum")
+    @PostMapping("/pitcherGame/total/sum")
+    public ResultVO<PitcherGameDataTotalSumVO> getPitcherGameDataTotalSum(@RequestBody PitcherGameDataTotalSumDTO dto) {
+        return ResultVO.ok(pitcherDataService.getPitcherGameDataTotalSum(dto));
+    }
+
+
+}

+ 6 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/AdsOrderDetailListDTO.java

@@ -72,4 +72,10 @@ public class AdsOrderDetailListDTO extends BasePage {
 
     @ApiModelProperty(notes = "用户注册时间")
     private LocalDateTime endRegTime;
+
+    @ApiModelProperty(notes = "排序字段")
+    private String sortFiled;
+
+    @ApiModelProperty(notes = "排序 ASC/DESC")
+    private String sortType;
 }

+ 71 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GameDataFirstNewUserAgainDTO.java

@@ -0,0 +1,71 @@
+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;
+
+/**
+ * @author tianhua
+ * @time 2023/8/10
+ * @Description 新用户首日复充查询参数实体
+ **/
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class GameDataFirstNewUserAgainDTO extends BasePage {
+
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty(notes = "游戏ID")
+    private Long gameId;
+
+    /**
+     * 推广游戏应用类别
+     */
+    @ApiModelProperty(notes = "游戏类别")
+    private Long classify;
+
+    /**
+     * SDK来源
+     */
+    @ApiModelProperty(value = "SDK来源")
+    private String sourceSystem;
+
+    /**
+     * 注册时间(开始)
+     */
+    @ApiModelProperty(notes = "注册开始时间")
+    private LocalDate registeredBeginDate;
+
+    /**
+     * 注册时间(结束)
+     */
+    @ApiModelProperty(notes = "注册结束时间")
+    private LocalDate registeredEndDate;
+
+    /**
+     * 选择展示数据种类
+     */
+    @ApiModelProperty(notes = "选择展示数据种类:buy -> 买量 ; nature -> 自然量 ; total -> 总量")
+    private String tableTypes;
+
+    /**
+     * 排序字段
+     */
+    @ApiModelProperty(notes = "排序字段")
+    private String sortFiled;
+
+    /**
+     * 排序方式:升序asc;降序desc
+     */
+    @ApiModelProperty(notes = "排序方式:升序asc;降序desc")
+    private String sortType;
+
+}

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

@@ -0,0 +1,58 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDate;
+
+/**
+ * @author tianhua
+ * @time 2023/8/10
+ * @Description 新用户首日复充总计查询参数实体
+ **/
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class GameDataFirstNewUserAgainTotalDTO {
+
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty(notes = "游戏ID")
+    private Long gameId;
+
+    /**
+     * 推广游戏应用类别
+     */
+    @ApiModelProperty(notes = "游戏类别")
+    private Long classify;
+
+    /**
+     * SDK来源
+     */
+    @ApiModelProperty(value = "SDK来源")
+    private String sourceSystem;
+
+    /**
+     * 注册时间(开始)
+     */
+    @ApiModelProperty(notes = "注册开始时间")
+    private LocalDate registeredBeginDate;
+
+    /**
+     * 注册时间(结束)
+     */
+    @ApiModelProperty(notes = "注册结束时间")
+    private LocalDate registeredEndDate;
+
+    /**
+     * 选择展示数据种类
+     */
+    @ApiModelProperty(notes = "选择展示数据种类:buy -> 买量 ; nature -> 自然量 ; total -> 总量")
+    private String tableTypes;
+
+}

+ 34 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GameDataUserDetailsDTO.java

@@ -0,0 +1,34 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+import com.zanxiang.game.data.serve.pojo.base.BasePage;
+import com.zanxiang.game.data.serve.pojo.vo.FirstNewUserAgainTrendVO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author tianhua
+ * @time 2023/8/11
+ * @Description 用户详情查询条件参数实体
+ **/
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class GameDataUserDetailsDTO extends BasePage {
+
+    /**
+     * 对象里面包含需要查询的usersID等信息
+     */
+    @ApiModelProperty(notes = "首日复充趋势对象")
+    private FirstNewUserAgainTrendVO againTrendVO;
+
+    /**
+     * SDK来源
+     */
+    @ApiModelProperty(notes = "SDK来源")
+    private String sourceSystem;
+
+}

+ 72 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GameServerDayDTO.java

@@ -0,0 +1,72 @@
+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;
+
+/**
+ * @author tianhua
+ * @time 2023/8/14
+ * @Description 前端传递的游戏区服查询条件
+ **/
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class GameServerDayDTO extends BasePage {
+
+    /**
+     * 开服时间(开始时间)
+     */
+    @ApiModelProperty(value = "开服时间(起始)")
+    private LocalDate beginDate;
+
+    /**
+     * 开服时间(结束时间)
+     */
+    @ApiModelProperty(value = "开服时间(结束)")
+    private LocalDate endDate;
+
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty(value = "游戏ID")
+    private Long gameId;
+
+    /**
+     * 区服ID
+     */
+    @ApiModelProperty(value = "区服ID")
+    private Long serverId;
+
+    /**
+     * 区服名称
+     */
+    @ApiModelProperty(value = "区服名称")
+    private String serverName;
+
+    /**
+     * SDK来源
+     */
+    @ApiModelProperty(value = "SDK来源")
+    private String sourceSystem;
+
+
+    /**
+     * 排序字段
+     */
+    @ApiModelProperty(notes = "排序字段")
+    private String sortFiled;
+
+    /**
+     * 排序方式:升序asc;降序desc
+     */
+    @ApiModelProperty(notes = "排序方式:升序asc;降序desc")
+    private String sortType;
+
+}

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

@@ -0,0 +1,58 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDate;
+
+/**
+ * @author tianhua
+ * @time 2023/8/14
+ * @Description 前端传递的游戏区服总计查询条件
+ **/
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class GameServerDayTotalDTO {
+
+    /**
+     * 开服时间(开始时间)
+     */
+    @ApiModelProperty(value = "开服时间(起始)")
+    private LocalDate beginDate;
+
+    /**
+     * 开服时间(结束时间)
+     */
+    @ApiModelProperty(value = "开服时间(结束)")
+    private LocalDate endDate;
+
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty(value = "游戏ID")
+    private Long gameId;
+
+    /**
+     * 区服ID
+     */
+    @ApiModelProperty(value = "区服ID")
+    private Long serverId;
+
+    /**
+     * 区服名称
+     */
+    @ApiModelProperty(value = "区服名称")
+    private String serverName;
+
+    /**
+     * SDK来源
+     */
+    @ApiModelProperty(value = "SDK来源")
+    private String sourceSystem;
+
+}

+ 70 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/LtvDataDTO.java

@@ -0,0 +1,70 @@
+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;
+
+/**
+ * @author tianhua
+ * @time 2023/8/9
+ * @Description 查询LTV数据的条件参数实体
+ **/
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class LtvDataDTO extends BasePage {
+
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty(notes = "游戏ID")
+    private Long gameId;
+
+    /**
+     * 推广游戏应用类别
+     */
+    @ApiModelProperty(notes = "游戏类别")
+    private Long classify;
+
+    /**
+     * SDK来源
+     */
+    @ApiModelProperty(value = "SDK来源")
+    private String sourceSystem;
+
+    /**
+     * 注册时间(开始)
+     */
+    @ApiModelProperty(notes = "注册开始时间")
+    private LocalDate registeredBeginDate;
+
+    /**
+     * 注册时间(结束)
+     */
+    @ApiModelProperty(notes = "注册结束时间")
+    private LocalDate registeredEndDate;
+
+    /**
+     * 选择展示数据种类
+     */
+    @ApiModelProperty(notes = "选择展示数据种类:buy -> 买量 ; nature -> 自然量 ; total -> 总量")
+    private String tableTypes;
+
+    /**
+     * 排序字段
+     */
+    @ApiModelProperty(notes = "排序字段")
+    private String sortFiled;
+
+    /**
+     * 排序方式:升序asc;降序desc
+     */
+    @ApiModelProperty(notes = "排序方式:升序asc;降序desc")
+    private String sortType;
+}

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

@@ -0,0 +1,58 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDate;
+
+/**
+ * @author tianhua
+ * @time 2023/8/9
+ * @Description 查询LTV数据总计的条件参数实体
+ **/
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class LtvDataTotalDTO{
+
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty(notes = "游戏ID")
+    private Long gameId;
+
+    /**
+     * 推广游戏应用类别
+     */
+    @ApiModelProperty(notes = "游戏类别")
+    private Long classify;
+
+    /**
+     * SDK来源
+     */
+    @ApiModelProperty(value = "SDK来源")
+    private String sourceSystem;
+
+    /**
+     * 注册时间(开始)
+     */
+    @ApiModelProperty(notes = "注册开始时间")
+    private LocalDate registeredBeginDate;
+
+    /**
+     * 注册时间(结束)
+     */
+    @ApiModelProperty(notes = "注册结束时间")
+    private LocalDate registeredEndDate;
+
+    /**
+     * 选择展示数据种类
+     */
+    @ApiModelProperty(notes = "选择展示数据种类:buy -> 买量 ; nature -> 自然量 ; total -> 总量")
+    private String tableTypes;
+
+}

+ 9 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/PitcherDataDayDTO.java

@@ -0,0 +1,9 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+/**
+ * @author tianhua
+ * @time 2023/8/15
+ * @Description 投手每日数据查询条件实体
+ **/
+public class PitcherDataDayDTO {
+}

+ 9 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/PitcherDataDayTotalDTO.java

@@ -0,0 +1,9 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+/**
+ * @author tianhua
+ * @time 2023/8/15
+ * @Description 投手每日数据总计查询条件实体
+ **/
+public class PitcherDataDayTotalDTO {
+}

+ 9 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/PitcherDataTotalDTO.java

@@ -0,0 +1,9 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+/**
+ * @author tianhua
+ * @time 2023/8/15
+ * @Description 投手总数据查询条件实体
+ **/
+public class PitcherDataTotalDTO {
+}

+ 9 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/PitcherDataTotalSumDTO.java

@@ -0,0 +1,9 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+/**
+ * @author tianhua
+ * @time 2023/8/15
+ * @Description 投手总数据总计查询条件实体
+ **/
+public class PitcherDataTotalSumDTO {
+}

+ 9 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/PitcherGameDataDayDTO.java

@@ -0,0 +1,9 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+/**
+ * @author tianhua
+ * @time 2023/8/15
+ * @Description 投手游戏每日数据查询条件实体
+ **/
+public class PitcherGameDataDayDTO {
+}

+ 9 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/PitcherGameDataDayTotalDTO.java

@@ -0,0 +1,9 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+/**
+ * @author tianhua
+ * @time 2023/8/15
+ * @Description 投手游戏每日数据总计查询条件实体
+ **/
+public class PitcherGameDataDayTotalDTO {
+}

+ 9 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/PitcherGameDataTotalDTO.java

@@ -0,0 +1,9 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+/**
+ * @author tianhua
+ * @time 2023/8/15
+ * @Description 投手游戏总数据查询条件实体
+ **/
+public class PitcherGameDataTotalDTO {
+}

+ 9 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/PitcherGameDataTotalSumDTO.java

@@ -0,0 +1,9 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+/**
+ * @author tianhua
+ * @time 2023/8/15
+ * @Description 投手游戏总数据总计查询条件实体
+ **/
+public class PitcherGameDataTotalSumDTO {
+}

+ 131 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/TencentPromotionDayDTO.java

@@ -0,0 +1,131 @@
+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;
+
+/**
+ * @author tianhua
+ * @time 2023/7/27
+ * @Description 前端传递的查询参数实体(腾讯广告)
+ **/
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class TencentPromotionDayDTO extends BasePage {
+
+    /**
+     * 消耗开始日期
+     */
+    @ApiModelProperty(value = "消耗开始时间")
+    private LocalDate costBeginDate;
+
+    /**
+     * 消耗结束日期
+     */
+    @ApiModelProperty(value = "消耗结束时间")
+    private LocalDate costEndDate;
+
+    /**
+     * SDK来源
+     */
+    @ApiModelProperty(value = "SDK来源")
+    private String sourceSystem;
+
+    /**
+     * 广告ID
+     */
+    @ApiModelProperty(value = "广告ID")
+    private Long promotionId;
+
+    /**
+     * 广告名称
+     */
+    @ApiModelProperty(value = "广告名称")
+    private String promotionName;
+
+    /**
+     * 广告状态
+     */
+    @ApiModelProperty(value = "广告状态")
+    private String status;
+
+    /**
+     * 项目ID
+     */
+    @ApiModelProperty(value = "项目ID")
+    private Long projectId;
+
+    /**
+     * 项目名称
+     */
+    @ApiModelProperty(value = "项目名称")
+    private String projectName;
+
+    /**
+     * 推广账号名称
+     */
+    @ApiModelProperty(value = "推广账号名称")
+    private String accountName;
+
+    /**
+     * 推广账号ID
+     */
+    @ApiModelProperty(value = "推广账号ID")
+    private Long accountId;
+
+    /**
+     * 投放媒体
+     */
+    @ApiModelProperty(value = "投放媒体")
+    private String accountType;
+
+    /**
+     * 投手ID
+     */
+    @ApiModelProperty(value = "投手ID")
+    private Long pitcherId;
+
+    /**
+     * 渠道ID
+     */
+    @ApiModelProperty(value = "渠道ID")
+    private Long[] agentId;
+
+    /**
+     * cp名称
+     */
+    @ApiModelProperty(value = "CP名称")
+    private String cpName;
+
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty(value = "游戏ID")
+    private Long gameId;
+
+    /**
+     * 游戏应用类型
+     */
+    @ApiModelProperty(value = "游戏应用类型")
+    private Long classify;
+
+    /**
+     * 排序字段
+     */
+    @ApiModelProperty(notes = "排序字段")
+    private String sortFiled;
+
+    /**
+     * 排序方式:升序asc;降序desc
+     */
+    @ApiModelProperty(notes = "排序方式:升序asc;降序desc")
+    private String sortType;
+
+}

+ 118 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/TencentPromotionDayTotalDTO.java

@@ -0,0 +1,118 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDate;
+
+/**
+ * @author tianhua
+ * @time 2023/7/27
+ * @Description 前端传递的查询参数实体(腾讯广告)
+ **/
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class TencentPromotionDayTotalDTO {
+
+    /**
+     * 消耗开始日期
+     */
+    @ApiModelProperty(value = "消耗开始时间")
+    private LocalDate costBeginDate;
+
+    /**
+     * 消耗结束日期
+     */
+    @ApiModelProperty(value = "消耗结束时间")
+    private LocalDate costEndDate;
+
+    /**
+     * SDK来源
+     */
+    @ApiModelProperty(value = "SDK来源")
+    private String sourceSystem;
+
+    /**
+     * 广告ID
+     */
+    @ApiModelProperty(value = "广告ID")
+    private Long promotionId;
+
+    /**
+     * 广告名称
+     */
+    @ApiModelProperty(value = "广告名称")
+    private String promotionName;
+
+    /**
+     * 广告状态
+     */
+    @ApiModelProperty(value = "广告状态")
+    private String status;
+
+    /**
+     * 项目ID
+     */
+    @ApiModelProperty(value = "项目ID")
+    private Long projectId;
+
+    /**
+     * 项目名称
+     */
+    @ApiModelProperty(value = "项目名称")
+    private String projectName;
+
+    /**
+     * 推广账号名称
+     */
+    @ApiModelProperty(value = "推广账号名称")
+    private String accountName;
+
+    /**
+     * 推广账号ID
+     */
+    @ApiModelProperty(value = "推广账号ID")
+    private Long accountId;
+
+    /**
+     * 投放媒体
+     */
+    @ApiModelProperty(value = "投放媒体")
+    private String accountType;
+
+    /**
+     * 投手ID
+     */
+    @ApiModelProperty(value = "投手ID")
+    private Long pitcherId;
+
+    /**
+     * 渠道ID
+     */
+    @ApiModelProperty(value = "渠道ID")
+    private Long[] agentId;
+
+    /**
+     * cp名称
+     */
+    @ApiModelProperty(value = "CP名称")
+    private String cpName;
+
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty(value = "游戏ID")
+    private Long gameId;
+
+    /**
+     * 游戏应用类型
+     */
+    @ApiModelProperty(value = "游戏应用类型")
+    private Long classify;
+
+}

+ 1033 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsAdgroupDay.java

@@ -0,0 +1,1033 @@
+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.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Data
+@Table(AdsAdgroupDay.TABLE_NAME)
+@PK({"dt", "sourceSystem", "promotionId", "projectId"})
+public class AdsAdgroupDay implements Serializable {
+    
+    private static final long serialVersionUID = 1L;
+    public static final String TABLE_NAME = "ads_adgroup_day";
+     
+    /**
+    * 日期
+    */
+    private LocalDate dt;
+    
+    /**
+    * SDK来源
+    */
+    private String sourceSystem;
+    
+    /**
+    * 广告ID
+    */
+    private Long promotionId;
+    
+    /**
+    * 项目ID
+    */
+    private Long projectId;
+    
+    /**
+    * 广告名称
+    */    
+    @Column
+    private String promotionName;
+    
+    /**
+    * 计划名称
+    */    
+    @Column
+    private String projectName;
+    
+    /**
+    * 推广账号名称
+    */    
+    @Column
+    private String accountName;
+    
+    /**
+    * 推广账号ID
+    */    
+    @Column
+    private Long accountId;
+    
+    /**
+    * 投放媒体
+    */    
+    @Column
+    private String accountType;
+    
+    /**
+    * 投手ID
+    */    
+    @Column
+    private Long pitcherId;
+    
+    /**
+    * 投手名称
+    */    
+    @Column
+    private String pitcherName;
+    
+    /**
+    * 渠道ID
+    */    
+    @Column
+    private Long agentId;
+    
+    /**
+    * 渠道名称
+    */    
+    @Column
+    private String agentName;
+    
+    /**
+    * 渠道标识
+    */    
+    @Column
+    private String agentKey;
+    
+    /**
+    * cp名称
+    */    
+    @Column
+    private String cpName;
+    
+    /**
+    * 游戏ID
+    */    
+    @Column
+    private Long gameId;
+    
+    /**
+    * 游戏名称
+    */    
+    @Column
+    private String gameName;
+    
+    /**
+    * 游戏应用类型
+    */    
+    @Column
+    private Long classify;
+    
+    /**
+    * 广告状态
+    */    
+    @Column
+    private String status;
+    
+    /**
+    * 创意预览
+    */    
+    @Column
+    private String creativePreview;
+    
+    /**
+    * 推广目标
+    */    
+    @Column
+    private String landingType;
+    
+    /**
+    * 出价方式
+    */    
+    @Column
+    private String pricing;
+    
+    /**
+    * 当前出价
+    */    
+    @Column
+    private String cpaBid;
+    
+    /**
+    * 深度转化ROI系数
+    */    
+    @Column
+    private String roiGoal;
+    
+    /**
+    * 日预算
+    */    
+    @Column
+    private String budget;
+    
+    /**
+    * 投放开始时间
+    */    
+    @Column
+    private LocalDateTime startTime;
+    
+    /**
+    * 投放结束时间
+    */    
+    @Column
+    private LocalDateTime endTime;
+    
+    /**
+    * 备注
+    */    
+    @Column
+    private String notes;
+    
+    /**
+    * 服务商
+    */    
+    @Column
+    private String service;
+    
+    /**
+    * 余额
+    */    
+    @Column
+    private String balance;
+    
+    /**
+    * 注册人数 (应用下载广告数据-激活数)
+    */    
+    @Column
+    private Long active;
+    
+    /**
+    * 注册成本 (应用下载广告数据-激活成本)
+    */    
+    @Column
+    private BigDecimal activeCost;
+    
+    /**
+    * 首日转化数 (转化数据-转化数)
+    */    
+    @Column
+    private Long firstConvertCount;
+    
+    /**
+    * 首日转化成本 (转化数据-转化成本)
+    */    
+    @Column
+    private BigDecimal firstConvertCost;
+    
+    /**
+    * 首次付费率 (应用下载广告数据-首次付费率)
+    */    
+    @Column
+    private BigDecimal firstActivePayRate;
+    
+    /**
+    * 首日付费金额(当日付费金额-所选时间范围内的激活用户,激活当日在APP内的付费金额)
+    */    
+    @Column
+    private BigDecimal firstAttributionGameInAppLtv1day;
+    
+    /**
+    * 首日付费ROI (当日付费ROI)
+    */    
+    @Column
+    private BigDecimal firstAttributionGameInAppRoi1day;
+    
+    /**
+    * 付费次数 (应用下载广告数据-付费次数)
+    */    
+    @Column
+    private Long gamePayCount;
+    
+    /**
+    * 今日消耗
+    */    
+    @Column
+    private BigDecimal todayCost;
+    
+    /**
+    * 广告总消耗
+    */    
+    @Column
+    private BigDecimal promotionTotalCost;
+    
+    /**
+    * 曝光量
+    */    
+    @Column
+    private Long showCount;
+    
+    /**
+    * 千次曝光成本
+    */    
+    @Column
+    private BigDecimal thousandDisplayPrice;
+    
+    /**
+    * 点击量
+    */    
+    @Column
+    private Long clickCount;
+    
+    /**
+    * 点击均价
+    */    
+    @Column
+    private BigDecimal avgClickCost;
+    
+    /**
+    * 点击率
+    */    
+    @Column
+    private BigDecimal ctr;
+    
+    /**
+    * 转化目标
+    */    
+    @Column
+    private String convertTarget;
+    
+    /**
+    * 转化目标量
+    */    
+    @Column
+    private Long convertCount;
+    
+    /**
+    * 转化目标成本
+    */    
+    @Column
+    private BigDecimal convertCost;
+    
+    /**
+    * 目标转化率
+    */    
+    @Column
+    private BigDecimal convertRate;
+    
+    /**
+    * 新增用户数
+    */    
+    @Column
+    private Long regNum;
+    
+    /**
+    * 广告总注册人数
+    */    
+    @Column
+    private Long regTotalNum;
+    
+    /**
+    * 总创角人数
+    */    
+    @Column
+    private Long roleTotalNum;
+    
+    /**
+    * 首日创角人数
+    */    
+    @Column
+    private Long firstRoleNum;
+    
+    /**
+    * 新用户累计创角人数
+    */    
+    @Column
+    private Long newUserTotalRoleNum;
+    
+    /**
+    * 注册成本
+    */    
+    @Column
+    private BigDecimal regCost;
+    
+    /**
+    * 总注册成本
+    */    
+    @Column
+    private BigDecimal regTotalCost;
+    
+    /**
+    * 首日创角成本
+    */    
+    @Column
+    private BigDecimal firstRoleCost;
+    
+    /**
+    * 新用户创角成本
+    */    
+    @Column
+    private BigDecimal newUserTotalRoleCost;
+    
+    /**
+    * 总创角成本
+    */    
+    @Column
+    private BigDecimal roleTotalCost;
+    
+    /**
+    * 首日创角率
+    */    
+    @Column
+    private BigDecimal firstRoleRate;
+    
+    /**
+    * 新用户创角率
+    */    
+    @Column
+    private BigDecimal newUserTotalRoleRate;
+    
+    /**
+    * 总创角率
+    */    
+    @Column
+    private BigDecimal roleTotalRate;
+    
+    /**
+    * 首日新用户付费次数
+    */    
+    @Column
+    private Long firstNewUserAmountCount;
+    
+    /**
+    * 首日新用户付费人数
+    */    
+    @Column
+    private Long firstNewUserAmountNum;
+    
+    /**
+    * 首日新用户付费金额
+    */    
+    @Column
+    private BigDecimal firstNewUserAmount;
+    
+    /**
+    * 首日扣单数
+    */    
+    @Column
+    private Long firstSubAmountCount;
+    
+    /**
+    * 首日扣单金额
+    */    
+    @Column
+    private BigDecimal firstSubAmount;
+    
+    /**
+    * 至今付费次数
+    */    
+    @Column
+    private Long newUserTotalAmountCount;
+    
+    /**
+    * 至今付费人数
+    */    
+    @Column
+    private Long newUserTotalAmountNum;
+    
+    /**
+    * 至今付费金额
+    */    
+    @Column
+    private BigDecimal newUserTotalAmount;
+    
+    /**
+    * 总充值次数
+    */    
+    @Column
+    private Long totalAmountCount;
+    
+    /**
+    * 总充值人数
+    */    
+    @Column
+    private Long totalAmountNum;
+    
+    /**
+    * 总充值金额
+    */    
+    @Column
+    private BigDecimal totalAmount;
+    
+    /**
+    * 首日ROI
+    */    
+    @Column
+    private BigDecimal firstRoi;
+    
+    /**
+    * 新用户24小时充值金额
+    */    
+    @Column
+    private BigDecimal twentyFourHoursAmount;
+    
+    /**
+    * 新用户24小时ROI
+    */    
+    @Column
+    private BigDecimal twentyFourHoursRoi;
+    
+    /**
+    * 总ROI
+    */    
+    @Column
+    private BigDecimal totalRoi;
+    
+    /**
+    * 广告总ROI
+    */    
+    @Column
+    private BigDecimal promotionTotalRoi;
+    
+    /**
+    * 首日新用户付费成本
+    */    
+    @Column
+    private BigDecimal firstNewUserRechargeCost;
+    
+    /**
+    * 至今付费成本
+    */    
+    @Column
+    private BigDecimal newUserTotalRechargeCost;
+    
+    /**
+    * 广告总付费成本
+    */    
+    @Column
+    private BigDecimal totalRechargeCost;
+    
+    /**
+    * 新增付费ARPPU
+    */    
+    @Column
+    private BigDecimal firstNewUserArppu;
+    
+    /**
+    * 至今付费ARPPU
+    */    
+    @Column
+    private BigDecimal newUserTotalAmountArppu;
+    
+    /**
+    * 新增付费100+用户数
+    */    
+    @Column
+    private Long firstNewUserHundredUserNum;
+    
+    /**
+    * 新增付费200+用户数
+    */    
+    @Column
+    private Long firstNewUserTwoHundredUserNum;
+    
+    /**
+    * 至今付费100+用户数
+    */    
+    @Column
+    private Long newUserTotalHundredUserNum;
+    
+    /**
+    * 首充50~100元用户数
+    */    
+    @Column
+    private Long firstRechargeFiftyHundredNum;
+    
+    /**
+    * 新增付费100+用户付费成本
+    */    
+    @Column
+    private BigDecimal firstNewUserHundredUserCost;
+    
+    /**
+    * 新增付费200+用户付费成本
+    */    
+    @Column
+    private BigDecimal firstNewUserTwoHundredUserCost;
+    
+    /**
+    * 至今付费100+用户付费成本
+    */    
+    @Column
+    private BigDecimal newUserTotalHundredUserCost;
+    
+    /**
+    * 首充50~100元占比
+    */    
+    @Column
+    private BigDecimal firstRechargeFiftyHundredRate;
+    
+    /**
+    * 首日IOS付费次数
+    */    
+    @Column
+    private Long firstIosAmountCount;
+    
+    /**
+    * 首日IOS付费人数
+    */    
+    @Column
+    private Long firstIosAmountNum;
+    
+    /**
+    * 首日IOS付费金额
+    */    
+    @Column
+    private BigDecimal firstIosAmount;
+    
+    /**
+    * 首日Android付费次数
+    */    
+    @Column
+    private Long firstAndroidAmountCount;
+    
+    /**
+    * 首日Android付费人数
+    */    
+    @Column
+    private Long firstAndroidAmountNum;
+    
+    /**
+    * 首日Android付费金额
+    */    
+    @Column
+    private BigDecimal firstAndroidAmount;
+    
+    /**
+    * 首日IOS付费人数占比
+    */    
+    @Column
+    private BigDecimal firstIosAmountNumRate;
+    
+    /**
+    * 首日IOS付费金额占比
+    */    
+    @Column
+    private BigDecimal firstIosAmountRate;
+    
+    /**
+    * 首日IOS付费ROI
+    */    
+    @Column
+    private BigDecimal firstIosAmountRoi;
+    
+    /**
+    * 首日Android付费人数占比
+    */    
+    @Column
+    private BigDecimal firstAndroidAmountNumRate;
+    
+    /**
+    * 首日Android付费金额占比
+    */    
+    @Column
+    private BigDecimal firstAndroidAmountRate;
+    
+    /**
+    * 首日Android付费ROI
+    */    
+    @Column
+    private BigDecimal firstAndroidAmountRoi;
+    
+    /**
+    * 首日付费率
+    */    
+    @Column
+    private BigDecimal firstAmountRate;
+    
+    /**
+    * 新增客单价
+    */    
+    @Column
+    private BigDecimal firstNewUserAvgPrice;
+    
+    /**
+    * 至今客单价
+    */    
+    @Column
+    private BigDecimal newUserTotalAvgPrice;
+    
+    /**
+    * ltv1 (首日付费金额(attribution_game_in_app_ltv1day) / 注册人数)
+    */    
+    @Column
+    private BigDecimal ltvDay1;
+    
+    /**
+    * 每日扣单数 (首日新用户付费次数 - 首日扣单数)
+    */    
+    @Column
+    private Long subOrderNum;
+    
+    /**
+    * 每日扣单金额  (首日新用户付费金额 - 首日扣单金额)
+    */    
+    @Column
+    private BigDecimal subOrderAmount;
+    
+    /**
+    * 广告ID,消耗时间的第1天新用户充值
+    */    
+    @Column
+    private BigDecimal d1;
+    
+    /**
+    * 广告ID,消耗时间的第2天新用户充值
+    */    
+    @Column
+    private BigDecimal d2;
+    
+    /**
+    * 广告ID,消耗时间的第3天新用户充值
+    */    
+    @Column
+    private BigDecimal d3;
+    
+    /**
+    * 广告ID,消耗时间的第4天新用户充值
+    */    
+    @Column
+    private BigDecimal d4;
+    
+    /**
+    * 广告ID,消耗时间的第5天新用户充值
+    */    
+    @Column
+    private BigDecimal d5;
+    
+    /**
+    * 广告ID,消耗时间的第6天新用户充值
+    */    
+    @Column
+    private BigDecimal d6;
+    
+    /**
+    * 广告ID,消耗时间的第7天新用户充值
+    */    
+    @Column
+    private BigDecimal d7;
+    
+    /**
+    * 广告ID,消耗时间的第8天新用户充值
+    */    
+    @Column
+    private BigDecimal d8;
+    
+    /**
+    * 广告ID,消耗时间的第9天新用户充值
+    */    
+    @Column
+    private BigDecimal d9;
+    
+    /**
+    * 广告ID,消耗时间的第10天新用户充值
+    */    
+    @Column
+    private BigDecimal d10;
+    
+    /**
+    * 广告ID,消耗时间的第11天新用户充值
+    */    
+    @Column
+    private BigDecimal d11;
+    
+    /**
+    * 广告ID,消耗时间的第12天新用户充值
+    */    
+    @Column
+    private BigDecimal d12;
+    
+    /**
+    * 广告ID,消耗时间的第13天新用户充值
+    */    
+    @Column
+    private BigDecimal d13;
+    
+    /**
+    * 广告ID,消耗时间的第14天新用户充值
+    */    
+    @Column
+    private BigDecimal d14;
+    
+    /**
+    * 广告ID,消耗时间的第15天新用户充值
+    */    
+    @Column
+    private BigDecimal d15;
+    
+    /**
+    * 广告ID,消耗时间的第16天新用户充值
+    */    
+    @Column
+    private BigDecimal d16;
+    
+    /**
+    * 广告ID,消耗时间的第17天新用户充值
+    */    
+    @Column
+    private BigDecimal d17;
+    
+    /**
+    * 广告ID,消耗时间的第18天新用户充值
+    */    
+    @Column
+    private BigDecimal d18;
+    
+    /**
+    * 广告ID,消耗时间的第19天新用户充值
+    */    
+    @Column
+    private BigDecimal d19;
+    
+    /**
+    * 广告ID,消耗时间的第20天新用户充值
+    */    
+    @Column
+    private BigDecimal d20;
+    
+    /**
+    * 广告ID,消耗时间的第21天新用户充值
+    */    
+    @Column
+    private BigDecimal d21;
+    
+    /**
+    * 广告ID,消耗时间的第22天新用户充值
+    */    
+    @Column
+    private BigDecimal d22;
+    
+    /**
+    * 广告ID,消耗时间的第23天新用户充值
+    */    
+    @Column
+    private BigDecimal d23;
+    
+    /**
+    * 广告ID,消耗时间的第24天新用户充值
+    */    
+    @Column
+    private BigDecimal d24;
+    
+    /**
+    * 广告ID,消耗时间的第25天新用户充值
+    */    
+    @Column
+    private BigDecimal d25;
+    
+    /**
+    * 广告ID,消耗时间的第26天新用户充值
+    */    
+    @Column
+    private BigDecimal d26;
+    
+    /**
+    * 广告ID,消耗时间的第27天新用户充值
+    */    
+    @Column
+    private BigDecimal d27;
+    
+    /**
+    * 广告ID,消耗时间的第28天新用户充值
+    */    
+    @Column
+    private BigDecimal d28;
+    
+    /**
+    * 广告ID,消耗时间的第29天新用户充值
+    */    
+    @Column
+    private BigDecimal d29;
+    
+    /**
+    * 广告ID,消耗时间的第30天新用户充值
+    */    
+    @Column
+    private BigDecimal d30;
+    
+    /**
+    * 付费趋势第1天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da1;
+    
+    /**
+    * 付费趋势第2天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da2;
+    
+    /**
+    * 付费趋势第3天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da3;
+    
+    /**
+    * 付费趋势第4天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da4;
+    
+    /**
+    * 付费趋势第5天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da5;
+    
+    /**
+    * 付费趋势第6天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da6;
+    
+    /**
+    * 付费趋势第7天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da7;
+    
+    /**
+    * 付费趋势第8天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da8;
+    
+    /**
+    * 付费趋势第9天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da9;
+    
+    /**
+    * 付费趋势第10天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da10;
+    
+    /**
+    * 付费趋势第11天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da11;
+    
+    /**
+    * 付费趋势第12天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da12;
+    
+    /**
+    * 付费趋势第13天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da13;
+    
+    /**
+    * 付费趋势第14天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da14;
+    
+    /**
+    * 付费趋势第15天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da15;
+    
+    /**
+    * 付费趋势第16天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da16;
+    
+    /**
+    * 付费趋势第17天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da17;
+    
+    /**
+    * 付费趋势第18天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da18;
+    
+    /**
+    * 付费趋势第19天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da19;
+    
+    /**
+    * 付费趋势第20天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da20;
+    
+    /**
+    * 付费趋势第21天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da21;
+    
+    /**
+    * 付费趋势第22天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da22;
+    
+    /**
+    * 付费趋势第23天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da23;
+    
+    /**
+    * 付费趋势第24天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da24;
+    
+    /**
+    * 付费趋势第25天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da25;
+    
+    /**
+    * 付费趋势第26天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da26;
+    
+    /**
+    * 付费趋势第27天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da27;
+    
+    /**
+    * 付费趋势第28天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da28;
+    
+    /**
+    * 付费趋势第29天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da29;
+    
+    /**
+    * 付费趋势第30天总:金额/人数/增/回/倍
+    */    
+    @Column
+    private String da30;
+
+}
+
+

+ 812 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsGameFirstNewUserAgainDay.java

@@ -0,0 +1,812 @@
+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;
+
+/**
+ * <p>
+ * 游戏首日充值用户首日注册且充值用户复充趋势
+ * </p>
+ *
+ * @author auto
+ * @since 2023-08-09
+ */
+@Data
+@Table(AdsGameFirstNewUserAgainDay.TABLE_NAME)
+@PK({"dt", "sourceSystem", "gameId", "gameName"})
+public class AdsGameFirstNewUserAgainDay implements Serializable {
+    private static final long serialVersionUID = 1L;
+    public static final String TABLE_NAME = "ads_game_first_new_user_again_day";
+
+    /**
+     * 用户注册时间
+     */
+    private LocalDate dt;
+
+    /**
+     * SDK来源
+     */
+    private String sourceSystem;
+
+    /**
+     * 游戏ID
+     */
+    private Long gameId;
+
+    /**
+     * 游戏名称
+     */
+    private String gameName;
+
+    /**
+     * 游戏类别
+     */
+    @Column
+    private Long gameClassify;
+
+    /**
+     * 首日注册且充值用户复充趋势第1天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa1;
+
+    /**
+     * 首日注册且充值用户复充趋势在第2天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa2;
+
+    /**
+     * 首日注册且充值用户复充趋势在第3天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa3;
+
+    /**
+     * 首日注册且充值用户复充趋势在第4天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa4;
+
+    /**
+     * 首日注册且充值用户复充趋势在第5天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa5;
+
+    /**
+     * 首日注册且充值用户复充趋势在第6天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa6;
+
+    /**
+     * 首日注册且充值用户复充趋势在第7天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa7;
+
+    /**
+     * 首日注册且充值用户复充趋势在第8天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa8;
+
+    /**
+     * 首日注册且充值用户复充趋势在第9天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa9;
+
+    /**
+     * 首日注册且充值用户复充趋势在第10天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa10;
+
+    /**
+     * 首日注册且充值用户复充趋势在第11天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa11;
+
+    /**
+     * 首日注册且充值用户复充趋势在第12天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa12;
+
+    /**
+     * 首日注册且充值用户复充趋势在第13天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa13;
+
+    /**
+     * 首日注册且充值用户复充趋势在第14天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa14;
+
+    /**
+     * 首日注册且充值用户复充趋势在第15天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa15;
+
+    /**
+     * 首日注册且充值用户复充趋势在第16天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa16;
+
+    /**
+     * 首日注册且充值用户复充趋势在第17天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa17;
+
+    /**
+     * 首日注册且充值用户复充趋势在第18天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa18;
+
+    /**
+     * 首日注册且充值用户复充趋势在第19天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa19;
+
+    /**
+     * 首日注册且充值用户复充趋势在第20天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa20;
+
+    /**
+     * 首日注册且充值用户复充趋势在第21天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa21;
+
+    /**
+     * 首日注册且充值用户复充趋势在第22天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa22;
+
+    /**
+     * 首日注册且充值用户复充趋势在第23天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa23;
+
+    /**
+     * 首日注册且充值用户复充趋势在第24天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa24;
+
+    /**
+     * 首日注册且充值用户复充趋势在第25天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa25;
+
+    /**
+     * 首日注册且充值用户复充趋势在第26天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa26;
+
+    /**
+     * 首日注册且充值用户复充趋势在第27天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa27;
+
+    /**
+     * 首日注册且充值用户复充趋势在第28天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa28;
+
+    /**
+     * 首日注册且充值用户复充趋势在第29天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa29;
+
+    /**
+     * 首日注册且充值用户复充趋势在第30天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa30;
+
+    /**
+     * 首日注册且充值用户复充趋势在第2月:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againM2;
+
+    /**
+     * 首日注册且充值用户复充趋势在第3月:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againM3;
+
+    /**
+     * 首日注册且充值用户复充趋势在第4月:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againM4;
+
+    /**
+     * 首日注册且充值用户复充趋势在第5月:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againM5;
+
+    /**
+     * 首日注册且充值用户复充趋势在第6月:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againM6;
+
+    /**
+     * 首日注册且充值用户复充趋势在第7月:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againM7;
+
+    /**
+     * 首日注册且充值用户复充趋势在第8月:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againM8;
+
+    /**
+     * 首日注册且充值用户复充趋势在第9月:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againM9;
+
+    /**
+     * 首日注册且充值用户复充趋势在第10月:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againM10;
+
+    /**
+     * 首日注册且充值用户复充趋势在第11月:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againM11;
+
+    /**
+     * 首日注册且充值用户复充趋势在第1年:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againY1;
+
+    /**
+     * 首日注册且充值的用户至今:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againTotal;
+
+    /**
+     * 首日注册且充值用户复充趋势第1天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa1;
+
+    /**
+     * 首日注册且充值用户复充趋势在第2天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa2;
+
+    /**
+     * 首日注册且充值用户复充趋势在第3天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa3;
+
+    /**
+     * 首日注册且充值用户复充趋势在第4天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa4;
+
+    /**
+     * 首日注册且充值用户复充趋势在第5天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa5;
+
+    /**
+     * 首日注册且充值用户复充趋势在第6天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa6;
+
+    /**
+     * 首日注册且充值用户复充趋势在第7天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa7;
+
+    /**
+     * 首日注册且充值用户复充趋势在第8天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa8;
+
+    /**
+     * 首日注册且充值用户复充趋势在第9天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa9;
+
+    /**
+     * 首日注册且充值用户复充趋势在第10天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa10;
+
+    /**
+     * 首日注册且充值用户复充趋势在第11天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa11;
+
+    /**
+     * 首日注册且充值用户复充趋势在第12天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa12;
+
+    /**
+     * 首日注册且充值用户复充趋势在第13天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa13;
+
+    /**
+     * 首日注册且充值用户复充趋势在第14天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa14;
+
+    /**
+     * 首日注册且充值用户复充趋势在第15天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa15;
+
+    /**
+     * 首日注册且充值用户复充趋势在第16天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa16;
+
+    /**
+     * 首日注册且充值用户复充趋势在第17天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa17;
+
+    /**
+     * 首日注册且充值用户复充趋势在第18天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa18;
+
+    /**
+     * 首日注册且充值用户复充趋势在第19天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa19;
+
+    /**
+     * 首日注册且充值用户复充趋势在第20天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa20;
+
+    /**
+     * 首日注册且充值用户复充趋势在第21天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa21;
+
+    /**
+     * 首日注册且充值用户复充趋势在第22天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa22;
+
+    /**
+     * 首日注册且充值用户复充趋势在第23天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa23;
+
+    /**
+     * 首日注册且充值用户复充趋势在第24天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa24;
+
+    /**
+     * 首日注册且充值用户复充趋势在第25天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa25;
+
+    /**
+     * 首日注册且充值用户复充趋势在第26天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa26;
+
+    /**
+     * 首日注册且充值用户复充趋势在第27天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa27;
+
+    /**
+     * 首日注册且充值用户复充趋势在第28天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa28;
+
+    /**
+     * 首日注册且充值用户复充趋势在第29天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa29;
+
+    /**
+     * 首日注册且充值用户复充趋势在第30天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa30;
+
+    /**
+     * 首日注册且充值用户复充趋势在第2月:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyM2;
+
+    /**
+     * 首日注册且充值用户复充趋势在第3月:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyM3;
+
+    /**
+     * 首日注册且充值用户复充趋势在第4月:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyM4;
+
+    /**
+     * 首日注册且充值用户复充趋势在第5月:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyM5;
+
+    /**
+     * 首日注册且充值用户复充趋势在第6月:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyM6;
+
+    /**
+     * 首日注册且充值用户复充趋势在第7月:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyM7;
+
+    /**
+     * 首日注册且充值用户复充趋势在第8月:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyM8;
+
+    /**
+     * 首日注册且充值用户复充趋势在第9月:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyM9;
+
+    /**
+     * 首日注册且充值用户复充趋势在第10月:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyM10;
+
+    /**
+     * 首日注册且充值用户复充趋势在第11月:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyM11;
+
+    /**
+     * 首日注册且充值用户复充趋势在第1年:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyY1;
+
+    /**
+     * 首日注册且充值的用户至今:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyTotal;
+
+    /**
+     * 首日注册且充值用户复充趋势第1天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa1;
+
+    /**
+     * 首日注册且充值用户复充趋势在第2天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa2;
+
+    /**
+     * 首日注册且充值用户复充趋势在第3天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa3;
+
+    /**
+     * 首日注册且充值用户复充趋势在第4天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa4;
+
+    /**
+     * 首日注册且充值用户复充趋势在第5天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa5;
+
+    /**
+     * 首日注册且充值用户复充趋势在第6天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa6;
+
+    /**
+     * 首日注册且充值用户复充趋势在第7天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa7;
+
+    /**
+     * 首日注册且充值用户复充趋势在第8天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa8;
+
+    /**
+     * 首日注册且充值用户复充趋势在第9天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa9;
+
+    /**
+     * 首日注册且充值用户复充趋势在第10天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa10;
+
+    /**
+     * 首日注册且充值用户复充趋势在第11天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa11;
+
+    /**
+     * 首日注册且充值用户复充趋势在第12天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa12;
+
+    /**
+     * 首日注册且充值用户复充趋势在第13天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa13;
+
+    /**
+     * 首日注册且充值用户复充趋势在第14天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa14;
+
+    /**
+     * 首日注册且充值用户复充趋势在第15天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa15;
+
+    /**
+     * 首日注册且充值用户复充趋势在第16天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa16;
+
+    /**
+     * 首日注册且充值用户复充趋势在第17天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa17;
+
+    /**
+     * 首日注册且充值用户复充趋势在第18天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa18;
+
+    /**
+     * 首日注册且充值用户复充趋势在第19天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa19;
+
+    /**
+     * 首日注册且充值用户复充趋势在第20天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa20;
+
+    /**
+     * 首日注册且充值用户复充趋势在第21天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa21;
+
+    /**
+     * 首日注册且充值用户复充趋势在第22天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa22;
+
+    /**
+     * 首日注册且充值用户复充趋势在第23天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa23;
+
+    /**
+     * 首日注册且充值用户复充趋势在第24天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa24;
+
+    /**
+     * 首日注册且充值用户复充趋势在第25天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa25;
+
+    /**
+     * 首日注册且充值用户复充趋势在第26天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa26;
+
+    /**
+     * 首日注册且充值用户复充趋势在第27天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa27;
+
+    /**
+     * 首日注册且充值用户复充趋势在第28天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa28;
+
+    /**
+     * 首日注册且充值用户复充趋势在第29天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa29;
+
+    /**
+     * 首日注册且充值用户复充趋势在第30天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa30;
+
+    /**
+     * 首日注册且充值用户复充趋势在第2月:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureM2;
+
+    /**
+     * 首日注册且充值用户复充趋势在第3月:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureM3;
+
+    /**
+     * 首日注册且充值用户复充趋势在第4月:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureM4;
+
+    /**
+     * 首日注册且充值用户复充趋势在第5月:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureM5;
+
+    /**
+     * 首日注册且充值用户复充趋势在第6月:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureM6;
+
+    /**
+     * 首日注册且充值用户复充趋势在第7月:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureM7;
+
+    /**
+     * 首日注册且充值用户复充趋势在第8月:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureM8;
+
+    /**
+     * 首日注册且充值用户复充趋势在第9月:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureM9;
+
+    /**
+     * 首日注册且充值用户复充趋势在第10月:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureM10;
+
+    /**
+     * 首日注册且充值用户复充趋势在第11月:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureM11;
+
+    /**
+     * 首日注册且充值用户复充趋势在第1年:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureY1;
+
+    /**
+     * 首日注册且充值的用户至今:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureTotal;
+
+
+}
+
+
+

+ 357 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsGameServerDay.java

@@ -0,0 +1,357 @@
+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.math.BigDecimal;
+import java.time.LocalDate;
+
+@Data
+@Table(AdsGameServerDay.TABLE_NAME)
+@PK({"dt", "sourceSystem", "serverId", "serverName", "gameId", "gameName"})
+public class AdsGameServerDay implements Serializable {
+    private static final long serialVersionUID = 1L;
+    public static final String TABLE_NAME = "ads_game_server_day";
+     
+    /**
+    * 开服时间
+    */
+    private LocalDate dt;
+    
+    /**
+    * SDK来源
+    */
+    private String sourceSystem;
+    
+    /**
+    * 区服ID
+    */
+    private Long serverId;
+    
+    /**
+    * 区服名称
+    */
+    private String serverName;
+    
+    /**
+    * 游戏ID
+    */
+    private Long gameId;
+    
+    /**
+    * 游戏名称
+    */
+    private String gameName;
+    
+    /**
+    * 游戏类别
+    */    
+    @Column
+    private Long classify;
+    
+    /**
+    * 滚服人数
+    */    
+    @Column
+    private Long outTotalNum;
+    
+    /**
+    * 滚服付费人数
+    */    
+    @Column
+    private Long outTotalAmountNum;
+    
+    /**
+    * 滚服付费金额
+    */    
+    @Column
+    private BigDecimal outTotalAmount;
+    
+    /**
+    * 滚服付费占比
+    */    
+    @Column
+    private BigDecimal outTotalRate;
+    
+    /**
+    * 创角人数
+    */    
+    @Column
+    private Long totalRoleNum;
+    
+    /**
+    * 注册人数
+    */    
+    @Column
+    private Long totalRegNum;
+    
+    /**
+    * 付费人数
+    */    
+    @Column
+    private Long totalAmountNum;
+    
+    /**
+    * 付费金额
+    */    
+    @Column
+    private BigDecimal totalAmount;
+    
+    /**
+    * 区服第1天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da1;
+    
+    /**
+    * 区服在第2天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da2;
+    
+    /**
+    * 区服在第3天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da3;
+    
+    /**
+    * 区服在第4天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da4;
+    
+    /**
+    * 区服在第5天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da5;
+    
+    /**
+    * 区服在第6天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da6;
+    
+    /**
+    * 区服在第7天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da7;
+    
+    /**
+    * 区服在第8天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da8;
+    
+    /**
+    * 区服在第9天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da9;
+    
+    /**
+    * 区服在第10天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da10;
+    
+    /**
+    * 区服在第11天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da11;
+    
+    /**
+    * 区服在第12天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da12;
+    
+    /**
+    * 区服在第13天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da13;
+    
+    /**
+    * 区服在第14天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da14;
+    
+    /**
+    * 区服在第15天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da15;
+    
+    /**
+    * 区服在第16天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da16;
+    
+    /**
+    * 区服在第17天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da17;
+    
+    /**
+    * 区服在第18天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da18;
+    
+    /**
+    * 区服在第19天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da19;
+    
+    /**
+    * 区服在第20天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da20;
+    
+    /**
+    * 区服在第21天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da21;
+    
+    /**
+    * 区服在第22天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da22;
+    
+    /**
+    * 区服在第23天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da23;
+    
+    /**
+    * 区服在第24天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da24;
+    
+    /**
+    * 区服在第25天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da25;
+    
+    /**
+    * 区服在第26天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da26;
+    
+    /**
+    * 区服在第27天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da27;
+    
+    /**
+    * 区服在第28天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da28;
+    
+    /**
+    * 区服在第29天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da29;
+    
+    /**
+    * 区服在第30天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String da30;
+    
+    /**
+    * 区服在第2月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String m2;
+    
+    /**
+    * 区服在第3月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String m3;
+    
+    /**
+    * 区服在第4月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String m4;
+    
+    /**
+    * 区服在第5月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String m5;
+    
+    /**
+    * 区服在第6月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String m6;
+    
+    /**
+    * 区服在第7月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String m7;
+    
+    /**
+    * 区服在第8月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String m8;
+    
+    /**
+    * 区服在第9月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String m9;
+    
+    /**
+    * 区服在第10月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String m10;
+    
+    /**
+    * 区服在第11月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String m11;
+    
+    /**
+    * 区服在第1年:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String y1;
+    
+    /**
+    * 区服至今:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+    */    
+    @Column
+    private String total;
+
+}
+
+

+ 11 - 4
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsPromotionDay.java

@@ -11,6 +11,7 @@ import org.nutz.dao.entity.annotation.Table;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 
 /**
  * <p>
@@ -25,7 +26,7 @@ import java.time.LocalDate;
 @AllArgsConstructor
 @Builder
 @Table(AdsPlayerRechargeRanking.TABLE_NAME)
-@PK({"dt", "sourceSystem", "promotion_id", "project_id"})
+@PK({"dt", "sourceSystem", "promotionId", "projectId"})
 public class AdsPromotionDay implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -47,7 +48,7 @@ public class AdsPromotionDay implements Serializable {
     private Long promotionId;
 
     /**
-     * 计划ID
+     * 项目ID
      */
     private Long projectId;
 
@@ -196,10 +197,16 @@ public class AdsPromotionDay implements Serializable {
     private String budget;
 
     /**
-     * 投放时间
+     * 投放开始时间
      */
     @Column
-    private String scheduleTime;
+    private LocalDateTime startTime;
+
+    /**
+     * 投放结束时间
+     */
+    @Column
+    private LocalDateTime endTime;
 
     /**
      * 今日消耗

+ 1858 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsUserRoleLtvTrend.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.math.BigDecimal;
+import java.time.LocalDate;
+
+@Data
+@Table(AdsUserRoleLtvTrend.TABLE_NAME)
+@PK({"dt", "classify", "gameId", "gameName"})
+public class AdsUserRoleLtvTrend implements Serializable {
+    private static final long serialVersionUID = 1L;
+    public static final String TABLE_NAME = "ads_user_role_ltv_trend";
+     
+    /**
+    * 用户注册时间
+    */
+    private LocalDate dt;
+    
+    /**
+    * 游戏ID
+    */
+    private Long gameId;
+    
+    /**
+    * 游戏名称
+    */
+    private String gameName;
+    
+    /**
+    * 游戏类别
+    */
+    private Long gameClassify;
+    
+        
+    @Column
+    private String sourceSystem;
+    
+    /**
+    * 用户LTV1
+    */    
+    @Column
+    private BigDecimal userLtv1;
+    
+    /**
+    * 用户LTV2
+    */    
+    @Column
+    private BigDecimal userLtv2;
+    
+    /**
+    * 用户LTV3
+    */    
+    @Column
+    private BigDecimal userLtv3;
+    
+    /**
+    * 用户LTV4
+    */    
+    @Column
+    private BigDecimal userLtv4;
+    
+    /**
+    * 用户LTV5
+    */    
+    @Column
+    private BigDecimal userLtv5;
+    
+    /**
+    * 用户LTV6
+    */    
+    @Column
+    private BigDecimal userLtv6;
+    
+    /**
+    * 用户LTV7
+    */    
+    @Column
+    private BigDecimal userLtv7;
+    
+    /**
+    * 用户LTV8
+    */    
+    @Column
+    private BigDecimal userLtv8;
+    
+    /**
+    * 用户LTV9
+    */    
+    @Column
+    private BigDecimal userLtv9;
+    
+    /**
+    * 用户LTV10
+    */    
+    @Column
+    private BigDecimal userLtv10;
+    
+    /**
+    * 用户LTV11
+    */    
+    @Column
+    private BigDecimal userLtv11;
+    
+    /**
+    * 用户LTV12
+    */    
+    @Column
+    private BigDecimal userLtv12;
+    
+    /**
+    * 用户LTV13
+    */    
+    @Column
+    private BigDecimal userLtv13;
+    
+    /**
+    * 用户LTV14
+    */    
+    @Column
+    private BigDecimal userLtv14;
+    
+    /**
+    * 用户LTV15
+    */    
+    @Column
+    private BigDecimal userLtv15;
+    
+    /**
+    * 用户LTV16
+    */    
+    @Column
+    private BigDecimal userLtv16;
+    
+    /**
+    * 用户LTV17
+    */    
+    @Column
+    private BigDecimal userLtv17;
+    
+    /**
+    * 用户LTV18
+    */    
+    @Column
+    private BigDecimal userLtv18;
+    
+    /**
+    * 用户LTV19
+    */    
+    @Column
+    private BigDecimal userLtv19;
+    
+    /**
+    * 用户LTV20
+    */    
+    @Column
+    private BigDecimal userLtv20;
+    
+    /**
+    * 用户LTV21
+    */    
+    @Column
+    private BigDecimal userLtv21;
+    
+    /**
+    * 用户LTV22
+    */    
+    @Column
+    private BigDecimal userLtv22;
+    
+    /**
+    * 用户LTV23
+    */    
+    @Column
+    private BigDecimal userLtv23;
+    
+    /**
+    * 用户LTV24
+    */    
+    @Column
+    private BigDecimal userLtv24;
+    
+    /**
+    * 用户LTV25
+    */    
+    @Column
+    private BigDecimal userLtv25;
+    
+    /**
+    * 用户LTV26
+    */    
+    @Column
+    private BigDecimal userLtv26;
+    
+    /**
+    * 用户LTV27
+    */    
+    @Column
+    private BigDecimal userLtv27;
+    
+    /**
+    * 用户LTV28
+    */    
+    @Column
+    private BigDecimal userLtv28;
+    
+    /**
+    * 用户LTV29
+    */    
+    @Column
+    private BigDecimal userLtv29;
+    
+    /**
+    * 用户LTV30
+    */    
+    @Column
+    private BigDecimal userLtv30;
+    
+    /**
+    * 用户LTV31
+    */    
+    @Column
+    private BigDecimal userLtv31;
+    
+    /**
+    * 用户LTV32
+    */    
+    @Column
+    private BigDecimal userLtv32;
+    
+    /**
+    * 用户LTV33
+    */    
+    @Column
+    private BigDecimal userLtv33;
+    
+    /**
+    * 用户LTV34
+    */    
+    @Column
+    private BigDecimal userLtv34;
+    
+    /**
+    * 用户LTV35
+    */    
+    @Column
+    private BigDecimal userLtv35;
+    
+    /**
+    * 用户LTV36
+    */    
+    @Column
+    private BigDecimal userLtv36;
+    
+    /**
+    * 用户LTV37
+    */    
+    @Column
+    private BigDecimal userLtv37;
+    
+    /**
+    * 用户LTV38
+    */    
+    @Column
+    private BigDecimal userLtv38;
+    
+    /**
+    * 用户LTV39
+    */    
+    @Column
+    private BigDecimal userLtv39;
+    
+    /**
+    * 用户LTV40
+    */    
+    @Column
+    private BigDecimal userLtv40;
+    
+    /**
+    * 用户LTV41
+    */    
+    @Column
+    private BigDecimal userLtv41;
+    
+    /**
+    * 用户LTV42
+    */    
+    @Column
+    private BigDecimal userLtv42;
+    
+    /**
+    * 用户LTV43
+    */    
+    @Column
+    private BigDecimal userLtv43;
+    
+    /**
+    * 用户LTV44
+    */    
+    @Column
+    private BigDecimal userLtv44;
+    
+    /**
+    * 用户LTV45
+    */    
+    @Column
+    private BigDecimal userLtv45;
+    
+    /**
+    * 用户LTV46
+    */    
+    @Column
+    private BigDecimal userLtv46;
+    
+    /**
+    * 用户LTV47
+    */    
+    @Column
+    private BigDecimal userLtv47;
+    
+    /**
+    * 用户LTV48
+    */    
+    @Column
+    private BigDecimal userLtv48;
+    
+    /**
+    * 用户LTV49
+    */    
+    @Column
+    private BigDecimal userLtv49;
+    
+    /**
+    * 用户LTV50
+    */    
+    @Column
+    private BigDecimal userLtv50;
+    
+    /**
+    * 用户LTV51
+    */    
+    @Column
+    private BigDecimal userLtv51;
+    
+    /**
+    * 用户LTV52
+    */    
+    @Column
+    private BigDecimal userLtv52;
+    
+    /**
+    * 用户LTV53
+    */    
+    @Column
+    private BigDecimal userLtv53;
+    
+    /**
+    * 用户LTV54
+    */    
+    @Column
+    private BigDecimal userLtv54;
+    
+    /**
+    * 用户LTV55
+    */    
+    @Column
+    private BigDecimal userLtv55;
+    
+    /**
+    * 用户LTV56
+    */    
+    @Column
+    private BigDecimal userLtv56;
+    
+    /**
+    * 用户LTV57
+    */    
+    @Column
+    private BigDecimal userLtv57;
+    
+    /**
+    * 用户LTV58
+    */    
+    @Column
+    private BigDecimal userLtv58;
+    
+    /**
+    * 用户LTV59
+    */    
+    @Column
+    private BigDecimal userLtv59;
+    
+    /**
+    * 用户LTV60
+    */    
+    @Column
+    private BigDecimal userLtv60;
+    
+    /**
+    * 用户LTV61
+    */    
+    @Column
+    private BigDecimal userLtv61;
+    
+    /**
+    * 用户LTV62
+    */    
+    @Column
+    private BigDecimal userLtv62;
+    
+    /**
+    * 用户LTV63
+    */    
+    @Column
+    private BigDecimal userLtv63;
+    
+    /**
+    * 用户LTV64
+    */    
+    @Column
+    private BigDecimal userLtv64;
+    
+    /**
+    * 用户LTV65
+    */    
+    @Column
+    private BigDecimal userLtv65;
+    
+    /**
+    * 用户LTV66
+    */    
+    @Column
+    private BigDecimal userLtv66;
+    
+    /**
+    * 用户LTV67
+    */    
+    @Column
+    private BigDecimal userLtv67;
+    
+    /**
+    * 用户LTV68
+    */    
+    @Column
+    private BigDecimal userLtv68;
+    
+    /**
+    * 用户LTV69
+    */    
+    @Column
+    private BigDecimal userLtv69;
+    
+    /**
+    * 用户LTV70
+    */    
+    @Column
+    private BigDecimal userLtv70;
+    
+    /**
+    * 用户LTV71
+    */    
+    @Column
+    private BigDecimal userLtv71;
+    
+    /**
+    * 用户LTV72
+    */    
+    @Column
+    private BigDecimal userLtv72;
+    
+    /**
+    * 用户LTV73
+    */    
+    @Column
+    private BigDecimal userLtv73;
+    
+    /**
+    * 用户LTV74
+    */    
+    @Column
+    private BigDecimal userLtv74;
+    
+    /**
+    * 用户LTV75
+    */    
+    @Column
+    private BigDecimal userLtv75;
+    
+    /**
+    * 用户LTV76
+    */    
+    @Column
+    private BigDecimal userLtv76;
+    
+    /**
+    * 用户LTV77
+    */    
+    @Column
+    private BigDecimal userLtv77;
+    
+    /**
+    * 用户LTV78
+    */    
+    @Column
+    private BigDecimal userLtv78;
+    
+    /**
+    * 用户LTV79
+    */    
+    @Column
+    private BigDecimal userLtv79;
+    
+    /**
+    * 用户LTV80
+    */    
+    @Column
+    private BigDecimal userLtv80;
+    
+    /**
+    * 用户LTV81
+    */    
+    @Column
+    private BigDecimal userLtv81;
+    
+    /**
+    * 用户LTV82
+    */    
+    @Column
+    private BigDecimal userLtv82;
+    
+    /**
+    * 用户LTV83
+    */    
+    @Column
+    private BigDecimal userLtv83;
+    
+    /**
+    * 用户LTV84
+    */    
+    @Column
+    private BigDecimal userLtv84;
+    
+    /**
+    * 用户LTV85
+    */    
+    @Column
+    private BigDecimal userLtv85;
+    
+    /**
+    * 用户LTV86
+    */    
+    @Column
+    private BigDecimal userLtv86;
+    
+    /**
+    * 用户LTV87
+    */    
+    @Column
+    private BigDecimal userLtv87;
+    
+    /**
+    * 用户LTV88
+    */    
+    @Column
+    private BigDecimal userLtv88;
+    
+    /**
+    * 用户LTV89
+    */    
+    @Column
+    private BigDecimal userLtv89;
+    
+    /**
+    * 用户LTV90
+    */    
+    @Column
+    private BigDecimal userLtv90;
+    
+    /**
+    * 用户LTVm4
+    */    
+    @Column
+    private BigDecimal userLtvM4;
+    
+    /**
+    * 用户LTVm5
+    */    
+    @Column
+    private BigDecimal userLtvM5;
+    
+    /**
+    * 用户LTVm6
+    */    
+    @Column
+    private BigDecimal userLtvM6;
+    
+    /**
+    * 用户LTVm7
+    */    
+    @Column
+    private BigDecimal userLtvM7;
+    
+    /**
+    * 用户LTVm8
+    */    
+    @Column
+    private BigDecimal userLtvM8;
+    
+    /**
+    * 用户LTVm9
+    */    
+    @Column
+    private BigDecimal userLtvM9;
+    
+    /**
+    * 用户LTVm10
+    */    
+    @Column
+    private BigDecimal userLtvM10;
+    
+    /**
+    * 用户LTVm11
+    */    
+    @Column
+    private BigDecimal userLtvM11;
+    
+    /**
+    * 用户LTVy1
+    */    
+    @Column
+    private BigDecimal userLtvY1;
+    
+    /**
+    * 用户LTVtotal
+    */    
+    @Column
+    private BigDecimal userLtvTotal;
+    
+    /**
+    * 创角LTV1
+    */    
+    @Column
+    private BigDecimal roleLtv1;
+    
+    /**
+    * 创角LTV2
+    */    
+    @Column
+    private BigDecimal roleLtv2;
+    
+    /**
+    * 创角LTV3
+    */    
+    @Column
+    private BigDecimal roleLtv3;
+    
+    /**
+    * 创角LTV4
+    */    
+    @Column
+    private BigDecimal roleLtv4;
+    
+    /**
+    * 创角LTV5
+    */    
+    @Column
+    private BigDecimal roleLtv5;
+    
+    /**
+    * 创角LTV6
+    */    
+    @Column
+    private BigDecimal roleLtv6;
+    
+    /**
+    * 创角LTV7
+    */    
+    @Column
+    private BigDecimal roleLtv7;
+    
+    /**
+    * 创角LTV8
+    */    
+    @Column
+    private BigDecimal roleLtv8;
+    
+    /**
+    * 创角LTV9
+    */    
+    @Column
+    private BigDecimal roleLtv9;
+    
+    /**
+    * 创角LTV10
+    */    
+    @Column
+    private BigDecimal roleLtv10;
+    
+    /**
+    * 创角LTV11
+    */    
+    @Column
+    private BigDecimal roleLtv11;
+    
+    /**
+    * 创角LTV12
+    */    
+    @Column
+    private BigDecimal roleLtv12;
+    
+    /**
+    * 创角LTV13
+    */    
+    @Column
+    private BigDecimal roleLtv13;
+    
+    /**
+    * 创角LTV14
+    */    
+    @Column
+    private BigDecimal roleLtv14;
+    
+    /**
+    * 创角LTV15
+    */    
+    @Column
+    private BigDecimal roleLtv15;
+    
+    /**
+    * 创角LTV16
+    */    
+    @Column
+    private BigDecimal roleLtv16;
+    
+    /**
+    * 创角LTV17
+    */    
+    @Column
+    private BigDecimal roleLtv17;
+    
+    /**
+    * 创角LTV18
+    */    
+    @Column
+    private BigDecimal roleLtv18;
+    
+    /**
+    * 创角LTV19
+    */    
+    @Column
+    private BigDecimal roleLtv19;
+    
+    /**
+    * 创角LTV20
+    */    
+    @Column
+    private BigDecimal roleLtv20;
+    
+    /**
+    * 创角LTV21
+    */    
+    @Column
+    private BigDecimal roleLtv21;
+    
+    /**
+    * 创角LTV22
+    */    
+    @Column
+    private BigDecimal roleLtv22;
+    
+    /**
+    * 创角LTV23
+    */    
+    @Column
+    private BigDecimal roleLtv23;
+    
+    /**
+    * 创角LTV24
+    */    
+    @Column
+    private BigDecimal roleLtv24;
+    
+    /**
+    * 创角LTV25
+    */    
+    @Column
+    private BigDecimal roleLtv25;
+    
+    /**
+    * 创角LTV26
+    */    
+    @Column
+    private BigDecimal roleLtv26;
+    
+    /**
+    * 创角LTV27
+    */    
+    @Column
+    private BigDecimal roleLtv27;
+    
+    /**
+    * 创角LTV28
+    */    
+    @Column
+    private BigDecimal roleLtv28;
+    
+    /**
+    * 创角LTV29
+    */    
+    @Column
+    private BigDecimal roleLtv29;
+    
+    /**
+    * 创角LTV30
+    */    
+    @Column
+    private BigDecimal roleLtv30;
+    
+    /**
+    * 创角LTV31
+    */    
+    @Column
+    private BigDecimal roleLtv31;
+    
+    /**
+    * 创角LTV32
+    */    
+    @Column
+    private BigDecimal roleLtv32;
+    
+    /**
+    * 创角LTV33
+    */    
+    @Column
+    private BigDecimal roleLtv33;
+    
+    /**
+    * 创角LTV34
+    */    
+    @Column
+    private BigDecimal roleLtv34;
+    
+    /**
+    * 创角LTV35
+    */    
+    @Column
+    private BigDecimal roleLtv35;
+    
+    /**
+    * 创角LTV36
+    */    
+    @Column
+    private BigDecimal roleLtv36;
+    
+    /**
+    * 创角LTV37
+    */    
+    @Column
+    private BigDecimal roleLtv37;
+    
+    /**
+    * 创角LTV38
+    */    
+    @Column
+    private BigDecimal roleLtv38;
+    
+    /**
+    * 创角LTV39
+    */    
+    @Column
+    private BigDecimal roleLtv39;
+    
+    /**
+    * 创角LTV40
+    */    
+    @Column
+    private BigDecimal roleLtv40;
+    
+    /**
+    * 创角LTV41
+    */    
+    @Column
+    private BigDecimal roleLtv41;
+    
+    /**
+    * 创角LTV42
+    */    
+    @Column
+    private BigDecimal roleLtv42;
+    
+    /**
+    * 创角LTV43
+    */    
+    @Column
+    private BigDecimal roleLtv43;
+    
+    /**
+    * 创角LTV44
+    */    
+    @Column
+    private BigDecimal roleLtv44;
+    
+    /**
+    * 创角LTV45
+    */    
+    @Column
+    private BigDecimal roleLtv45;
+    
+    /**
+    * 创角LTV46
+    */    
+    @Column
+    private BigDecimal roleLtv46;
+    
+    /**
+    * 创角LTV47
+    */    
+    @Column
+    private BigDecimal roleLtv47;
+    
+    /**
+    * 创角LTV48
+    */    
+    @Column
+    private BigDecimal roleLtv48;
+    
+    /**
+    * 创角LTV49
+    */    
+    @Column
+    private BigDecimal roleLtv49;
+    
+    /**
+    * 创角LTV50
+    */    
+    @Column
+    private BigDecimal roleLtv50;
+    
+    /**
+    * 创角LTV51
+    */    
+    @Column
+    private BigDecimal roleLtv51;
+    
+    /**
+    * 创角LTV52
+    */    
+    @Column
+    private BigDecimal roleLtv52;
+    
+    /**
+    * 创角LTV53
+    */    
+    @Column
+    private BigDecimal roleLtv53;
+    
+    /**
+    * 创角LTV54
+    */    
+    @Column
+    private BigDecimal roleLtv54;
+    
+    /**
+    * 创角LTV55
+    */    
+    @Column
+    private BigDecimal roleLtv55;
+    
+    /**
+    * 创角LTV56
+    */    
+    @Column
+    private BigDecimal roleLtv56;
+    
+    /**
+    * 创角LTV57
+    */    
+    @Column
+    private BigDecimal roleLtv57;
+    
+    /**
+    * 创角LTV58
+    */    
+    @Column
+    private BigDecimal roleLtv58;
+    
+    /**
+    * 创角LTV59
+    */    
+    @Column
+    private BigDecimal roleLtv59;
+    
+    /**
+    * 创角LTV60
+    */    
+    @Column
+    private BigDecimal roleLtv60;
+    
+    /**
+    * 创角LTV61
+    */    
+    @Column
+    private BigDecimal roleLtv61;
+    
+    /**
+    * 创角LTV62
+    */    
+    @Column
+    private BigDecimal roleLtv62;
+    
+    /**
+    * 创角LTV63
+    */    
+    @Column
+    private BigDecimal roleLtv63;
+    
+    /**
+    * 创角LTV64
+    */    
+    @Column
+    private BigDecimal roleLtv64;
+    
+    /**
+    * 创角LTV65
+    */    
+    @Column
+    private BigDecimal roleLtv65;
+    
+    /**
+    * 创角LTV66
+    */    
+    @Column
+    private BigDecimal roleLtv66;
+    
+    /**
+    * 创角LTV67
+    */    
+    @Column
+    private BigDecimal roleLtv67;
+    
+    /**
+    * 创角LTV68
+    */    
+    @Column
+    private BigDecimal roleLtv68;
+    
+    /**
+    * 创角LTV69
+    */    
+    @Column
+    private BigDecimal roleLtv69;
+    
+    /**
+    * 创角LTV70
+    */    
+    @Column
+    private BigDecimal roleLtv70;
+    
+    /**
+    * 创角LTV71
+    */    
+    @Column
+    private BigDecimal roleLtv71;
+    
+    /**
+    * 创角LTV72
+    */    
+    @Column
+    private BigDecimal roleLtv72;
+    
+    /**
+    * 创角LTV73
+    */    
+    @Column
+    private BigDecimal roleLtv73;
+    
+    /**
+    * 创角LTV74
+    */    
+    @Column
+    private BigDecimal roleLtv74;
+    
+    /**
+    * 创角LTV75
+    */    
+    @Column
+    private BigDecimal roleLtv75;
+    
+    /**
+    * 创角LTV76
+    */    
+    @Column
+    private BigDecimal roleLtv76;
+    
+    /**
+    * 创角LTV77
+    */    
+    @Column
+    private BigDecimal roleLtv77;
+    
+    /**
+    * 创角LTV78
+    */    
+    @Column
+    private BigDecimal roleLtv78;
+    
+    /**
+    * 创角LTV79
+    */    
+    @Column
+    private BigDecimal roleLtv79;
+    
+    /**
+    * 创角LTV80
+    */    
+    @Column
+    private BigDecimal roleLtv80;
+    
+    /**
+    * 创角LTV81
+    */    
+    @Column
+    private BigDecimal roleLtv81;
+    
+    /**
+    * 创角LTV82
+    */    
+    @Column
+    private BigDecimal roleLtv82;
+    
+    /**
+    * 创角LTV83
+    */    
+    @Column
+    private BigDecimal roleLtv83;
+    
+    /**
+    * 创角LTV84
+    */    
+    @Column
+    private BigDecimal roleLtv84;
+    
+    /**
+    * 创角LTV85
+    */    
+    @Column
+    private BigDecimal roleLtv85;
+    
+    /**
+    * 创角LTV86
+    */    
+    @Column
+    private BigDecimal roleLtv86;
+    
+    /**
+    * 创角LTV87
+    */    
+    @Column
+    private BigDecimal roleLtv87;
+    
+    /**
+    * 创角LTV88
+    */    
+    @Column
+    private BigDecimal roleLtv88;
+    
+    /**
+    * 创角LTV89
+    */    
+    @Column
+    private BigDecimal roleLtv89;
+    
+    /**
+    * 创角LTV90
+    */    
+    @Column
+    private BigDecimal roleLtv90;
+    
+    /**
+    * 创角LTVm4
+    */    
+    @Column
+    private BigDecimal roleLtvM4;
+    
+    /**
+    * 创角LTVm5
+    */    
+    @Column
+    private BigDecimal roleLtvM5;
+    
+    /**
+    * 创角LTVm6
+    */    
+    @Column
+    private BigDecimal roleLtvM6;
+    
+    /**
+    * 创角LTVm7
+    */    
+    @Column
+    private BigDecimal roleLtvM7;
+    
+    /**
+    * 创角LTVm8
+    */    
+    @Column
+    private BigDecimal roleLtvM8;
+    
+    /**
+    * 创角LTVm9
+    */    
+    @Column
+    private BigDecimal roleLtvM9;
+    
+    /**
+    * 创角LTVm10
+    */    
+    @Column
+    private BigDecimal roleLtvM10;
+    
+    /**
+    * 创角LTVm11
+    */    
+    @Column
+    private BigDecimal roleLtvM11;
+    
+    /**
+    * 创角LTVy1
+    */    
+    @Column
+    private BigDecimal roleLtvY1;
+    
+    /**
+    * 创角LTVtotal
+    */    
+    @Column
+    private BigDecimal roleLtvTotal;
+    
+    /**
+    * 游戏,消耗时间的第1天新用户充值
+    */    
+    @Column
+    private BigDecimal da1;
+    
+    /**
+    * 游戏,消耗时间的第2天新用户充值
+    */    
+    @Column
+    private BigDecimal da2;
+    
+    /**
+    * 游戏,消耗时间的第3天新用户充值
+    */    
+    @Column
+    private BigDecimal da3;
+    
+    /**
+    * 游戏,消耗时间的第4天新用户充值
+    */    
+    @Column
+    private BigDecimal da4;
+    
+    /**
+    * 游戏,消耗时间的第5天新用户充值
+    */    
+    @Column
+    private BigDecimal da5;
+    
+    /**
+    * 游戏,消耗时间的第6天新用户充值
+    */    
+    @Column
+    private BigDecimal da6;
+    
+    /**
+    * 游戏,消耗时间的第7天新用户充值
+    */    
+    @Column
+    private BigDecimal da7;
+    
+    /**
+    * 游戏,消耗时间的第8天新用户充值
+    */    
+    @Column
+    private BigDecimal da8;
+    
+    /**
+    * 游戏,消耗时间的第9天新用户充值
+    */    
+    @Column
+    private BigDecimal da9;
+    
+    /**
+    * 游戏,消耗时间的第10天新用户充值
+    */    
+    @Column
+    private BigDecimal da10;
+    
+    /**
+    * 游戏,消耗时间的第11天新用户充值
+    */    
+    @Column
+    private BigDecimal da11;
+    
+    /**
+    * 游戏,消耗时间的第12天新用户充值
+    */    
+    @Column
+    private BigDecimal da12;
+    
+    /**
+    * 游戏,消耗时间的第13天新用户充值
+    */    
+    @Column
+    private BigDecimal da13;
+    
+    /**
+    * 游戏,消耗时间的第14天新用户充值
+    */    
+    @Column
+    private BigDecimal da14;
+    
+    /**
+    * 游戏,消耗时间的第15天新用户充值
+    */    
+    @Column
+    private BigDecimal da15;
+    
+    /**
+    * 游戏,消耗时间的第16天新用户充值
+    */    
+    @Column
+    private BigDecimal da16;
+    
+    /**
+    * 游戏,消耗时间的第17天新用户充值
+    */    
+    @Column
+    private BigDecimal da17;
+    
+    /**
+    * 游戏,消耗时间的第18天新用户充值
+    */    
+    @Column
+    private BigDecimal da18;
+    
+    /**
+    * 游戏,消耗时间的第19天新用户充值
+    */    
+    @Column
+    private BigDecimal da19;
+    
+    /**
+    * 游戏,消耗时间的第20天新用户充值
+    */    
+    @Column
+    private BigDecimal da20;
+    
+    /**
+    * 游戏,消耗时间的第21天新用户充值
+    */    
+    @Column
+    private BigDecimal da21;
+    
+    /**
+    * 游戏,消耗时间的第22天新用户充值
+    */    
+    @Column
+    private BigDecimal da22;
+    
+    /**
+    * 游戏,消耗时间的第23天新用户充值
+    */    
+    @Column
+    private BigDecimal da23;
+    
+    /**
+    * 游戏,消耗时间的第24天新用户充值
+    */    
+    @Column
+    private BigDecimal da24;
+    
+    /**
+    * 游戏,消耗时间的第25天新用户充值
+    */    
+    @Column
+    private BigDecimal da25;
+    
+    /**
+    * 游戏,消耗时间的第26天新用户充值
+    */    
+    @Column
+    private BigDecimal da26;
+    
+    /**
+    * 游戏,消耗时间的第27天新用户充值
+    */    
+    @Column
+    private BigDecimal da27;
+    
+    /**
+    * 游戏,消耗时间的第28天新用户充值
+    */    
+    @Column
+    private BigDecimal da28;
+    
+    /**
+    * 游戏,消耗时间的第29天新用户充值
+    */    
+    @Column
+    private BigDecimal da29;
+    
+    /**
+    * 游戏,消耗时间的第30天新用户充值
+    */    
+    @Column
+    private BigDecimal da30;
+    
+    /**
+    * 游戏,消耗时间的第31天新用户充值
+    */    
+    @Column
+    private BigDecimal da31;
+    
+    /**
+    * 游戏,消耗时间的第32天新用户充值
+    */    
+    @Column
+    private BigDecimal da32;
+    
+    /**
+    * 游戏,消耗时间的第33天新用户充值
+    */    
+    @Column
+    private BigDecimal da33;
+    
+    /**
+    * 游戏,消耗时间的第34天新用户充值
+    */    
+    @Column
+    private BigDecimal da34;
+    
+    /**
+    * 游戏,消耗时间的第35天新用户充值
+    */    
+    @Column
+    private BigDecimal da35;
+    
+    /**
+    * 游戏,消耗时间的第36天新用户充值
+    */    
+    @Column
+    private BigDecimal da36;
+    
+    /**
+    * 游戏,消耗时间的第37天新用户充值
+    */    
+    @Column
+    private BigDecimal da37;
+    
+    /**
+    * 游戏,消耗时间的第38天新用户充值
+    */    
+    @Column
+    private BigDecimal da38;
+    
+    /**
+    * 游戏,消耗时间的第39天新用户充值
+    */    
+    @Column
+    private BigDecimal da39;
+    
+    /**
+    * 游戏,消耗时间的第40天新用户充值
+    */    
+    @Column
+    private BigDecimal da40;
+    
+    /**
+    * 游戏,消耗时间的第41天新用户充值
+    */    
+    @Column
+    private BigDecimal da41;
+    
+    /**
+    * 游戏,消耗时间的第42天新用户充值
+    */    
+    @Column
+    private BigDecimal da42;
+    
+    /**
+    * 游戏,消耗时间的第43天新用户充值
+    */    
+    @Column
+    private BigDecimal da43;
+    
+    /**
+    * 游戏,消耗时间的第44天新用户充值
+    */    
+    @Column
+    private BigDecimal da44;
+    
+    /**
+    * 游戏,消耗时间的第45天新用户充值
+    */    
+    @Column
+    private BigDecimal da45;
+    
+    /**
+    * 游戏,消耗时间的第46天新用户充值
+    */    
+    @Column
+    private BigDecimal da46;
+    
+    /**
+    * 游戏,消耗时间的第47天新用户充值
+    */    
+    @Column
+    private BigDecimal da47;
+    
+    /**
+    * 游戏,消耗时间的第48天新用户充值
+    */    
+    @Column
+    private BigDecimal da48;
+    
+    /**
+    * 游戏,消耗时间的第49天新用户充值
+    */    
+    @Column
+    private BigDecimal da49;
+    
+    /**
+    * 游戏,消耗时间的第50天新用户充值
+    */    
+    @Column
+    private BigDecimal da50;
+    
+    /**
+    * 游戏,消耗时间的第51天新用户充值
+    */    
+    @Column
+    private BigDecimal da51;
+    
+    /**
+    * 游戏,消耗时间的第52天新用户充值
+    */    
+    @Column
+    private BigDecimal da52;
+    
+    /**
+    * 游戏,消耗时间的第53天新用户充值
+    */    
+    @Column
+    private BigDecimal da53;
+    
+    /**
+    * 游戏,消耗时间的第54天新用户充值
+    */    
+    @Column
+    private BigDecimal da54;
+    
+    /**
+    * 游戏,消耗时间的第55天新用户充值
+    */    
+    @Column
+    private BigDecimal da55;
+    
+    /**
+    * 游戏,消耗时间的第56天新用户充值
+    */    
+    @Column
+    private BigDecimal da56;
+    
+    /**
+    * 游戏,消耗时间的第57天新用户充值
+    */    
+    @Column
+    private BigDecimal da57;
+    
+    /**
+    * 游戏,消耗时间的第58天新用户充值
+    */    
+    @Column
+    private BigDecimal da58;
+    
+    /**
+    * 游戏,消耗时间的第59天新用户充值
+    */    
+    @Column
+    private BigDecimal da59;
+    
+    /**
+    * 游戏,消耗时间的第2月新用户充值
+    */    
+    @Column
+    private BigDecimal da60;
+    
+    /**
+    * 游戏,消耗时间的第61天新用户充值
+    */    
+    @Column
+    private BigDecimal da61;
+    
+    /**
+    * 游戏,消耗时间的第62天新用户充值
+    */    
+    @Column
+    private BigDecimal da62;
+    
+    /**
+    * 游戏,消耗时间的第63天新用户充值
+    */    
+    @Column
+    private BigDecimal da63;
+    
+    /**
+    * 游戏,消耗时间的第64天新用户充值
+    */    
+    @Column
+    private BigDecimal da64;
+    
+    /**
+    * 游戏,消耗时间的第65天新用户充值
+    */    
+    @Column
+    private BigDecimal da65;
+    
+    /**
+    * 游戏,消耗时间的第66天新用户充值
+    */    
+    @Column
+    private BigDecimal da66;
+    
+    /**
+    * 游戏,消耗时间的第67天新用户充值
+    */    
+    @Column
+    private BigDecimal da67;
+    
+    /**
+    * 游戏,消耗时间的第68天新用户充值
+    */    
+    @Column
+    private BigDecimal da68;
+    
+    /**
+    * 游戏,消耗时间的第69天新用户充值
+    */    
+    @Column
+    private BigDecimal da69;
+    
+    /**
+    * 游戏,消耗时间的第70天新用户充值
+    */    
+    @Column
+    private BigDecimal da70;
+    
+    /**
+    * 游戏,消耗时间的第71天新用户充值
+    */    
+    @Column
+    private BigDecimal da71;
+    
+    /**
+    * 游戏,消耗时间的第72天新用户充值
+    */    
+    @Column
+    private BigDecimal da72;
+    
+    /**
+    * 游戏,消耗时间的第73天新用户充值
+    */    
+    @Column
+    private BigDecimal da73;
+    
+    /**
+    * 游戏,消耗时间的第74天新用户充值
+    */    
+    @Column
+    private BigDecimal da74;
+    
+    /**
+    * 游戏,消耗时间的第75天新用户充值
+    */    
+    @Column
+    private BigDecimal da75;
+    
+    /**
+    * 游戏,消耗时间的第76天新用户充值
+    */    
+    @Column
+    private BigDecimal da76;
+    
+    /**
+    * 游戏,消耗时间的第77天新用户充值
+    */    
+    @Column
+    private BigDecimal da77;
+    
+    /**
+    * 游戏,消耗时间的第78天新用户充值
+    */    
+    @Column
+    private BigDecimal da78;
+    
+    /**
+    * 游戏,消耗时间的第79天新用户充值
+    */    
+    @Column
+    private BigDecimal da79;
+    
+    /**
+    * 游戏,消耗时间的第80天新用户充值
+    */    
+    @Column
+    private BigDecimal da80;
+    
+    /**
+    * 游戏,消耗时间的第81天新用户充值
+    */    
+    @Column
+    private BigDecimal da81;
+    
+    /**
+    * 游戏,消耗时间的第82天新用户充值
+    */    
+    @Column
+    private BigDecimal da82;
+    
+    /**
+    * 游戏,消耗时间的第83天新用户充值
+    */    
+    @Column
+    private BigDecimal da83;
+    
+    /**
+    * 游戏,消耗时间的第84天新用户充值
+    */    
+    @Column
+    private BigDecimal da84;
+    
+    /**
+    * 游戏,消耗时间的第85天新用户充值
+    */    
+    @Column
+    private BigDecimal da85;
+    
+    /**
+    * 游戏,消耗时间的第86天新用户充值
+    */    
+    @Column
+    private BigDecimal da86;
+    
+    /**
+    * 游戏,消耗时间的第87天新用户充值
+    */    
+    @Column
+    private BigDecimal da87;
+    
+    /**
+    * 游戏,消耗时间的第88天新用户充值
+    */    
+    @Column
+    private BigDecimal da88;
+    
+    /**
+    * 游戏,消耗时间的第89天新用户充值
+    */    
+    @Column
+    private BigDecimal da89;
+
+    /**
+     * 游戏,消耗时间的第90天新用户充值
+     */
+    @Column
+    private BigDecimal da90;
+    
+    /**
+    * 游戏,消耗时间的第4月新用户充值
+    */    
+    @Column
+    private BigDecimal m4;
+    
+    /**
+    * 游戏,消耗时间的第5月新用户充值
+    */    
+    @Column
+    private BigDecimal m5;
+    
+    /**
+    * 游戏,消耗时间的第6月新用户充值
+    */    
+    @Column
+    private BigDecimal m6;
+    
+    /**
+    * 游戏,消耗时间的第7月新用户充值
+    */    
+    @Column
+    private BigDecimal m7;
+    
+    /**
+    * 游戏,消耗时间的第8月新用户充值
+    */    
+    @Column
+    private BigDecimal m8;
+    
+    /**
+    * 游戏,消耗时间的第9月新用户充值
+    */    
+    @Column
+    private BigDecimal m9;
+    
+    /**
+    * 游戏,消耗时间的第10月新用户充值
+    */    
+    @Column
+    private BigDecimal m10;
+    
+    /**
+    * 游戏,消耗时间的第11月新用户充值
+    */    
+    @Column
+    private BigDecimal m11;
+    
+    /**
+    * 游戏,消耗时间的第1年新用户充值
+    */    
+    @Column
+    private BigDecimal y1;
+    
+    /**
+    * 至今充值金额
+    */    
+    @Column
+    private BigDecimal total;
+    
+    /**
+    * 注册人数
+    */    
+    @Column
+    private Integer regUserCnt;
+    
+    /**
+    * 创角人数
+    */    
+    @Column
+    private Integer firstRoleNum;
+    
+    
+}
+
+

+ 59 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/FirstNewUserAgainTrendVO.java

@@ -0,0 +1,59 @@
+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;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class FirstNewUserAgainTrendVO {
+
+    /**
+     * 充值金额
+     */
+    @ApiModelProperty(notes = "充值金额")
+    private BigDecimal rechargeMoney;
+
+    /**
+     * 充值人数
+     */
+    @ApiModelProperty(notes = "充值人数")
+    private Long rechargeCount;
+
+    /**
+     * 充值占比
+     */
+    @ApiModelProperty(notes = "充值占比")
+    private BigDecimal percentage;
+
+    /**
+     * 用户详情,用来跳转查询
+     */
+    @ApiModelProperty(notes = "用户详情")
+    private final String userDetail = "用户详情";
+
+    /**
+     * da1的所有用户ID,用作后续查询指定用户的条件
+     */
+    @ApiModelProperty(notes = "da1所有用户ID(不展示)")
+    private Long[] usersId;
+
+    /**
+     * 当前对象属于哪个daN数据
+     */
+    @ApiModelProperty(notes = "不展示")
+    private String timeType;
+
+    /**
+     * SDK数据来源
+     */
+    @ApiModelProperty(notes = "不展示")
+    private String sourceSystem;
+
+}

+ 717 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameDataFirstNewUserAgainTotalVO.java

@@ -0,0 +1,717 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+/**
+ * @author tianhua
+ * @time 2023/8/10
+ * @Description 游戏首日复充总计一栏
+ **/
+@Data
+public class GameDataFirstNewUserAgainTotalVO {
+
+    /**
+     * 消耗
+     */
+    @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;
+
+    /**
+     * 首日注册且充值用户复充趋势第1天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da1;
+
+    /**
+     * 首日注册且充值用户复充趋势在第2天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da2;
+
+    /**
+     * 首日注册且充值用户复充趋势在第3天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da3;
+
+    /**
+     * 首日注册且充值用户复充趋势在第4天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da4;
+
+    /**
+     * 首日注册且充值用户复充趋势在第5天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da5;
+
+    /**
+     * 首日注册且充值用户复充趋势在第6天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da6;
+
+    /**
+     * 首日注册且充值用户复充趋势在第7天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da7;
+
+    /**
+     * 首日注册且充值用户复充趋势在第8天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da8;
+
+    /**
+     * 首日注册且充值用户复充趋势在第9天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da9;
+
+    /**
+     * 首日注册且充值用户复充趋势在第10天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da10;
+
+    /**
+     * 首日注册且充值用户复充趋势在第11天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da11;
+
+    /**
+     * 首日注册且充值用户复充趋势在第12天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da12;
+
+    /**
+     * 首日注册且充值用户复充趋势在第13天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da13;
+
+    /**
+     * 首日注册且充值用户复充趋势在第14天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da14;
+
+    /**
+     * 首日注册且充值用户复充趋势在第15天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da15;
+
+    /**
+     * 首日注册且充值用户复充趋势在第16天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da16;
+
+    /**
+     * 首日注册且充值用户复充趋势在第17天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da17;
+
+    /**
+     * 首日注册且充值用户复充趋势在第18天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da18;
+
+    /**
+     * 首日注册且充值用户复充趋势在第19天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da19;
+
+    /**
+     * 首日注册且充值用户复充趋势在第20天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da20;
+
+    /**
+     * 首日注册且充值用户复充趋势在第21天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da21;
+
+    /**
+     * 首日注册且充值用户复充趋势在第22天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da22;
+
+    /**
+     * 首日注册且充值用户复充趋势在第23天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da23;
+
+    /**
+     * 首日注册且充值用户复充趋势在第24天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da24;
+
+    /**
+     * 首日注册且充值用户复充趋势在第25天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da25;
+
+    /**
+     * 首日注册且充值用户复充趋势在第26天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da26;
+
+    /**
+     * 首日注册且充值用户复充趋势在第27天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da27;
+
+    /**
+     * 首日注册且充值用户复充趋势在第28天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da28;
+
+    /**
+     * 首日注册且充值用户复充趋势在第29天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da29;
+
+    /**
+     * 首日注册且充值用户复充趋势在第30天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da30;
+
+    /**
+     * 首日注册且充值用户复充趋势在第2月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m2;
+
+    /**
+     * 首日注册且充值用户复充趋势在第3月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m3;
+
+    /**
+     * 首日注册且充值用户复充趋势在第4月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m4;
+
+    /**
+     * 首日注册且充值用户复充趋势在第5月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m5;
+
+    /**
+     * 首日注册且充值用户复充趋势在第6月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m6;
+
+    /**
+     * 首日注册且充值用户复充趋势在第7月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m7;
+
+    /**
+     * 首日注册且充值用户复充趋势在第8月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m8;
+
+    /**
+     * 首日注册且充值用户复充趋势在第9月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m9;
+
+    /**
+     * 首日注册且充值用户复充趋势在第10月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m10;
+
+    /**
+     * 首日注册且充值用户复充趋势在第11月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m11;
+
+    /**
+     * 首日注册且充值用户复充趋势在第1年:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String y1;
+
+    /**
+     * 首日注册且充值的用户至今:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String total;
+
+    /**
+     * 首日注册且充值用户复充趋势第1天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势第1天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da1Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第2天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第2天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da2Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第3天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第3天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da3Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第4天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第4天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da4Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第5天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第5天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da5Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第6天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第6天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da6Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第7天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第7天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da7Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第8天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第8天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da8Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第9天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第9天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da9Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第10天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第10天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da10Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第11天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第11天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da11Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第12天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第12天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da12Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第13天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第13天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da13Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第14天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第14天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da14Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第15天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第15天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da15Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第16天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第16天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da16Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第17天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第17天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da17Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第18天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第18天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da18Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第19天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在19天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da19Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第20天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第20天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da20Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第21天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第21天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da21Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第22天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第22天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da22Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第23天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第23天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da23Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第24天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第24天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da24Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第25天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第25天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da25Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第26天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第26天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da26Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第27天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第27天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da27Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第28天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第28天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da28Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第29天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第29天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da29Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第30天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第30天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da30Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第2月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第2月:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO m2Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第3月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第3月:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO m3Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第4月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第4月:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO m4Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第5月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第5月:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO m5Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第6月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第6月:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO m6Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第7月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第7月:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO m7Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第8月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第8月:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO m8Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第9月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第9月:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO m9Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第10月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第10月:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO m10Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第11月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第11月:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO m11Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第1年:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第1年:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO y1Trend;
+
+    /**
+     * 首日注册且充值的用户至今:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值的用户至今:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO totalTrend;
+
+
+}

+ 747 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameDataFirstNewUserAgainVO.java

@@ -0,0 +1,747 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+/**
+ * @author tianhua
+ * @time 2023/8/10
+ * @Description
+ **/
+@Data
+public class GameDataFirstNewUserAgainVO {
+
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty(value = "游戏ID")
+    private Long gameId;
+
+    /**
+     * 推广游戏名称
+     */
+    @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 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;
+
+    /**
+     * 首日注册且充值用户复充趋势第1天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da1;
+
+    /**
+     * 首日注册且充值用户复充趋势在第2天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da2;
+
+    /**
+     * 首日注册且充值用户复充趋势在第3天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da3;
+
+    /**
+     * 首日注册且充值用户复充趋势在第4天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da4;
+
+    /**
+     * 首日注册且充值用户复充趋势在第5天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da5;
+
+    /**
+     * 首日注册且充值用户复充趋势在第6天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da6;
+
+    /**
+     * 首日注册且充值用户复充趋势在第7天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da7;
+
+    /**
+     * 首日注册且充值用户复充趋势在第8天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da8;
+
+    /**
+     * 首日注册且充值用户复充趋势在第9天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da9;
+
+    /**
+     * 首日注册且充值用户复充趋势在第10天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da10;
+
+    /**
+     * 首日注册且充值用户复充趋势在第11天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da11;
+
+    /**
+     * 首日注册且充值用户复充趋势在第12天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da12;
+
+    /**
+     * 首日注册且充值用户复充趋势在第13天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da13;
+
+    /**
+     * 首日注册且充值用户复充趋势在第14天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da14;
+
+    /**
+     * 首日注册且充值用户复充趋势在第15天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da15;
+
+    /**
+     * 首日注册且充值用户复充趋势在第16天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da16;
+
+    /**
+     * 首日注册且充值用户复充趋势在第17天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da17;
+
+    /**
+     * 首日注册且充值用户复充趋势在第18天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da18;
+
+    /**
+     * 首日注册且充值用户复充趋势在第19天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da19;
+
+    /**
+     * 首日注册且充值用户复充趋势在第20天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da20;
+
+    /**
+     * 首日注册且充值用户复充趋势在第21天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da21;
+
+    /**
+     * 首日注册且充值用户复充趋势在第22天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da22;
+
+    /**
+     * 首日注册且充值用户复充趋势在第23天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da23;
+
+    /**
+     * 首日注册且充值用户复充趋势在第24天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da24;
+
+    /**
+     * 首日注册且充值用户复充趋势在第25天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da25;
+
+    /**
+     * 首日注册且充值用户复充趋势在第26天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da26;
+
+    /**
+     * 首日注册且充值用户复充趋势在第27天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da27;
+
+    /**
+     * 首日注册且充值用户复充趋势在第28天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da28;
+
+    /**
+     * 首日注册且充值用户复充趋势在第29天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da29;
+
+    /**
+     * 首日注册且充值用户复充趋势在第30天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da30;
+
+    /**
+     * 首日注册且充值用户复充趋势在第2月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m2;
+
+    /**
+     * 首日注册且充值用户复充趋势在第3月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m3;
+
+    /**
+     * 首日注册且充值用户复充趋势在第4月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m4;
+
+    /**
+     * 首日注册且充值用户复充趋势在第5月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m5;
+
+    /**
+     * 首日注册且充值用户复充趋势在第6月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m6;
+
+    /**
+     * 首日注册且充值用户复充趋势在第7月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m7;
+
+    /**
+     * 首日注册且充值用户复充趋势在第8月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m8;
+
+    /**
+     * 首日注册且充值用户复充趋势在第9月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m9;
+
+    /**
+     * 首日注册且充值用户复充趋势在第10月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m10;
+
+    /**
+     * 首日注册且充值用户复充趋势在第11月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m11;
+
+    /**
+     * 首日注册且充值用户复充趋势在第1年:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String y1;
+
+    /**
+     * 首日注册且充值的用户至今:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String total;
+
+    /**
+     * 首日注册且充值用户复充趋势第1天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势第1天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da1Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第2天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第2天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da2Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第3天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第3天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da3Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第4天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第4天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da4Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第5天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第5天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da5Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第6天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第6天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da6Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第7天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第7天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da7Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第8天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第8天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da8Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第9天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第9天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da9Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第10天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第10天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da10Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第11天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第11天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da11Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第12天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第12天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da12Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第13天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第13天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da13Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第14天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第14天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da14Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第15天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第15天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da15Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第16天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第16天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da16Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第17天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第17天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da17Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第18天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第18天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da18Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第19天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在19天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da19Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第20天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第20天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da20Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第21天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第21天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da21Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第22天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第22天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da22Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第23天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第23天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da23Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第24天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第24天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da24Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第25天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第25天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da25Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第26天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第26天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da26Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第27天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第27天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da27Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第28天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第28天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da28Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第29天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第29天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da29Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第30天:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第30天:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO da30Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第2月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第2月:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO m2Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第3月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第3月:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO m3Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第4月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第4月:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO m4Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第5月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第5月:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO m5Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第6月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第6月:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO m6Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第7月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第7月:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO m7Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第8月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第8月:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO m8Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第9月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第9月:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO m9Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第10月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第10月:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO m10Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第11月:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第11月:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO m11Trend;
+
+    /**
+     * 首日注册且充值用户复充趋势在第1年:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值用户复充趋势在第1年:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO y1Trend;
+
+    /**
+     * 首日注册且充值的用户至今:充值金额,充值人数,充值占比
+     */
+    @ApiModelProperty(value = "首日注册且充值的用户至今:充值金额,充值人数,充值占比")
+    private FirstNewUserAgainTrendVO totalTrend;
+
+
+}

+ 64 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameDataUserDetailsVO.java

@@ -0,0 +1,64 @@
+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;
+
+/**
+ * @author tianhua
+ * @time 2023/8/11
+ * @Description 用户详情
+ **/
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class GameDataUserDetailsVO {
+
+    /**
+     * 玩家ID
+     */
+    @ApiModelProperty(notes = "玩家ID")
+    private Long playerId;
+
+    /**
+     * 注册渠道ID
+     */
+    @ApiModelProperty(notes = "注册渠道ID")
+    private Long regAgentId;
+
+    /**
+     * 注册渠道名称
+     */
+    @ApiModelProperty(notes = "注册渠道名称")
+    private String regAgentName;
+
+    /**
+     * 游戏服
+     */
+    @ApiModelProperty(notes = "游戏服")
+    private String serverName;
+
+    /**
+     * 角色名称
+     */
+    @ApiModelProperty(notes = "角色名称")
+    private String roleName;
+
+    /**
+     * 玩家操作系统
+     */
+    @ApiModelProperty(notes = "玩家操作系统")
+    private String playerOs;
+
+    /**
+     * 充值金额 玩家排行榜表中的今日累计充值今额
+     */
+    @ApiModelProperty(notes = "充值金额")
+    private BigDecimal todayTotalAmount;
+
+}

+ 568 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameServerDayTotalVO.java

@@ -0,0 +1,568 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author tianhua
+ * @time 2023/8/14
+ * @Description 前端展示的游戏区服数据总计
+ **/
+@Data
+public class GameServerDayTotalVO {
+
+    /**
+     * 滚服累计人数
+     */
+    @ApiModelProperty(value = "滚服累计人数")
+    private Long outTotalNum;
+
+    /**
+     * 滚服累计付费人数
+     */
+    @ApiModelProperty(value = "滚服累计付费人数")
+    private Long outTotalAmountNum;
+
+    /**
+     * 滚服累计付费金额
+     */
+    @ApiModelProperty(value = "滚服累计付费金额")
+    private BigDecimal outTotalAmount;
+
+    /**
+     * 滚服累计付费占比
+     */
+    @ApiModelProperty(value = "滚服累计付费占比")
+    private BigDecimal outTotalRate;
+
+    /**
+     * 创角累计人数
+     */
+    @ApiModelProperty(value = "创角累计人数")
+    private Long totalRoleNum;
+
+    /**
+     * 注册累计人数
+     */
+    @ApiModelProperty(value = "注册累计人数")
+    private Long totalRegNum;
+
+    /**
+     * 付费累计人数
+     */
+    @ApiModelProperty(value = "付费累计人数")
+    private Long totalAmountNum;
+
+    /**
+     * 付费累计金额
+     */
+    @ApiModelProperty(value = "付费累计金额")
+    private BigDecimal totalAmount;
+
+    /**
+     * 区服第1天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da1;
+
+    /**
+     * 区服在第2天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da2;
+
+    /**
+     * 区服在第3天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da3;
+
+    /**
+     * 区服在第4天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da4;
+
+    /**
+     * 区服在第5天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da5;
+
+    /**
+     * 区服在第6天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da6;
+
+    /**
+     * 区服在第7天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da7;
+
+    /**
+     * 区服在第8天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da8;
+
+    /**
+     * 区服在第9天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da9;
+
+    /**
+     * 区服在第10天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da10;
+
+    /**
+     * 区服在第11天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da11;
+
+    /**
+     * 区服在第12天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da12;
+
+    /**
+     * 区服在第13天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da13;
+
+    /**
+     * 区服在第14天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da14;
+
+    /**
+     * 区服在第15天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da15;
+
+    /**
+     * 区服在第16天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da16;
+
+    /**
+     * 区服在第17天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da17;
+
+    /**
+     * 区服在第18天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da18;
+
+    /**
+     * 区服在第19天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da19;
+
+    /**
+     * 区服在第20天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da20;
+
+    /**
+     * 区服在第21天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da21;
+
+    /**
+     * 区服在第22天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da22;
+
+    /**
+     * 区服在第23天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da23;
+
+    /**
+     * 区服在第24天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da24;
+
+    /**
+     * 区服在第25天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da25;
+
+    /**
+     * 区服在第26天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da26;
+
+    /**
+     * 区服在第27天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da27;
+
+    /**
+     * 区服在第28天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da28;
+
+    /**
+     * 区服在第29天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da29;
+
+    /**
+     * 区服在第30天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da30;
+
+    /**
+     * 区服在第2月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m2;
+
+    /**
+     * 区服在第3月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m3;
+
+    /**
+     * 区服在第4月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m4;
+
+    /**
+     * 区服在第5月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m5;
+
+    /**
+     * 区服在第6月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m6;
+
+    /**
+     * 区服在第7月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m7;
+
+    /**
+     * 区服在第8月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m8;
+
+    /**
+     * 区服在第9月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m9;
+
+    /**
+     * 区服在第10月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m10;
+
+    /**
+     * 区服在第11月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m11;
+
+    /**
+     * 区服在第1年:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String y1;
+
+    /**
+     * 区服至今:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String total;
+
+    /**
+     * 区服第1天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第1天")
+    private GameServerTrendVO da1Trend;
+
+    /**
+     * 区服在第2天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第2天")
+    private GameServerTrendVO da2Trend;
+
+    /**
+     * 区服在第3天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第3天")
+    private GameServerTrendVO da3Trend;
+
+    /**
+     * 区服在第4天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第4天")
+    private GameServerTrendVO da4Trend;
+
+    /**
+     * 区服在第5天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第5天")
+    private GameServerTrendVO da5Trend;
+
+    /**
+     * 区服在第6天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第6天")
+    private GameServerTrendVO da6Trend;
+
+    /**
+     * 区服在第7天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第7天")
+    private GameServerTrendVO da7Trend;
+
+    /**
+     * 区服在第8天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第8天")
+    private GameServerTrendVO da8Trend;
+
+    /**
+     * 区服在第9天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第9天")
+    private GameServerTrendVO da9Trend;
+
+    /**
+     * 区服在第10天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第10天")
+    private GameServerTrendVO da10Trend;
+
+    /**
+     * 区服在第11天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第11天")
+    private GameServerTrendVO da11Trend;
+
+    /**
+     * 区服在第12天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第12天")
+    private GameServerTrendVO da12Trend;
+
+    /**
+     * 区服在第13天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第13天")
+    private GameServerTrendVO da13Trend;
+
+    /**
+     * 区服在第14天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第14天")
+    private GameServerTrendVO da14Trend;
+
+    /**
+     * 区服在第15天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第15天")
+    private GameServerTrendVO da15Trend;
+
+    /**
+     * 区服在第16天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第16天")
+    private GameServerTrendVO da16Trend;
+
+    /**
+     * 区服在第17天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第17天")
+    private GameServerTrendVO da17Trend;
+
+    /**
+     * 区服在第18天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第18天")
+    private GameServerTrendVO da18Trend;
+
+    /**
+     * 区服在第19天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第19天")
+    private GameServerTrendVO da19Trend;
+
+    /**
+     * 区服在第20天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第20天")
+    private GameServerTrendVO da20Trend;
+
+    /**
+     * 区服在第21天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第21天")
+    private GameServerTrendVO da21Trend;
+
+    /**
+     * 区服在第22天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第22天")
+    private GameServerTrendVO da22Trend;
+
+    /**
+     * 区服在第23天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第23天")
+    private GameServerTrendVO da23Trend;
+
+    /**
+     * 区服在第24天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第24天")
+    private GameServerTrendVO da24Trend;
+
+    /**
+     * 区服在第25天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第25天")
+    private GameServerTrendVO da25Trend;
+
+    /**
+     * 区服在第26天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第26天")
+    private GameServerTrendVO da26Trend;
+
+    /**
+     * 区服在第27天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第27天")
+    private GameServerTrendVO da27Trend;
+
+    /**
+     * 区服在第28天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第28天")
+    private GameServerTrendVO da28Trend;
+
+    /**
+     * 区服在第29天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第29天")
+    private GameServerTrendVO da29Trend;
+
+    /**
+     * 区服在第30天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第30天")
+    private GameServerTrendVO da30Trend;
+
+    /**
+     * 区服在第2月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第2月")
+    private GameServerTrendVO m2Trend;
+
+    /**
+     * 区服在第3月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第3月")
+    private GameServerTrendVO m3Trend;
+
+    /**
+     * 区服在第4月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第4月")
+    private GameServerTrendVO m4Trend;
+
+    /**
+     * 区服在第5月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第5月")
+    private GameServerTrendVO m5Trend;
+
+    /**
+     * 区服在第6月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第6月")
+    private GameServerTrendVO m6Trend;
+
+    /**
+     * 区服在第7月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第7月")
+    private GameServerTrendVO m7Trend;
+
+    /**
+     * 区服在第8月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第8月")
+    private GameServerTrendVO m8Trend;
+
+    /**
+     * 区服在第9月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第9月")
+    private GameServerTrendVO m9Trend;
+
+    /**
+     * 区服在第10月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第10月")
+    private GameServerTrendVO m10Trend;
+
+    /**
+     * 区服在第11月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第11月")
+    private GameServerTrendVO m11Trend;
+
+    /**
+     * 区服在第1年:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第1年")
+    private GameServerTrendVO y1Trend;
+
+    /**
+     * 区服至今:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服至今总数据")
+    private GameServerTrendVO totalTrend;
+
+}

+ 611 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameServerDayVO.java

@@ -0,0 +1,611 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+/**
+ * @author tianhua
+ * @time 2023/8/14
+ * @Description 前端展示的游戏区服数据
+ **/
+@Data
+public class GameServerDayVO {
+
+    /**
+     * 开服时间
+     */
+    @ApiModelProperty(value = "开服时间")
+    private LocalDate dt;
+
+    /**
+     * SDK来源
+     */
+    @ApiModelProperty(value = "SDK来源")
+    private String sourceSystem;
+
+    /**
+     * 区服ID
+     */
+    @ApiModelProperty(value = "区服ID")
+    private Long serverId;
+
+    /**
+     * 区服名称
+     */
+    @ApiModelProperty(value = "区服名称")
+    private String serverName;
+
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty(value = "游戏ID")
+    private Long gameId;
+
+    /**
+     * 游戏名称
+     */
+    @ApiModelProperty(value = "游戏名称")
+    private String gameName;
+
+    /**
+     * 游戏类别
+     */
+    @ApiModelProperty(value = "游戏类别")
+    private Long classify;
+
+    /**
+     * 滚服累计人数
+     */
+    @ApiModelProperty(value = "滚服累计人数")
+    private Long outTotalNum;
+
+    /**
+     * 滚服累计付费人数
+     */
+    @ApiModelProperty(value = "滚服累计付费人数")
+    private Long outTotalAmountNum;
+
+    /**
+     * 滚服累计付费金额
+     */
+    @ApiModelProperty(value = "滚服累计付费金额")
+    private BigDecimal outTotalAmount;
+
+    /**
+     * 滚服累计付费占比
+     */
+    @ApiModelProperty(value = "滚服累计付费占比")
+    private BigDecimal outTotalRate;
+
+    /**
+     * 创角累计人数
+     */
+    @ApiModelProperty(value = "创角累计人数")
+    private Long totalRoleNum;
+
+    /**
+     * 注册累计人数
+     */
+    @ApiModelProperty(value = "注册累计人数")
+    private Long totalRegNum;
+
+    /**
+     * 付费累计人数
+     */
+    @ApiModelProperty(value = "付费累计人数")
+    private Long totalAmountNum;
+
+    /**
+     * 付费累计金额
+     */
+    @ApiModelProperty(value = "付费累计金额")
+    private BigDecimal totalAmount;
+
+    /**
+     * 区服第1天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da1;
+
+    /**
+     * 区服在第2天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da2;
+
+    /**
+     * 区服在第3天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da3;
+
+    /**
+     * 区服在第4天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da4;
+
+    /**
+     * 区服在第5天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da5;
+
+    /**
+     * 区服在第6天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da6;
+
+    /**
+     * 区服在第7天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da7;
+
+    /**
+     * 区服在第8天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da8;
+
+    /**
+     * 区服在第9天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da9;
+
+    /**
+     * 区服在第10天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da10;
+
+    /**
+     * 区服在第11天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da11;
+
+    /**
+     * 区服在第12天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da12;
+
+    /**
+     * 区服在第13天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da13;
+
+    /**
+     * 区服在第14天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da14;
+
+    /**
+     * 区服在第15天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da15;
+
+    /**
+     * 区服在第16天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da16;
+
+    /**
+     * 区服在第17天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da17;
+
+    /**
+     * 区服在第18天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da18;
+
+    /**
+     * 区服在第19天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da19;
+
+    /**
+     * 区服在第20天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da20;
+
+    /**
+     * 区服在第21天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da21;
+
+    /**
+     * 区服在第22天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da22;
+
+    /**
+     * 区服在第23天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da23;
+
+    /**
+     * 区服在第24天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da24;
+
+    /**
+     * 区服在第25天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da25;
+
+    /**
+     * 区服在第26天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da26;
+
+    /**
+     * 区服在第27天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da27;
+
+    /**
+     * 区服在第28天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da28;
+
+    /**
+     * 区服在第29天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da29;
+
+    /**
+     * 区服在第30天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da30;
+
+    /**
+     * 区服在第2月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m2;
+
+    /**
+     * 区服在第3月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m3;
+
+    /**
+     * 区服在第4月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m4;
+
+    /**
+     * 区服在第5月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m5;
+
+    /**
+     * 区服在第6月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m6;
+
+    /**
+     * 区服在第7月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m7;
+
+    /**
+     * 区服在第8月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m8;
+
+    /**
+     * 区服在第9月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m9;
+
+    /**
+     * 区服在第10月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m10;
+
+    /**
+     * 区服在第11月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m11;
+
+    /**
+     * 区服在第1年:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String y1;
+
+    /**
+     * 区服至今:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "不展示")
+    private String total;
+
+    /**
+     * 区服第1天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第1天")
+    private GameServerTrendVO da1Trend;
+
+    /**
+     * 区服在第2天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第2天")
+    private GameServerTrendVO da2Trend;
+
+    /**
+     * 区服在第3天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第3天")
+    private GameServerTrendVO da3Trend;
+
+    /**
+     * 区服在第4天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第4天")
+    private GameServerTrendVO da4Trend;
+
+    /**
+     * 区服在第5天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第5天")
+    private GameServerTrendVO da5Trend;
+
+    /**
+     * 区服在第6天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第6天")
+    private GameServerTrendVO da6Trend;
+
+    /**
+     * 区服在第7天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第7天")
+    private GameServerTrendVO da7Trend;
+
+    /**
+     * 区服在第8天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第8天")
+    private GameServerTrendVO da8Trend;
+
+    /**
+     * 区服在第9天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第9天")
+    private GameServerTrendVO da9Trend;
+
+    /**
+     * 区服在第10天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第10天")
+    private GameServerTrendVO da10Trend;
+
+    /**
+     * 区服在第11天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第11天")
+    private GameServerTrendVO da11Trend;
+
+    /**
+     * 区服在第12天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第12天")
+    private GameServerTrendVO da12Trend;
+
+    /**
+     * 区服在第13天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第13天")
+    private GameServerTrendVO da13Trend;
+
+    /**
+     * 区服在第14天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第14天")
+    private GameServerTrendVO da14Trend;
+
+    /**
+     * 区服在第15天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第15天")
+    private GameServerTrendVO da15Trend;
+
+    /**
+     * 区服在第16天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第16天")
+    private GameServerTrendVO da16Trend;
+
+    /**
+     * 区服在第17天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第17天")
+    private GameServerTrendVO da17Trend;
+
+    /**
+     * 区服在第18天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第18天")
+    private GameServerTrendVO da18Trend;
+
+    /**
+     * 区服在第19天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第19天")
+    private GameServerTrendVO da19Trend;
+
+    /**
+     * 区服在第20天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第20天")
+    private GameServerTrendVO da20Trend;
+
+    /**
+     * 区服在第21天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第21天")
+    private GameServerTrendVO da21Trend;
+
+    /**
+     * 区服在第22天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第22天")
+    private GameServerTrendVO da22Trend;
+
+    /**
+     * 区服在第23天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第23天")
+    private GameServerTrendVO da23Trend;
+
+    /**
+     * 区服在第24天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第24天")
+    private GameServerTrendVO da24Trend;
+
+    /**
+     * 区服在第25天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第25天")
+    private GameServerTrendVO da25Trend;
+
+    /**
+     * 区服在第26天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第26天")
+    private GameServerTrendVO da26Trend;
+
+    /**
+     * 区服在第27天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第27天")
+    private GameServerTrendVO da27Trend;
+
+    /**
+     * 区服在第28天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第28天")
+    private GameServerTrendVO da28Trend;
+
+    /**
+     * 区服在第29天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第29天")
+    private GameServerTrendVO da29Trend;
+
+    /**
+     * 区服在第30天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第30天")
+    private GameServerTrendVO da30Trend;
+
+    /**
+     * 区服在第2月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第2月")
+    private GameServerTrendVO m2Trend;
+
+    /**
+     * 区服在第3月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第3月")
+    private GameServerTrendVO m3Trend;
+
+    /**
+     * 区服在第4月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第4月")
+    private GameServerTrendVO m4Trend;
+
+    /**
+     * 区服在第5月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第5月")
+    private GameServerTrendVO m5Trend;
+
+    /**
+     * 区服在第6月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第6月")
+    private GameServerTrendVO m6Trend;
+
+    /**
+     * 区服在第7月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第7月")
+    private GameServerTrendVO m7Trend;
+
+    /**
+     * 区服在第8月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第8月")
+    private GameServerTrendVO m8Trend;
+
+    /**
+     * 区服在第9月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第9月")
+    private GameServerTrendVO m9Trend;
+
+    /**
+     * 区服在第10月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第10月")
+    private GameServerTrendVO m10Trend;
+
+    /**
+     * 区服在第11月:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第11月")
+    private GameServerTrendVO m11Trend;
+
+    /**
+     * 区服在第1年:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第1年")
+    private GameServerTrendVO y1Trend;
+
+    /**
+     * 区服至今:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服至今总数据")
+    private GameServerTrendVO totalTrend;
+
+}

+ 71 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameServerTrendVO.java

@@ -0,0 +1,71 @@
+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;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class GameServerTrendVO {
+
+    /**
+     * 注册人数
+     */
+    @ApiModelProperty(notes = "注册人数")
+    private Long regNum;
+
+    /**
+     * 创角人数
+     */
+    @ApiModelProperty(notes = "创角人数")
+    private Long roleNum;
+
+    /**
+     * 活跃人数
+     */
+    @ApiModelProperty(notes = "活跃人数")
+    private Long activeNum;
+
+    /**
+     * 付费人数
+     */
+    @ApiModelProperty(notes = "付费人数")
+    private Long amountNum;
+
+    /**
+     * 付费金额
+     */
+    @ApiModelProperty(notes = "付费金额")
+    private BigDecimal amount;
+
+    /**
+     * 滚服人数
+     */
+    @ApiModelProperty(notes = "滚服人数")
+    private Long rollServerNum;
+
+    /**
+     * 滚服付费人数
+     */
+    @ApiModelProperty(notes = "滚服付费人数")
+    private Long rollServerAmountNum;
+
+    /**
+     * 滚服付费金额
+     */
+    @ApiModelProperty(notes = "滚服付费金额")
+    private BigDecimal rollServerAmount;
+
+    /**
+     * 滚服付费占比
+     */
+    @ApiModelProperty(notes = "滚服付费占比")
+    private BigDecimal rollServerAmountRate;
+
+}

+ 2023 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/LtvDataTotalVO.java

@@ -0,0 +1,2023 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author tianhua
+ * @time 2023/8/9
+ * @Description ltv总计一栏
+ **/
+@Data
+public class LtvDataTotalVO {
+
+    /**
+     * 消耗
+     */
+    @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;
+
+    /**
+     * 用户LTV1
+     */
+    @ApiModelProperty(value = "用户LTV1")
+    private BigDecimal userLtv1;
+
+    /**
+     * 用户LTV2
+     */
+    @ApiModelProperty(value = "用户LTV2")
+    private BigDecimal userLtv2;
+
+    /**
+     * 用户LTV3
+     */
+    @ApiModelProperty(value = "用户LTV3")
+    private BigDecimal userLtv3;
+
+    /**
+     * 用户LTV4
+     */
+    @ApiModelProperty(value = "用户LTV4")
+    private BigDecimal userLtv4;
+
+    /**
+     * 用户LTV5
+     */
+    @ApiModelProperty(value = "用户LTV5")
+    private BigDecimal userLtv5;
+
+    /**
+     * 用户LTV6
+     */
+    @ApiModelProperty(value = "用户LTV6")
+    private BigDecimal userLtv6;
+
+    /**
+     * 用户LTV7
+     */
+    @ApiModelProperty(value = "用户LTV7")
+    private BigDecimal userLtv7;
+
+    /**
+     * 用户LTV8
+     */
+    @ApiModelProperty(value = "用户LTV8")
+    private BigDecimal userLtv8;
+
+    /**
+     * 用户LTV9
+     */
+    @ApiModelProperty(value = "用户LTV9")
+    private BigDecimal userLtv9;
+
+    /**
+     * 用户LTV10
+     */
+    @ApiModelProperty(value = "用户LTV10")
+    private BigDecimal userLtv10;
+
+    /**
+     * 用户LTV11
+     */
+    @ApiModelProperty(value = "用户LTV11")
+    private BigDecimal userLtv11;
+
+    /**
+     * 用户LTV12
+     */
+    @ApiModelProperty(value = "用户LTV12")
+    private BigDecimal userLtv12;
+
+    /**
+     * 用户LTV13
+     */
+    @ApiModelProperty(value = "用户LTV13")
+    private BigDecimal userLtv13;
+
+    /**
+     * 用户LTV14
+     */
+    @ApiModelProperty(value = "用户LTV14")
+    private BigDecimal userLtv14;
+
+    /**
+     * 用户LTV15
+     */
+    @ApiModelProperty(value = "用户LTV15")
+    private BigDecimal userLtv15;
+
+    /**
+     * 用户LTV16
+     */
+    @ApiModelProperty(value = "用户LTV16")
+    private BigDecimal userLtv16;
+
+    /**
+     * 用户LTV17
+     */
+    @ApiModelProperty(value = "用户LTV17")
+    private BigDecimal userLtv17;
+
+    /**
+     * 用户LTV18
+     */
+    @ApiModelProperty(value = "用户LTV18")
+    private BigDecimal userLtv18;
+
+    /**
+     * 用户LTV19
+     */
+    @ApiModelProperty(value = "用户LTV19")
+    private BigDecimal userLtv19;
+
+    /**
+     * 用户LTV20
+     */
+    @ApiModelProperty(value = "用户LTV20")
+    private BigDecimal userLtv20;
+
+    /**
+     * 用户LTV21
+     */
+    @ApiModelProperty(value = "用户LTV21")
+    private BigDecimal userLtv21;
+
+    /**
+     * 用户LTV22
+     */
+    @ApiModelProperty(value = "用户LTV22")
+    private BigDecimal userLtv22;
+
+    /**
+     * 用户LTV23
+     */
+    @ApiModelProperty(value = "用户LTV23")
+    private BigDecimal userLtv23;
+
+    /**
+     * 用户LTV24
+     */
+    @ApiModelProperty(value = "用户LTV24")
+    private BigDecimal userLtv24;
+
+    /**
+     * 用户LTV25
+     */
+    @ApiModelProperty(value = "用户LTV25")
+    private BigDecimal userLtv25;
+
+    /**
+     * 用户LTV26
+     */
+    @ApiModelProperty(value = "用户LTV26")
+    private BigDecimal userLtv26;
+
+    /**
+     * 用户LTV27
+     */
+    @ApiModelProperty(value = "用户LTV27")
+    private BigDecimal userLtv27;
+
+    /**
+     * 用户LTV28
+     */
+    @ApiModelProperty(value = "用户LTV28")
+    private BigDecimal userLtv28;
+
+    /**
+     * 用户LTV29
+     */
+    @ApiModelProperty(value = "用户LTV29")
+    private BigDecimal userLtv29;
+
+    /**
+     * 用户LTV30
+     */
+    @ApiModelProperty(value = "用户LTV30")
+    private BigDecimal userLtv30;
+
+    /**
+     * 用户LTV31
+     */
+    @ApiModelProperty(value = "用户LTV31")
+    private BigDecimal userLtv31;
+
+    /**
+     * 用户LTV32
+     */
+    @ApiModelProperty(value = "用户LTV32")
+    private BigDecimal userLtv32;
+
+    /**
+     * 用户LTV33
+     */
+    @ApiModelProperty(value = "用户LTV33")
+    private BigDecimal userLtv33;
+
+    /**
+     * 用户LTV34
+     */
+    @ApiModelProperty(value = "用户LTV34")
+    private BigDecimal userLtv34;
+
+    /**
+     * 用户LTV35
+     */
+    @ApiModelProperty(value = "用户LTV35")
+    private BigDecimal userLtv35;
+
+    /**
+     * 用户LTV36
+     */
+    @ApiModelProperty(value = "用户LTV36")
+    private BigDecimal userLtv36;
+
+    /**
+     * 用户LTV37
+     */
+    @ApiModelProperty(value = "用户LTV37")
+    private BigDecimal userLtv37;
+
+    /**
+     * 用户LTV38
+     */
+    @ApiModelProperty(value = "用户LTV38")
+    private BigDecimal userLtv38;
+
+    /**
+     * 用户LTV39
+     */
+    @ApiModelProperty(value = "用户LTV39")
+    private BigDecimal userLtv39;
+
+    /**
+     * 用户LTV40
+     */
+    @ApiModelProperty(value = "用户LTV40")
+    private BigDecimal userLtv40;
+
+    /**
+     * 用户LTV41
+     */
+    @ApiModelProperty(value = "用户LTV41")
+    private BigDecimal userLtv41;
+
+    /**
+     * 用户LTV42
+     */
+    @ApiModelProperty(value = "用户LTV42")
+    private BigDecimal userLtv42;
+
+    /**
+     * 用户LTV43
+     */
+    @ApiModelProperty(value = "用户LTV43")
+    private BigDecimal userLtv43;
+
+    /**
+     * 用户LTV44
+     */
+    @ApiModelProperty(value = "用户LTV44")
+    private BigDecimal userLtv44;
+
+    /**
+     * 用户LTV45
+     */
+    @ApiModelProperty(value = "用户LTV45")
+    private BigDecimal userLtv45;
+
+    /**
+     * 用户LTV46
+     */
+    @ApiModelProperty(value = "用户LTV46")
+    private BigDecimal userLtv46;
+
+    /**
+     * 用户LTV47
+     */
+    @ApiModelProperty(value = "用户LTV47")
+    private BigDecimal userLtv47;
+
+    /**
+     * 用户LTV48
+     */
+    @ApiModelProperty(value = "用户LTV48")
+    private BigDecimal userLtv48;
+
+    /**
+     * 用户LTV49
+     */
+    @ApiModelProperty(value = "用户LTV49")
+    private BigDecimal userLtv49;
+
+    /**
+     * 用户LTV50
+     */
+    @ApiModelProperty(value = "用户LTV50")
+    private BigDecimal userLtv50;
+
+    /**
+     * 用户LTV51
+     */
+    @ApiModelProperty(value = "用户LTV51")
+    private BigDecimal userLtv51;
+
+    /**
+     * 用户LTV52
+     */
+    @ApiModelProperty(value = "用户LTV52")
+    private BigDecimal userLtv52;
+
+    /**
+     * 用户LTV53
+     */
+    @ApiModelProperty(value = "用户LTV53")
+    private BigDecimal userLtv53;
+
+    /**
+     * 用户LTV54
+     */
+    @ApiModelProperty(value = "用户LTV54")
+    private BigDecimal userLtv54;
+
+    /**
+     * 用户LTV55
+     */
+    @ApiModelProperty(value = "用户LTV55")
+    private BigDecimal userLtv55;
+
+    /**
+     * 用户LTV56
+     */
+    @ApiModelProperty(value = "用户LTV56")
+    private BigDecimal userLtv56;
+
+    /**
+     * 用户LTV57
+     */
+    @ApiModelProperty(value = "用户LTV57")
+    private BigDecimal userLtv57;
+
+    /**
+     * 用户LTV58
+     */
+    @ApiModelProperty(value = "用户LTV58")
+    private BigDecimal userLtv58;
+
+    /**
+     * 用户LTV59
+     */
+    @ApiModelProperty(value = "用户LTV59")
+    private BigDecimal userLtv59;
+
+    /**
+     * 用户LTV60
+     */
+    @ApiModelProperty(value = "用户LTV60")
+    private BigDecimal userLtv60;
+
+    /**
+     * 用户LTV61
+     */
+    @ApiModelProperty(value = "用户LTV61")
+    private BigDecimal userLtv61;
+
+    /**
+     * 用户LTV62
+     */
+    @ApiModelProperty(value = "用户LTV62")
+    private BigDecimal userLtv62;
+
+    /**
+     * 用户LTV63
+     */
+    @ApiModelProperty(value = "用户LTV63")
+    private BigDecimal userLtv63;
+
+    /**
+     * 用户LTV64
+     */
+    @ApiModelProperty(value = "用户LTV64")
+    private BigDecimal userLtv64;
+
+    /**
+     * 用户LTV65
+     */
+    @ApiModelProperty(value = "用户LTV65")
+    private BigDecimal userLtv65;
+
+    /**
+     * 用户LTV66
+     */
+    @ApiModelProperty(value = "用户LTV66")
+    private BigDecimal userLtv66;
+
+    /**
+     * 用户LTV67
+     */
+    @ApiModelProperty(value = "用户LTV67")
+    private BigDecimal userLtv67;
+
+    /**
+     * 用户LTV68
+     */
+    @ApiModelProperty(value = "用户LTV68")
+    private BigDecimal userLtv68;
+
+    /**
+     * 用户LTV69
+     */
+    @ApiModelProperty(value = "用户LTV69")
+    private BigDecimal userLtv69;
+
+    /**
+     * 用户LTV70
+     */
+    @ApiModelProperty(value = "用户LTV70")
+    private BigDecimal userLtv70;
+
+    /**
+     * 用户LTV71
+     */
+    @ApiModelProperty(value = "用户LTV71")
+    private BigDecimal userLtv71;
+
+    /**
+     * 用户LTV72
+     */
+    @ApiModelProperty(value = "用户LTV72")
+    private BigDecimal userLtv72;
+
+    /**
+     * 用户LTV73
+     */
+    @ApiModelProperty(value = "用户LTV73")
+    private BigDecimal userLtv73;
+
+    /**
+     * 用户LTV74
+     */
+    @ApiModelProperty(value = "用户LTV74")
+    private BigDecimal userLtv74;
+
+    /**
+     * 用户LTV75
+     */
+    @ApiModelProperty(value = "用户LTV75")
+    private BigDecimal userLtv75;
+
+    /**
+     * 用户LTV76
+     */
+    @ApiModelProperty(value = "用户LTV76")
+    private BigDecimal userLtv76;
+
+    /**
+     * 用户LTV77
+     */
+    @ApiModelProperty(value = "用户LTV77")
+    private BigDecimal userLtv77;
+
+    /**
+     * 用户LTV78
+     */
+    @ApiModelProperty(value = "用户LTV78")
+    private BigDecimal userLtv78;
+
+    /**
+     * 用户LTV79
+     */
+    @ApiModelProperty(value = "用户LTV79")
+    private BigDecimal userLtv79;
+
+    /**
+     * 用户LTV80
+     */
+    @ApiModelProperty(value = "用户LTV80")
+    private BigDecimal userLtv80;
+
+    /**
+     * 用户LTV81
+     */
+    @ApiModelProperty(value = "用户LTV81")
+    private BigDecimal userLtv81;
+
+    /**
+     * 用户LTV82
+     */
+    @ApiModelProperty(value = "用户LTV82")
+    private BigDecimal userLtv82;
+
+    /**
+     * 用户LTV83
+     */
+    @ApiModelProperty(value = "用户LTV83")
+    private BigDecimal userLtv83;
+
+    /**
+     * 用户LTV84
+     */
+    @ApiModelProperty(value = "用户LTV84")
+    private BigDecimal userLtv84;
+
+    /**
+     * 用户LTV85
+     */
+    @ApiModelProperty(value = "用户LTV85")
+    private BigDecimal userLtv85;
+
+    /**
+     * 用户LTV86
+     */
+    @ApiModelProperty(value = "用户LTV86")
+    private BigDecimal userLtv86;
+
+    /**
+     * 用户LTV87
+     */
+    @ApiModelProperty(value = "用户LTV87")
+    private BigDecimal userLtv87;
+
+    /**
+     * 用户LTV88
+     */
+    @ApiModelProperty(value = "用户LTV88")
+    private BigDecimal userLtv88;
+
+    /**
+     * 用户LTV89
+     */
+    @ApiModelProperty(value = "用户LTV89")
+    private BigDecimal userLtv89;
+
+    /**
+     * 用户LTV90
+     */
+    @ApiModelProperty(value = "用户LTV90")
+    private BigDecimal userLtv90;
+
+    /**
+     * 用户LTVm4
+     */
+    @ApiModelProperty(value = "用户LTVm4")
+    private BigDecimal userLtvM4;
+
+    /**
+     * 用户LTVm5
+     */
+    @ApiModelProperty(value = "用户LTVm5")
+    private BigDecimal userLtvM5;
+
+    /**
+     * 用户LTVm6
+     */
+    @ApiModelProperty(value = "用户LTVm6")
+    private BigDecimal userLtvM6;
+
+    /**
+     * 用户LTVm7
+     */
+    @ApiModelProperty(value = "用户LTVm7")
+    private BigDecimal userLtvM7;
+
+    /**
+     * 用户LTVm8
+     */
+    @ApiModelProperty(value = "用户LTVm8")
+    private BigDecimal userLtvM8;
+
+    /**
+     * 用户LTVm9
+     */
+    @ApiModelProperty(value = "用户LTVm9")
+    private BigDecimal userLtvM9;
+
+    /**
+     * 用户LTVm10
+     */
+    @ApiModelProperty(value = "用户LTVm10")
+    private BigDecimal userLtvM10;
+
+    /**
+     * 用户LTVm11
+     */
+    @ApiModelProperty(value = "用户LTVm11")
+    private BigDecimal userLtvM11;
+
+    /**
+     * 用户LTVy1
+     */
+    @ApiModelProperty(value = "用户LTVy1")
+    private BigDecimal userLtvY1;
+
+    /**
+     * 用户LTVtotal
+     */
+    @ApiModelProperty(value = "用户LTVtotal")
+    private BigDecimal userLtvTotal;
+
+    /**
+     * 创角LTV1
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv1;
+
+    /**
+     * 创角LTV2
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv2;
+
+    /**
+     * 创角LTV3
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv3;
+
+    /**
+     * 创角LTV4
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv4;
+
+    /**
+     * 创角LTV5
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv5;
+
+    /**
+     * 创角LTV6
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv6;
+
+    /**
+     * 创角LTV7
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv7;
+
+    /**
+     * 创角LTV8
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv8;
+
+    /**
+     * 创角LTV9
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv9;
+
+    /**
+     * 创角LTV10
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv10;
+
+    /**
+     * 创角LTV11
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv11;
+
+    /**
+     * 创角LTV12
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv12;
+
+    /**
+     * 创角LTV13
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv13;
+
+    /**
+     * 创角LTV14
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv14;
+
+    /**
+     * 创角LTV15
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv15;
+
+    /**
+     * 创角LTV16
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv16;
+
+    /**
+     * 创角LTV17
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv17;
+
+    /**
+     * 创角LTV18
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv18;
+
+    /**
+     * 创角LTV19
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv19;
+
+    /**
+     * 创角LTV20
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv20;
+
+    /**
+     * 创角LTV21
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv21;
+
+    /**
+     * 创角LTV22
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv22;
+
+    /**
+     * 创角LTV23
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv23;
+
+    /**
+     * 创角LTV24
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv24;
+
+    /**
+     * 创角LTV25
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv25;
+
+    /**
+     * 创角LTV26
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv26;
+
+    /**
+     * 创角LTV27
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv27;
+
+    /**
+     * 创角LTV28
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv28;
+
+    /**
+     * 创角LTV29
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv29;
+
+    /**
+     * 创角LTV30
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv30;
+
+    /**
+     * 创角LTV31
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv31;
+
+    /**
+     * 创角LTV32
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv32;
+
+    /**
+     * 创角LTV33
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv33;
+
+    /**
+     * 创角LTV34
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv34;
+
+    /**
+     * 创角LTV35
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv35;
+
+    /**
+     * 创角LTV36
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv36;
+
+    /**
+     * 创角LTV37
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv37;
+
+    /**
+     * 创角LTV38
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv38;
+
+    /**
+     * 创角LTV39
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv39;
+
+    /**
+     * 创角LTV40
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv40;
+
+    /**
+     * 创角LTV41
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv41;
+
+    /**
+     * 创角LTV42
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv42;
+
+    /**
+     * 创角LTV43
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv43;
+
+    /**
+     * 创角LTV44
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv44;
+
+    /**
+     * 创角LTV45
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv45;
+
+    /**
+     * 创角LTV46
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv46;
+
+    /**
+     * 创角LTV47
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv47;
+
+    /**
+     * 创角LTV48
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv48;
+
+    /**
+     * 创角LTV49
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv49;
+
+    /**
+     * 创角LTV50
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv50;
+
+    /**
+     * 创角LTV51
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv51;
+
+    /**
+     * 创角LTV52
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv52;
+
+    /**
+     * 创角LTV53
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv53;
+
+    /**
+     * 创角LTV54
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv54;
+
+    /**
+     * 创角LTV55
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv55;
+
+    /**
+     * 创角LTV56
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv56;
+
+    /**
+     * 创角LTV57
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv57;
+
+    /**
+     * 创角LTV58
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv58;
+
+    /**
+     * 创角LTV59
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv59;
+
+    /**
+     * 创角LTV60
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv60;
+
+    /**
+     * 创角LTV61
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv61;
+
+    /**
+     * 创角LTV62
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv62;
+
+    /**
+     * 创角LTV63
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv63;
+
+    /**
+     * 创角LTV64
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv64;
+
+    /**
+     * 创角LTV65
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv65;
+
+    /**
+     * 创角LTV66
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv66;
+
+    /**
+     * 创角LTV67
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv67;
+
+    /**
+     * 创角LTV68
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv68;
+
+    /**
+     * 创角LTV69
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv69;
+
+    /**
+     * 创角LTV70
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv70;
+
+    /**
+     * 创角LTV71
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv71;
+
+    /**
+     * 创角LTV72
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv72;
+
+    /**
+     * 创角LTV73
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv73;
+
+    /**
+     * 创角LTV74
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv74;
+
+    /**
+     * 创角LTV75
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv75;
+
+    /**
+     * 创角LTV76
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv76;
+
+    /**
+     * 创角LTV77
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv77;
+
+    /**
+     * 创角LTV78
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv78;
+
+    /**
+     * 创角LTV79
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv79;
+
+    /**
+     * 创角LTV80
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv80;
+
+    /**
+     * 创角LTV81
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv81;
+
+    /**
+     * 创角LTV82
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv82;
+
+    /**
+     * 创角LTV83
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv83;
+
+    /**
+     * 创角LTV84
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv84;
+
+    /**
+     * 创角LTV85
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv85;
+
+    /**
+     * 创角LTV86
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv86;
+
+    /**
+     * 创角LTV87
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv87;
+
+    /**
+     * 创角LTV88
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv88;
+
+    /**
+     * 创角LTV89
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv89;
+
+    /**
+     * 创角LTV90
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv90;
+
+    /**
+     * 创角LTVm4
+     */
+    @ApiModelProperty(value = "创角LTVm4-m11")
+    private BigDecimal roleLtvM4;
+
+    /**
+     * 创角LTVm5
+     */
+    @ApiModelProperty(value = "创角LTVm4-m11")
+    private BigDecimal roleLtvM5;
+
+    /**
+     * 创角LTVm6
+     */
+    @ApiModelProperty(value = "创角LTVm4-m11")
+    private BigDecimal roleLtvM6;
+
+    /**
+     * 创角LTVm7
+     */
+    @ApiModelProperty(value = "创角LTVm4-m11")
+    private BigDecimal roleLtvM7;
+
+    /**
+     * 创角LTVm8
+     */
+    @ApiModelProperty(value = "创角LTVm4-m11")
+    private BigDecimal roleLtvM8;
+
+    /**
+     * 创角LTVm9
+     */
+    @ApiModelProperty(value = "创角LTVm4-m11")
+    private BigDecimal roleLtvM9;
+
+    /**
+     * 创角LTVm10
+     */
+    @ApiModelProperty(value = "创角LTVm4-m11")
+    private BigDecimal roleLtvM10;
+
+    /**
+     * 创角LTVm11
+     */
+    @ApiModelProperty(value = "创角LTVm4-m11")
+    private BigDecimal roleLtvM11;
+
+    /**
+     * 创角LTVy1
+     */
+    @ApiModelProperty(value = "创角LTVy1")
+    private BigDecimal roleLtvY1;
+
+    /**
+     * 创角LTVtotal
+     */
+    @ApiModelProperty(value = "创角LTVtotal")
+    private BigDecimal roleLtvTotal;
+
+    /**
+     * 游戏,消耗时间的第1天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da1;
+
+    /**
+     * 游戏,消耗时间的第2天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da2;
+
+    /**
+     * 游戏,消耗时间的第3天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da3;
+
+    /**
+     * 游戏,消耗时间的第4天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da4;
+
+    /**
+     * 游戏,消耗时间的第5天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da5;
+
+    /**
+     * 游戏,消耗时间的第6天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da6;
+
+    /**
+     * 游戏,消耗时间的第7天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da7;
+
+    /**
+     * 游戏,消耗时间的第8天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da8;
+
+    /**
+     * 游戏,消耗时间的第9天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da9;
+
+    /**
+     * 游戏,消耗时间的第10天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da10;
+
+    /**
+     * 游戏,消耗时间的第11天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da11;
+
+    /**
+     * 游戏,消耗时间的第12天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da12;
+
+    /**
+     * 游戏,消耗时间的第13天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da13;
+
+    /**
+     * 游戏,消耗时间的第14天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da14;
+
+    /**
+     * 游戏,消耗时间的第15天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da15;
+
+    /**
+     * 游戏,消耗时间的第16天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da16;
+
+    /**
+     * 游戏,消耗时间的第17天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da17;
+
+    /**
+     * 游戏,消耗时间的第18天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da18;
+
+    /**
+     * 游戏,消耗时间的第19天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da19;
+
+    /**
+     * 游戏,消耗时间的第20天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da20;
+
+    /**
+     * 游戏,消耗时间的第21天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da21;
+
+    /**
+     * 游戏,消耗时间的第22天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da22;
+
+    /**
+     * 游戏,消耗时间的第23天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da23;
+
+    /**
+     * 游戏,消耗时间的第24天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da24;
+
+    /**
+     * 游戏,消耗时间的第25天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da25;
+
+    /**
+     * 游戏,消耗时间的第26天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da26;
+
+    /**
+     * 游戏,消耗时间的第27天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da27;
+
+    /**
+     * 游戏,消耗时间的第28天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da28;
+
+    /**
+     * 游戏,消耗时间的第29天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da29;
+
+    /**
+     * 游戏,消耗时间的第30天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da30;
+
+    /**
+     * 游戏,消耗时间的第31天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da31;
+
+    /**
+     * 游戏,消耗时间的第32天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da32;
+
+    /**
+     * 游戏,消耗时间的第33天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da33;
+
+    /**
+     * 游戏,消耗时间的第34天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da34;
+
+    /**
+     * 游戏,消耗时间的第35天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da35;
+
+    /**
+     * 游戏,消耗时间的第36天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da36;
+
+    /**
+     * 游戏,消耗时间的第37天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da37;
+
+    /**
+     * 游戏,消耗时间的第38天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da38;
+
+    /**
+     * 游戏,消耗时间的第39天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da39;
+
+    /**
+     * 游戏,消耗时间的第40天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da40;
+
+    /**
+     * 游戏,消耗时间的第41天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da41;
+
+    /**
+     * 游戏,消耗时间的第42天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da42;
+
+    /**
+     * 游戏,消耗时间的第43天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da43;
+
+    /**
+     * 游戏,消耗时间的第44天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da44;
+
+    /**
+     * 游戏,消耗时间的第45天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da45;
+
+    /**
+     * 游戏,消耗时间的第46天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da46;
+
+    /**
+     * 游戏,消耗时间的第47天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da47;
+
+    /**
+     * 游戏,消耗时间的第48天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da48;
+
+    /**
+     * 游戏,消耗时间的第49天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da49;
+
+    /**
+     * 游戏,消耗时间的第50天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da50;
+
+    /**
+     * 游戏,消耗时间的第51天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da51;
+
+    /**
+     * 游戏,消耗时间的第52天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da52;
+
+    /**
+     * 游戏,消耗时间的第53天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da53;
+
+    /**
+     * 游戏,消耗时间的第54天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da54;
+
+    /**
+     * 游戏,消耗时间的第55天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da55;
+
+    /**
+     * 游戏,消耗时间的第56天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da56;
+
+    /**
+     * 游戏,消耗时间的第57天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da57;
+
+    /**
+     * 游戏,消耗时间的第58天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da58;
+
+    /**
+     * 游戏,消耗时间的第59天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da59;
+
+    /**
+     * 游戏,消耗时间的第60新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da60;
+
+    /**
+     * 游戏,消耗时间的第61天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da61;
+
+    /**
+     * 游戏,消耗时间的第62天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da62;
+
+    /**
+     * 游戏,消耗时间的第63天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da63;
+
+    /**
+     * 游戏,消耗时间的第64天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da64;
+
+    /**
+     * 游戏,消耗时间的第65天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da65;
+
+    /**
+     * 游戏,消耗时间的第66天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da66;
+
+    /**
+     * 游戏,消耗时间的第67天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da67;
+
+    /**
+     * 游戏,消耗时间的第68天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da68;
+
+    /**
+     * 游戏,消耗时间的第69天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da69;
+
+    /**
+     * 游戏,消耗时间的第70天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da70;
+
+    /**
+     * 游戏,消耗时间的第71天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da71;
+
+    /**
+     * 游戏,消耗时间的第72天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da72;
+
+    /**
+     * 游戏,消耗时间的第73天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da73;
+
+    /**
+     * 游戏,消耗时间的第74天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da74;
+
+    /**
+     * 游戏,消耗时间的第75天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da75;
+
+    /**
+     * 游戏,消耗时间的第76天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da76;
+
+    /**
+     * 游戏,消耗时间的第77天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da77;
+
+    /**
+     * 游戏,消耗时间的第78天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da78;
+
+    /**
+     * 游戏,消耗时间的第79天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da79;
+
+    /**
+     * 游戏,消耗时间的第80天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da80;
+
+    /**
+     * 游戏,消耗时间的第81天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da81;
+
+    /**
+     * 游戏,消耗时间的第82天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da82;
+
+    /**
+     * 游戏,消耗时间的第83天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da83;
+
+    /**
+     * 游戏,消耗时间的第84天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da84;
+
+    /**
+     * 游戏,消耗时间的第85天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da85;
+
+    /**
+     * 游戏,消耗时间的第86天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da86;
+
+    /**
+     * 游戏,消耗时间的第87天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da87;
+
+    /**
+     * 游戏,消耗时间的第88天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da88;
+
+    /**
+     * 游戏,消耗时间的第89天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da89;
+
+    /**
+     * 游戏,消耗时间的第90天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da90;
+
+    /**
+     * 游戏,消耗时间的第4月新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第4-11月新用户充值")
+    private BigDecimal m4;
+
+    /**
+     * 游戏,消耗时间的第5月新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第4-11月新用户充值")
+    private BigDecimal m5;
+
+    /**
+     * 游戏,消耗时间的第6月新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第4-11月新用户充值")
+    private BigDecimal m6;
+
+    /**
+     * 游戏,消耗时间的第7月新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第4-11月新用户充值")
+    private BigDecimal m7;
+
+    /**
+     * 游戏,消耗时间的第8月新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第4-11月新用户充值")
+    private BigDecimal m8;
+
+    /**
+     * 游戏,消耗时间的第9月新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第4-11月新用户充值")
+    private BigDecimal m9;
+
+    /**
+     * 游戏,消耗时间的第10月新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第4-11月新用户充值")
+    private BigDecimal m10;
+
+    /**
+     * 游戏,消耗时间的第11月新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第4-11月新用户充值")
+    private BigDecimal m11;
+
+    /**
+     * 游戏,消耗时间的第1年新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1年新用户充值")
+    private BigDecimal y1;
+
+    /**
+     * 至今充值金额
+     */
+    @ApiModelProperty(value = "至今充值金额")
+    private BigDecimal total;
+
+    /**
+     * 注册人数
+     */
+    @ApiModelProperty(value = "注册人数ltv")
+    private Integer regUserCnt;
+
+    /**
+     * 创角人数
+     */
+    @ApiModelProperty(value = "创角人数ltv")
+    private Integer firstRoleNumLtv;
+
+}

+ 2055 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/LtvDataVO.java

@@ -0,0 +1,2055 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+/**
+ * @author tianhua
+ * @time 2023/8/9
+ * @Description ltv数据展示实体
+ **/
+@Data
+public class LtvDataVO {
+
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty(value = "游戏ID")
+    private Long gameId;
+
+    /**
+     * 推广游戏名称
+     */
+    @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 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;
+
+    /**
+     * 用户LTV1
+     */
+    @ApiModelProperty(value = "用户LTV1")
+    private BigDecimal userLtv1;
+
+    /**
+     * 用户LTV2
+     */
+    @ApiModelProperty(value = "用户LTV2")
+    private BigDecimal userLtv2;
+
+    /**
+     * 用户LTV3
+     */
+    @ApiModelProperty(value = "用户LTV3")
+    private BigDecimal userLtv3;
+
+    /**
+     * 用户LTV4
+     */
+    @ApiModelProperty(value = "用户LTV4")
+    private BigDecimal userLtv4;
+
+    /**
+     * 用户LTV5
+     */
+    @ApiModelProperty(value = "用户LTV5")
+    private BigDecimal userLtv5;
+
+    /**
+     * 用户LTV6
+     */
+    @ApiModelProperty(value = "用户LTV6")
+    private BigDecimal userLtv6;
+
+    /**
+     * 用户LTV7
+     */
+    @ApiModelProperty(value = "用户LTV7")
+    private BigDecimal userLtv7;
+
+    /**
+     * 用户LTV8
+     */
+    @ApiModelProperty(value = "用户LTV8")
+    private BigDecimal userLtv8;
+
+    /**
+     * 用户LTV9
+     */
+    @ApiModelProperty(value = "用户LTV9")
+    private BigDecimal userLtv9;
+
+    /**
+     * 用户LTV10
+     */
+    @ApiModelProperty(value = "用户LTV10")
+    private BigDecimal userLtv10;
+
+    /**
+     * 用户LTV11
+     */
+    @ApiModelProperty(value = "用户LTV11")
+    private BigDecimal userLtv11;
+
+    /**
+     * 用户LTV12
+     */
+    @ApiModelProperty(value = "用户LTV12")
+    private BigDecimal userLtv12;
+
+    /**
+     * 用户LTV13
+     */
+    @ApiModelProperty(value = "用户LTV13")
+    private BigDecimal userLtv13;
+
+    /**
+     * 用户LTV14
+     */
+    @ApiModelProperty(value = "用户LTV14")
+    private BigDecimal userLtv14;
+
+    /**
+     * 用户LTV15
+     */
+    @ApiModelProperty(value = "用户LTV15")
+    private BigDecimal userLtv15;
+
+    /**
+     * 用户LTV16
+     */
+    @ApiModelProperty(value = "用户LTV16")
+    private BigDecimal userLtv16;
+
+    /**
+     * 用户LTV17
+     */
+    @ApiModelProperty(value = "用户LTV17")
+    private BigDecimal userLtv17;
+
+    /**
+     * 用户LTV18
+     */
+    @ApiModelProperty(value = "用户LTV18")
+    private BigDecimal userLtv18;
+
+    /**
+     * 用户LTV19
+     */
+    @ApiModelProperty(value = "用户LTV19")
+    private BigDecimal userLtv19;
+
+    /**
+     * 用户LTV20
+     */
+    @ApiModelProperty(value = "用户LTV20")
+    private BigDecimal userLtv20;
+
+    /**
+     * 用户LTV21
+     */
+    @ApiModelProperty(value = "用户LTV21")
+    private BigDecimal userLtv21;
+
+    /**
+     * 用户LTV22
+     */
+    @ApiModelProperty(value = "用户LTV22")
+    private BigDecimal userLtv22;
+
+    /**
+     * 用户LTV23
+     */
+    @ApiModelProperty(value = "用户LTV23")
+    private BigDecimal userLtv23;
+
+    /**
+     * 用户LTV24
+     */
+    @ApiModelProperty(value = "用户LTV24")
+    private BigDecimal userLtv24;
+
+    /**
+     * 用户LTV25
+     */
+    @ApiModelProperty(value = "用户LTV25")
+    private BigDecimal userLtv25;
+
+    /**
+     * 用户LTV26
+     */
+    @ApiModelProperty(value = "用户LTV26")
+    private BigDecimal userLtv26;
+
+    /**
+     * 用户LTV27
+     */
+    @ApiModelProperty(value = "用户LTV27")
+    private BigDecimal userLtv27;
+
+    /**
+     * 用户LTV28
+     */
+    @ApiModelProperty(value = "用户LTV28")
+    private BigDecimal userLtv28;
+
+    /**
+     * 用户LTV29
+     */
+    @ApiModelProperty(value = "用户LTV29")
+    private BigDecimal userLtv29;
+
+    /**
+     * 用户LTV30
+     */
+    @ApiModelProperty(value = "用户LTV30")
+    private BigDecimal userLtv30;
+
+    /**
+     * 用户LTV31
+     */
+    @ApiModelProperty(value = "用户LTV31")
+    private BigDecimal userLtv31;
+
+    /**
+     * 用户LTV32
+     */
+    @ApiModelProperty(value = "用户LTV32")
+    private BigDecimal userLtv32;
+
+    /**
+     * 用户LTV33
+     */
+    @ApiModelProperty(value = "用户LTV33")
+    private BigDecimal userLtv33;
+
+    /**
+     * 用户LTV34
+     */
+    @ApiModelProperty(value = "用户LTV34")
+    private BigDecimal userLtv34;
+
+    /**
+     * 用户LTV35
+     */
+    @ApiModelProperty(value = "用户LTV35")
+    private BigDecimal userLtv35;
+
+    /**
+     * 用户LTV36
+     */
+    @ApiModelProperty(value = "用户LTV36")
+    private BigDecimal userLtv36;
+
+    /**
+     * 用户LTV37
+     */
+    @ApiModelProperty(value = "用户LTV37")
+    private BigDecimal userLtv37;
+
+    /**
+     * 用户LTV38
+     */
+    @ApiModelProperty(value = "用户LTV38")
+    private BigDecimal userLtv38;
+
+    /**
+     * 用户LTV39
+     */
+    @ApiModelProperty(value = "用户LTV39")
+    private BigDecimal userLtv39;
+
+    /**
+     * 用户LTV40
+     */
+    @ApiModelProperty(value = "用户LTV40")
+    private BigDecimal userLtv40;
+
+    /**
+     * 用户LTV41
+     */
+    @ApiModelProperty(value = "用户LTV41")
+    private BigDecimal userLtv41;
+
+    /**
+     * 用户LTV42
+     */
+    @ApiModelProperty(value = "用户LTV42")
+    private BigDecimal userLtv42;
+
+    /**
+     * 用户LTV43
+     */
+    @ApiModelProperty(value = "用户LTV43")
+    private BigDecimal userLtv43;
+
+    /**
+     * 用户LTV44
+     */
+    @ApiModelProperty(value = "用户LTV44")
+    private BigDecimal userLtv44;
+
+    /**
+     * 用户LTV45
+     */
+    @ApiModelProperty(value = "用户LTV45")
+    private BigDecimal userLtv45;
+
+    /**
+     * 用户LTV46
+     */
+    @ApiModelProperty(value = "用户LTV46")
+    private BigDecimal userLtv46;
+
+    /**
+     * 用户LTV47
+     */
+    @ApiModelProperty(value = "用户LTV47")
+    private BigDecimal userLtv47;
+
+    /**
+     * 用户LTV48
+     */
+    @ApiModelProperty(value = "用户LTV48")
+    private BigDecimal userLtv48;
+
+    /**
+     * 用户LTV49
+     */
+    @ApiModelProperty(value = "用户LTV49")
+    private BigDecimal userLtv49;
+
+    /**
+     * 用户LTV50
+     */
+    @ApiModelProperty(value = "用户LTV50")
+    private BigDecimal userLtv50;
+
+    /**
+     * 用户LTV51
+     */
+    @ApiModelProperty(value = "用户LTV51")
+    private BigDecimal userLtv51;
+
+    /**
+     * 用户LTV52
+     */
+    @ApiModelProperty(value = "用户LTV52")
+    private BigDecimal userLtv52;
+
+    /**
+     * 用户LTV53
+     */
+    @ApiModelProperty(value = "用户LTV53")
+    private BigDecimal userLtv53;
+
+    /**
+     * 用户LTV54
+     */
+    @ApiModelProperty(value = "用户LTV54")
+    private BigDecimal userLtv54;
+
+    /**
+     * 用户LTV55
+     */
+    @ApiModelProperty(value = "用户LTV55")
+    private BigDecimal userLtv55;
+
+    /**
+     * 用户LTV56
+     */
+    @ApiModelProperty(value = "用户LTV56")
+    private BigDecimal userLtv56;
+
+    /**
+     * 用户LTV57
+     */
+    @ApiModelProperty(value = "用户LTV57")
+    private BigDecimal userLtv57;
+
+    /**
+     * 用户LTV58
+     */
+    @ApiModelProperty(value = "用户LTV58")
+    private BigDecimal userLtv58;
+
+    /**
+     * 用户LTV59
+     */
+    @ApiModelProperty(value = "用户LTV59")
+    private BigDecimal userLtv59;
+
+    /**
+     * 用户LTV60
+     */
+    @ApiModelProperty(value = "用户LTV60")
+    private BigDecimal userLtv60;
+
+    /**
+     * 用户LTV61
+     */
+    @ApiModelProperty(value = "用户LTV61")
+    private BigDecimal userLtv61;
+
+    /**
+     * 用户LTV62
+     */
+    @ApiModelProperty(value = "用户LTV62")
+    private BigDecimal userLtv62;
+
+    /**
+     * 用户LTV63
+     */
+    @ApiModelProperty(value = "用户LTV63")
+    private BigDecimal userLtv63;
+
+    /**
+     * 用户LTV64
+     */
+    @ApiModelProperty(value = "用户LTV64")
+    private BigDecimal userLtv64;
+
+    /**
+     * 用户LTV65
+     */
+    @ApiModelProperty(value = "用户LTV65")
+    private BigDecimal userLtv65;
+
+    /**
+     * 用户LTV66
+     */
+    @ApiModelProperty(value = "用户LTV66")
+    private BigDecimal userLtv66;
+
+    /**
+     * 用户LTV67
+     */
+    @ApiModelProperty(value = "用户LTV67")
+    private BigDecimal userLtv67;
+
+    /**
+     * 用户LTV68
+     */
+    @ApiModelProperty(value = "用户LTV68")
+    private BigDecimal userLtv68;
+
+    /**
+     * 用户LTV69
+     */
+    @ApiModelProperty(value = "用户LTV69")
+    private BigDecimal userLtv69;
+
+    /**
+     * 用户LTV70
+     */
+    @ApiModelProperty(value = "用户LTV70")
+    private BigDecimal userLtv70;
+
+    /**
+     * 用户LTV71
+     */
+    @ApiModelProperty(value = "用户LTV71")
+    private BigDecimal userLtv71;
+
+    /**
+     * 用户LTV72
+     */
+    @ApiModelProperty(value = "用户LTV72")
+    private BigDecimal userLtv72;
+
+    /**
+     * 用户LTV73
+     */
+    @ApiModelProperty(value = "用户LTV73")
+    private BigDecimal userLtv73;
+
+    /**
+     * 用户LTV74
+     */
+    @ApiModelProperty(value = "用户LTV74")
+    private BigDecimal userLtv74;
+
+    /**
+     * 用户LTV75
+     */
+    @ApiModelProperty(value = "用户LTV75")
+    private BigDecimal userLtv75;
+
+    /**
+     * 用户LTV76
+     */
+    @ApiModelProperty(value = "用户LTV76")
+    private BigDecimal userLtv76;
+
+    /**
+     * 用户LTV77
+     */
+    @ApiModelProperty(value = "用户LTV77")
+    private BigDecimal userLtv77;
+
+    /**
+     * 用户LTV78
+     */
+    @ApiModelProperty(value = "用户LTV78")
+    private BigDecimal userLtv78;
+
+    /**
+     * 用户LTV79
+     */
+    @ApiModelProperty(value = "用户LTV79")
+    private BigDecimal userLtv79;
+
+    /**
+     * 用户LTV80
+     */
+    @ApiModelProperty(value = "用户LTV80")
+    private BigDecimal userLtv80;
+
+    /**
+     * 用户LTV81
+     */
+    @ApiModelProperty(value = "用户LTV81")
+    private BigDecimal userLtv81;
+
+    /**
+     * 用户LTV82
+     */
+    @ApiModelProperty(value = "用户LTV82")
+    private BigDecimal userLtv82;
+
+    /**
+     * 用户LTV83
+     */
+    @ApiModelProperty(value = "用户LTV83")
+    private BigDecimal userLtv83;
+
+    /**
+     * 用户LTV84
+     */
+    @ApiModelProperty(value = "用户LTV84")
+    private BigDecimal userLtv84;
+
+    /**
+     * 用户LTV85
+     */
+    @ApiModelProperty(value = "用户LTV85")
+    private BigDecimal userLtv85;
+
+    /**
+     * 用户LTV86
+     */
+    @ApiModelProperty(value = "用户LTV86")
+    private BigDecimal userLtv86;
+
+    /**
+     * 用户LTV87
+     */
+    @ApiModelProperty(value = "用户LTV87")
+    private BigDecimal userLtv87;
+
+    /**
+     * 用户LTV88
+     */
+    @ApiModelProperty(value = "用户LTV88")
+    private BigDecimal userLtv88;
+
+    /**
+     * 用户LTV89
+     */
+    @ApiModelProperty(value = "用户LTV89")
+    private BigDecimal userLtv89;
+
+    /**
+     * 用户LTV90
+     */
+    @ApiModelProperty(value = "用户LTV90")
+    private BigDecimal userLtv90;
+
+    /**
+     * 用户LTVm4
+     */
+    @ApiModelProperty(value = "用户LTVm4")
+    private BigDecimal userLtvM4;
+
+    /**
+     * 用户LTVm5
+     */
+    @ApiModelProperty(value = "用户LTVm5")
+    private BigDecimal userLtvM5;
+
+    /**
+     * 用户LTVm6
+     */
+    @ApiModelProperty(value = "用户LTVm6")
+    private BigDecimal userLtvM6;
+
+    /**
+     * 用户LTVm7
+     */
+    @ApiModelProperty(value = "用户LTVm7")
+    private BigDecimal userLtvM7;
+
+    /**
+     * 用户LTVm8
+     */
+    @ApiModelProperty(value = "用户LTVm8")
+    private BigDecimal userLtvM8;
+
+    /**
+     * 用户LTVm9
+     */
+    @ApiModelProperty(value = "用户LTVm9")
+    private BigDecimal userLtvM9;
+
+    /**
+     * 用户LTVm10
+     */
+    @ApiModelProperty(value = "用户LTVm10")
+    private BigDecimal userLtvM10;
+
+    /**
+     * 用户LTVm11
+     */
+    @ApiModelProperty(value = "用户LTVm11")
+    private BigDecimal userLtvM11;
+
+    /**
+     * 用户LTVy1
+     */
+    @ApiModelProperty(value = "用户LTVy1")
+    private BigDecimal userLtvY1;
+
+    /**
+     * 用户LTVtotal
+     */
+    @ApiModelProperty(value = "用户LTVtotal")
+    private BigDecimal userLtvTotal;
+
+    /**
+     * 创角LTV1
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv1;
+
+    /**
+     * 创角LTV2
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv2;
+
+    /**
+     * 创角LTV3
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv3;
+
+    /**
+     * 创角LTV4
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv4;
+
+    /**
+     * 创角LTV5
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv5;
+
+    /**
+     * 创角LTV6
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv6;
+
+    /**
+     * 创角LTV7
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv7;
+
+    /**
+     * 创角LTV8
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv8;
+
+    /**
+     * 创角LTV9
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv9;
+
+    /**
+     * 创角LTV10
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv10;
+
+    /**
+     * 创角LTV11
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv11;
+
+    /**
+     * 创角LTV12
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv12;
+
+    /**
+     * 创角LTV13
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv13;
+
+    /**
+     * 创角LTV14
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv14;
+
+    /**
+     * 创角LTV15
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv15;
+
+    /**
+     * 创角LTV16
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv16;
+
+    /**
+     * 创角LTV17
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv17;
+
+    /**
+     * 创角LTV18
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv18;
+
+    /**
+     * 创角LTV19
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv19;
+
+    /**
+     * 创角LTV20
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv20;
+
+    /**
+     * 创角LTV21
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv21;
+
+    /**
+     * 创角LTV22
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv22;
+
+    /**
+     * 创角LTV23
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv23;
+
+    /**
+     * 创角LTV24
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv24;
+
+    /**
+     * 创角LTV25
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv25;
+
+    /**
+     * 创角LTV26
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv26;
+
+    /**
+     * 创角LTV27
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv27;
+
+    /**
+     * 创角LTV28
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv28;
+
+    /**
+     * 创角LTV29
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv29;
+
+    /**
+     * 创角LTV30
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv30;
+
+    /**
+     * 创角LTV31
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv31;
+
+    /**
+     * 创角LTV32
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv32;
+
+    /**
+     * 创角LTV33
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv33;
+
+    /**
+     * 创角LTV34
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv34;
+
+    /**
+     * 创角LTV35
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv35;
+
+    /**
+     * 创角LTV36
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv36;
+
+    /**
+     * 创角LTV37
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv37;
+
+    /**
+     * 创角LTV38
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv38;
+
+    /**
+     * 创角LTV39
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv39;
+
+    /**
+     * 创角LTV40
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv40;
+
+    /**
+     * 创角LTV41
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv41;
+
+    /**
+     * 创角LTV42
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv42;
+
+    /**
+     * 创角LTV43
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv43;
+
+    /**
+     * 创角LTV44
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv44;
+
+    /**
+     * 创角LTV45
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv45;
+
+    /**
+     * 创角LTV46
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv46;
+
+    /**
+     * 创角LTV47
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv47;
+
+    /**
+     * 创角LTV48
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv48;
+
+    /**
+     * 创角LTV49
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv49;
+
+    /**
+     * 创角LTV50
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv50;
+
+    /**
+     * 创角LTV51
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv51;
+
+    /**
+     * 创角LTV52
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv52;
+
+    /**
+     * 创角LTV53
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv53;
+
+    /**
+     * 创角LTV54
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv54;
+
+    /**
+     * 创角LTV55
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv55;
+
+    /**
+     * 创角LTV56
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv56;
+
+    /**
+     * 创角LTV57
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv57;
+
+    /**
+     * 创角LTV58
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv58;
+
+    /**
+     * 创角LTV59
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv59;
+
+    /**
+     * 创角LTV60
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv60;
+
+    /**
+     * 创角LTV61
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv61;
+
+    /**
+     * 创角LTV62
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv62;
+
+    /**
+     * 创角LTV63
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv63;
+
+    /**
+     * 创角LTV64
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv64;
+
+    /**
+     * 创角LTV65
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv65;
+
+    /**
+     * 创角LTV66
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv66;
+
+    /**
+     * 创角LTV67
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv67;
+
+    /**
+     * 创角LTV68
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv68;
+
+    /**
+     * 创角LTV69
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv69;
+
+    /**
+     * 创角LTV70
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv70;
+
+    /**
+     * 创角LTV71
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv71;
+
+    /**
+     * 创角LTV72
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv72;
+
+    /**
+     * 创角LTV73
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv73;
+
+    /**
+     * 创角LTV74
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv74;
+
+    /**
+     * 创角LTV75
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv75;
+
+    /**
+     * 创角LTV76
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv76;
+
+    /**
+     * 创角LTV77
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv77;
+
+    /**
+     * 创角LTV78
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv78;
+
+    /**
+     * 创角LTV79
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv79;
+
+    /**
+     * 创角LTV80
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv80;
+
+    /**
+     * 创角LTV81
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv81;
+
+    /**
+     * 创角LTV82
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv82;
+
+    /**
+     * 创角LTV83
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv83;
+
+    /**
+     * 创角LTV84
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv84;
+
+    /**
+     * 创角LTV85
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv85;
+
+    /**
+     * 创角LTV86
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv86;
+
+    /**
+     * 创角LTV87
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv87;
+
+    /**
+     * 创角LTV88
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv88;
+
+    /**
+     * 创角LTV89
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv89;
+
+    /**
+     * 创角LTV90
+     */
+    @ApiModelProperty(value = "创角LTV1-90")
+    private BigDecimal roleLtv90;
+
+    /**
+     * 创角LTVm4
+     */
+    @ApiModelProperty(value = "创角LTVm4-m11")
+    private BigDecimal roleLtvM4;
+
+    /**
+     * 创角LTVm5
+     */
+    @ApiModelProperty(value = "创角LTVm4-m11")
+    private BigDecimal roleLtvM5;
+
+    /**
+     * 创角LTVm6
+     */
+    @ApiModelProperty(value = "创角LTVm4-m11")
+    private BigDecimal roleLtvM6;
+
+    /**
+     * 创角LTVm7
+     */
+    @ApiModelProperty(value = "创角LTVm4-m11")
+    private BigDecimal roleLtvM7;
+
+    /**
+     * 创角LTVm8
+     */
+    @ApiModelProperty(value = "创角LTVm4-m11")
+    private BigDecimal roleLtvM8;
+
+    /**
+     * 创角LTVm9
+     */
+    @ApiModelProperty(value = "创角LTVm4-m11")
+    private BigDecimal roleLtvM9;
+
+    /**
+     * 创角LTVm10
+     */
+    @ApiModelProperty(value = "创角LTVm4-m11")
+    private BigDecimal roleLtvM10;
+
+    /**
+     * 创角LTVm11
+     */
+    @ApiModelProperty(value = "创角LTVm4-m11")
+    private BigDecimal roleLtvM11;
+
+    /**
+     * 创角LTVy1
+     */
+    @ApiModelProperty(value = "创角LTVy1")
+    private BigDecimal roleLtvY1;
+
+    /**
+     * 创角LTVtotal
+     */
+    @ApiModelProperty(value = "创角LTVtotal")
+    private BigDecimal roleLtvTotal;
+
+    /**
+     * 游戏,消耗时间的第1天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da1;
+
+    /**
+     * 游戏,消耗时间的第2天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da2;
+
+    /**
+     * 游戏,消耗时间的第3天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da3;
+
+    /**
+     * 游戏,消耗时间的第4天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da4;
+
+    /**
+     * 游戏,消耗时间的第5天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da5;
+
+    /**
+     * 游戏,消耗时间的第6天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da6;
+
+    /**
+     * 游戏,消耗时间的第7天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da7;
+
+    /**
+     * 游戏,消耗时间的第8天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da8;
+
+    /**
+     * 游戏,消耗时间的第9天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da9;
+
+    /**
+     * 游戏,消耗时间的第10天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da10;
+
+    /**
+     * 游戏,消耗时间的第11天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da11;
+
+    /**
+     * 游戏,消耗时间的第12天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da12;
+
+    /**
+     * 游戏,消耗时间的第13天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da13;
+
+    /**
+     * 游戏,消耗时间的第14天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da14;
+
+    /**
+     * 游戏,消耗时间的第15天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da15;
+
+    /**
+     * 游戏,消耗时间的第16天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da16;
+
+    /**
+     * 游戏,消耗时间的第17天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da17;
+
+    /**
+     * 游戏,消耗时间的第18天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da18;
+
+    /**
+     * 游戏,消耗时间的第19天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da19;
+
+    /**
+     * 游戏,消耗时间的第20天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da20;
+
+    /**
+     * 游戏,消耗时间的第21天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da21;
+
+    /**
+     * 游戏,消耗时间的第22天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da22;
+
+    /**
+     * 游戏,消耗时间的第23天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da23;
+
+    /**
+     * 游戏,消耗时间的第24天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da24;
+
+    /**
+     * 游戏,消耗时间的第25天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da25;
+
+    /**
+     * 游戏,消耗时间的第26天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da26;
+
+    /**
+     * 游戏,消耗时间的第27天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da27;
+
+    /**
+     * 游戏,消耗时间的第28天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da28;
+
+    /**
+     * 游戏,消耗时间的第29天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da29;
+
+    /**
+     * 游戏,消耗时间的第30天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da30;
+
+    /**
+     * 游戏,消耗时间的第31天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da31;
+
+    /**
+     * 游戏,消耗时间的第32天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da32;
+
+    /**
+     * 游戏,消耗时间的第33天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da33;
+
+    /**
+     * 游戏,消耗时间的第34天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da34;
+
+    /**
+     * 游戏,消耗时间的第35天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da35;
+
+    /**
+     * 游戏,消耗时间的第36天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da36;
+
+    /**
+     * 游戏,消耗时间的第37天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da37;
+
+    /**
+     * 游戏,消耗时间的第38天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da38;
+
+    /**
+     * 游戏,消耗时间的第39天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da39;
+
+    /**
+     * 游戏,消耗时间的第40天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da40;
+
+    /**
+     * 游戏,消耗时间的第41天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da41;
+
+    /**
+     * 游戏,消耗时间的第42天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da42;
+
+    /**
+     * 游戏,消耗时间的第43天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da43;
+
+    /**
+     * 游戏,消耗时间的第44天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da44;
+
+    /**
+     * 游戏,消耗时间的第45天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da45;
+
+    /**
+     * 游戏,消耗时间的第46天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da46;
+
+    /**
+     * 游戏,消耗时间的第47天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da47;
+
+    /**
+     * 游戏,消耗时间的第48天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da48;
+
+    /**
+     * 游戏,消耗时间的第49天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da49;
+
+    /**
+     * 游戏,消耗时间的第50天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da50;
+
+    /**
+     * 游戏,消耗时间的第51天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da51;
+
+    /**
+     * 游戏,消耗时间的第52天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da52;
+
+    /**
+     * 游戏,消耗时间的第53天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da53;
+
+    /**
+     * 游戏,消耗时间的第54天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da54;
+
+    /**
+     * 游戏,消耗时间的第55天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da55;
+
+    /**
+     * 游戏,消耗时间的第56天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da56;
+
+    /**
+     * 游戏,消耗时间的第57天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da57;
+
+    /**
+     * 游戏,消耗时间的第58天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da58;
+
+    /**
+     * 游戏,消耗时间的第59天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da59;
+
+    /**
+     * 游戏,消耗时间的第60新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da60;
+
+    /**
+     * 游戏,消耗时间的第61天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da61;
+
+    /**
+     * 游戏,消耗时间的第62天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da62;
+
+    /**
+     * 游戏,消耗时间的第63天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da63;
+
+    /**
+     * 游戏,消耗时间的第64天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da64;
+
+    /**
+     * 游戏,消耗时间的第65天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da65;
+
+    /**
+     * 游戏,消耗时间的第66天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da66;
+
+    /**
+     * 游戏,消耗时间的第67天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da67;
+
+    /**
+     * 游戏,消耗时间的第68天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da68;
+
+    /**
+     * 游戏,消耗时间的第69天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da69;
+
+    /**
+     * 游戏,消耗时间的第70天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da70;
+
+    /**
+     * 游戏,消耗时间的第71天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da71;
+
+    /**
+     * 游戏,消耗时间的第72天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da72;
+
+    /**
+     * 游戏,消耗时间的第73天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da73;
+
+    /**
+     * 游戏,消耗时间的第74天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da74;
+
+    /**
+     * 游戏,消耗时间的第75天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da75;
+
+    /**
+     * 游戏,消耗时间的第76天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da76;
+
+    /**
+     * 游戏,消耗时间的第77天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da77;
+
+    /**
+     * 游戏,消耗时间的第78天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da78;
+
+    /**
+     * 游戏,消耗时间的第79天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da79;
+
+    /**
+     * 游戏,消耗时间的第80天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da80;
+
+    /**
+     * 游戏,消耗时间的第81天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da81;
+
+    /**
+     * 游戏,消耗时间的第82天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da82;
+
+    /**
+     * 游戏,消耗时间的第83天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da83;
+
+    /**
+     * 游戏,消耗时间的第84天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da84;
+
+    /**
+     * 游戏,消耗时间的第85天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da85;
+
+    /**
+     * 游戏,消耗时间的第86天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da86;
+
+    /**
+     * 游戏,消耗时间的第87天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da87;
+
+    /**
+     * 游戏,消耗时间的第88天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da88;
+
+    /**
+     * 游戏,消耗时间的第89天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da89;
+
+    /**
+     * 游戏,消耗时间的第90天新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1-90天新用户充值")
+    private BigDecimal da90;
+
+    /**
+     * 游戏,消耗时间的第4月新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第4-11月新用户充值")
+    private BigDecimal m4;
+
+    /**
+     * 游戏,消耗时间的第5月新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第4-11月新用户充值")
+    private BigDecimal m5;
+
+    /**
+     * 游戏,消耗时间的第6月新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第4-11月新用户充值")
+    private BigDecimal m6;
+
+    /**
+     * 游戏,消耗时间的第7月新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第4-11月新用户充值")
+    private BigDecimal m7;
+
+    /**
+     * 游戏,消耗时间的第8月新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第4-11月新用户充值")
+    private BigDecimal m8;
+
+    /**
+     * 游戏,消耗时间的第9月新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第4-11月新用户充值")
+    private BigDecimal m9;
+
+    /**
+     * 游戏,消耗时间的第10月新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第4-11月新用户充值")
+    private BigDecimal m10;
+
+    /**
+     * 游戏,消耗时间的第11月新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第4-11月新用户充值")
+    private BigDecimal m11;
+
+    /**
+     * 游戏,消耗时间的第1年新用户充值
+     */
+    @ApiModelProperty(value = "游戏,消耗时间的第1年新用户充值")
+    private BigDecimal y1;
+
+    /**
+     * 至今充值金额
+     */
+    @ApiModelProperty(value = "至今充值金额")
+    private BigDecimal total;
+
+    /**
+     * 注册人数
+     */
+    @ApiModelProperty(value = "注册人数ltv")
+    private Integer regUserCnt;
+
+    /**
+     * 首日创角人数
+     */
+    @ApiModelProperty(value = "首日创角人数ltv")
+    private Integer firstRoleNumLtv;
+
+
+}

+ 9 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/PitcherDataDayTotalVO.java

@@ -0,0 +1,9 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+/**
+ * @author tianhua
+ * @time 2023/8/15
+ * @Description 投手每日数据总计实体
+ **/
+public class PitcherDataDayTotalVO {
+}

+ 9 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/PitcherDataDayVO.java

@@ -0,0 +1,9 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+/**
+ * @author tianhua
+ * @time 2023/8/15
+ * @Description 投手每日数据实体
+ **/
+public class PitcherDataDayVO {
+}

+ 9 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/PitcherDataTotalSumVO.java

@@ -0,0 +1,9 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+/**
+ * @author tianhua
+ * @time 2023/8/15
+ * @Description 投手总数据总计实体
+ **/
+public class PitcherDataTotalSumVO {
+}

+ 9 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/PitcherDataTotalVO.java

@@ -0,0 +1,9 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+/**
+ * @author tianhua
+ * @time 2023/8/15
+ * @Description 投手总数据实体
+ **/
+public class PitcherDataTotalVO {
+}

+ 9 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/PitcherGameDataDayTotalVO.java

@@ -0,0 +1,9 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+/**
+ * @author tianhua
+ * @time 2023/8/15
+ * @Description 投手游戏每日数据总计实体
+ **/
+public class PitcherGameDataDayTotalVO {
+}

+ 9 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/PitcherGameDataDayVO.java

@@ -0,0 +1,9 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+/**
+ * @author tianhua
+ * @time 2023/8/15
+ * @Description 投手游戏每日数据实体
+ **/
+public class PitcherGameDataDayVO {
+}

+ 9 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/PitcherGameDataTotalSumVO.java

@@ -0,0 +1,9 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+/**
+ * @author tianhua
+ * @time 2023/8/15
+ * @Description 投手游戏总数据总计实体
+ **/
+public class PitcherGameDataTotalSumVO {
+}

+ 9 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/PitcherGameDataTotalVO.java

@@ -0,0 +1,9 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+/**
+ * @author tianhua
+ * @time 2023/8/15
+ * @Description 投手游戏总数据实体
+ **/
+public class PitcherGameDataTotalVO {
+}

+ 886 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/TencentPromotionDayTotalVO.java

@@ -0,0 +1,886 @@
+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;
+
+/**
+ * @author tianhua
+ * @time 2023/7/27
+ * @Description 广告监控数据总计前端显示对象(腾讯广告)
+ **/
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class TencentPromotionDayTotalVO {
+
+    /**
+     * 今日消耗
+     */
+    @ApiModelProperty(value = "今日消耗")
+    private BigDecimal todayCost;
+
+    /**
+     * 广告总消耗
+     */
+    @ApiModelProperty(value = "广告总消耗")
+    private BigDecimal promotionTotalCost;
+
+    /**
+     * 曝光量
+     */
+    @ApiModelProperty(value = "曝光量")
+    private Long showCount;
+
+    /**
+     * 千次曝光成本
+     */
+    @ApiModelProperty(value = "千次曝光成本")
+    private BigDecimal thousandDisplayPrice;
+
+    /**
+     * 点击量
+     */
+    @ApiModelProperty(value = "点击量")
+    private Long clickCount;
+
+    /**
+     * 点击均价
+     */
+    @ApiModelProperty(value = "点击均价")
+    private BigDecimal avgClickCost;
+
+    /**
+     * 点击率
+     */
+    @ApiModelProperty(value = "点击率")
+    private BigDecimal ctr;
+
+    /**
+     * 转化目标量
+     */
+    @ApiModelProperty(value = "转化目标量")
+    private Long convertCount;
+
+    /**
+     * 转化目标成本
+     */
+    @ApiModelProperty(value = "转化目标成本")
+    private BigDecimal convertCost;
+
+    /**
+     * 目标转化率
+     */
+    @ApiModelProperty(value = "目标转化率")
+    private BigDecimal convertRate;
+
+    /**
+     * 新增用户数
+     */
+    @ApiModelProperty(value = "新增用户数")
+    private Long regNum;
+
+    /**
+     * 广告总注册人数
+     */
+    @ApiModelProperty(value = "广告总注册人数")
+    private Long regTotalNum;
+
+    /**
+     * 总创角人数
+     */
+    @ApiModelProperty(value = "总创角人数")
+    private Long roleTotalNum;
+
+    /**
+     * 首日创角人数
+     */
+    @ApiModelProperty(value = "首日创角人数")
+    private Long firstRoleNum;
+
+    /**
+     * 新用户累计创角人数
+     */
+    @ApiModelProperty(value = "新用户累计创角人数")
+    private Long newUserTotalRoleNum;
+
+    /**
+     * 注册成本
+     */
+    @ApiModelProperty(value = "注册成本")
+    private BigDecimal regCost;
+
+    /**
+     * 总注册成本
+     */
+    @ApiModelProperty(value = "总注册成本")
+    private BigDecimal regTotalCost;
+
+    /**
+     * 首日创角成本
+     */
+    @ApiModelProperty(value = "首日创角成本")
+    private BigDecimal firstRoleCost;
+
+    /**
+     * 新用户创角成本
+     */
+    @ApiModelProperty(value = "新用户创角成本")
+    private BigDecimal newUserTotalRoleCost;
+
+    /**
+     * 总创角成本
+     */
+    @ApiModelProperty(value = "总创角成本")
+    private BigDecimal roleTotalCost;
+
+    /**
+     * 首日创角率
+     */
+    @ApiModelProperty(value = "首日创角率")
+    private BigDecimal firstRoleRate;
+
+    /**
+     * 新用户创角率
+     */
+    @ApiModelProperty(value = "新用户创角率")
+    private BigDecimal newUserTotalRoleRate;
+
+    /**
+     * 总创角率
+     */
+    @ApiModelProperty(value = "总创角率")
+    private BigDecimal roleTotalRate;
+
+    /**
+     * 新增付费次数
+     */
+    @ApiModelProperty(value = "新增付费次数")
+    private Long firstNewUserAmountCount;
+
+    /**
+     * 新增付费人数
+     */
+    @ApiModelProperty(value = "新增付费人数")
+    private Long firstNewUserAmountNum;
+
+    /**
+     * 新增付费金额
+     */
+    @ApiModelProperty(value = "新增付费金额")
+    private BigDecimal firstNewUserAmount;
+
+    /**
+     * 至今付费次数
+     */
+    @ApiModelProperty(value = "至今付费次数")
+    private Long newUserTotalAmountCount;
+
+    /**
+     * 至今付费人数
+     */
+    @ApiModelProperty(value = "至今付费人数")
+    private Long newUserTotalAmountNum;
+
+    /**
+     * 至今付费金额
+     */
+    @ApiModelProperty(value = "至今付费金额")
+    private BigDecimal newUserTotalAmount;
+
+    /**
+     * 总充值次数
+     */
+    @ApiModelProperty(value = "总充值次数")
+    private Long totalAmountCount;
+
+    /**
+     * 总充值人数
+     */
+    @ApiModelProperty(value = "总充值人数")
+    private Long totalAmountNum;
+
+    /**
+     * 总充值金额
+     */
+    @ApiModelProperty(value = "总充值金额")
+    private BigDecimal totalAmount;
+
+    /**
+     * 首日ROI
+     */
+    @ApiModelProperty(value = "首日ROI")
+    private BigDecimal firstRoi;
+
+    /**
+     * 新用户24小时充值金额
+     */
+    @ApiModelProperty(value = "新用户24小时充值金额")
+    private BigDecimal twentyFourHoursAmount;
+
+    /**
+     * 新用户24小时ROI
+     */
+    @ApiModelProperty(value = "新用户24小时ROI")
+    private BigDecimal twentyFourHoursRoi;
+
+    /**
+     * 总ROI
+     */
+    @ApiModelProperty(value = "总ROI")
+    private BigDecimal totalRoi;
+
+    /**
+     * 广告总ROI
+     */
+    @ApiModelProperty(value = "广告总ROI")
+    private BigDecimal promotionTotalRoi;
+
+    /**
+     * 新增付费成本
+     */
+    @ApiModelProperty(value = "新增付费成本")
+    private BigDecimal firstNewUserRechargeCost;
+
+    /**
+     * 至今付费成本
+     */
+    @ApiModelProperty(value = "至今付费成本")
+    private BigDecimal newUserTotalRechargeCost;
+
+    /**
+     * 广告总付费成本
+     */
+    @ApiModelProperty(value = "广告总付费成本")
+    private BigDecimal totalRechargeCost;
+
+    /**
+     * 新增付费次数成本
+     */
+    @ApiModelProperty(value = "新增付费次数成本 = 消耗 / 新增付费次数")
+    private BigDecimal firstNewUserAmountCountCost;
+
+    /**
+     * 至今付费次数成本
+     */
+    @ApiModelProperty(value = "至今付费次数成本 = 消耗 / 至今付费数")
+    private BigDecimal newUserTotalAmountCountCost;
+
+    /**
+     * 总充值次数成本
+     */
+    @ApiModelProperty(value = "总充值次数成本 = 消耗 / 总充值次数")
+    private BigDecimal totalAmountCountCost;
+
+    /**
+     * 新增付费ARPPU
+     */
+    @ApiModelProperty(value = "新增付费ARPPU")
+    private BigDecimal firstNewUserArppu;
+
+    /**
+     * 至今付费ARPPU
+     */
+    @ApiModelProperty(value = "至今付费ARPPU")
+    private BigDecimal newUserTotalAmountArppu;
+
+    /**
+     * 新增付费100+用户数
+     */
+    @ApiModelProperty(value = "新增付费100+用户数")
+    private Long firstNewUserHundredUserNum;
+
+    /**
+     * 新增付费200+用户数
+     */
+    @ApiModelProperty(value = "新增付费200+用户数")
+    private Long firstNewUserTwoHundredUserNum;
+
+    /**
+     * 至今付费100+用户数
+     */
+    @ApiModelProperty(value = "至今付费100+用户数")
+    private Long newUserTotalHundredUserNum;
+
+    /**
+     * 首充50~100元用户数
+     */
+    @ApiModelProperty(value = "首充50~100元用户数")
+    private Long firstRechargeFiftyHundredNum;
+
+    /**
+     * 新增付费100+用户付费成本
+     */
+    @ApiModelProperty(value = "新增付费100+用户付费成本")
+    private BigDecimal firstNewUserHundredUserCost;
+
+    /**
+     * 新增付费200+用户付费成本
+     */
+    @ApiModelProperty(value = "新增付费200+用户付费成本")
+    private BigDecimal firstNewUserTwoHundredUserCost;
+
+    /**
+     * 至今付费100+用户付费成本
+     */
+    @ApiModelProperty(value = "至今付费100+用户付费成本")
+    private BigDecimal newUserTotalHundredUserCost;
+
+    /**
+     * 首充50~100元占比
+     */
+    @ApiModelProperty(value = "首充50~100元占比")
+    private BigDecimal firstRechargeFiftyHundredRate;
+
+    /**
+     * 首日IOS付费次数
+     */
+    @ApiModelProperty(value = "首日IOS付费次数")
+    private Long firstIosAmountCount;
+
+    /**
+     * 首日IOS付费人数
+     */
+    @ApiModelProperty(value = "首日IOS付费人数")
+    private Long firstIosAmountNum;
+
+    /**
+     * 首日IOS付费金额
+     */
+    @ApiModelProperty(value = "首日IOS付费金额")
+    private BigDecimal firstIosAmount;
+
+    /**
+     * 首日Android付费次数
+     */
+    @ApiModelProperty(value = "首日Android付费次数")
+    private Long firstAndroidAmountCount;
+
+    /**
+     * 首日Android付费人数
+     */
+    @ApiModelProperty(value = "首日Android付费人数")
+    private Long firstAndroidAmountNum;
+
+    /**
+     * 首日Android付费金额
+     */
+    @ApiModelProperty(value = "首日Android付费金额")
+    private BigDecimal firstAndroidAmount;
+
+    /**
+     * 首日IOS付费人数占比
+     */
+    @ApiModelProperty(value = "首日IOS付费人数占比")
+    private BigDecimal firstIosAmountNumRate;
+
+    /**
+     * 首日IOS付费金额占比
+     */
+    @ApiModelProperty(value = "首日IOS付费金额占比")
+    private BigDecimal firstIosAmountRate;
+
+    /**
+     * 首日IOS付费ROI
+     */
+    @ApiModelProperty(value = "首日IOS付费ROI")
+    private BigDecimal firstIosAmountRoi;
+
+    /**
+     * 首日Android付费人数占比
+     */
+    @ApiModelProperty(value = "首日Android付费人数占比")
+    private BigDecimal firstAndroidAmountNumRate;
+
+    /**
+     * 首日Android付费金额占比
+     */
+    @ApiModelProperty(value = "首日Android付费金额占比")
+    private BigDecimal firstAndroidAmountRate;
+
+    /**
+     * 首日Android付费ROI
+     */
+    @ApiModelProperty(value = "首日Android付费ROI")
+    private BigDecimal firstAndroidAmountRoi;
+
+    /**
+     * 首日付费率
+     */
+    @ApiModelProperty(value = "首日付费率")
+    private BigDecimal firstAmountRate;
+
+    /**
+     * 新增客单价
+     */
+    @ApiModelProperty(value = "新增客单价")
+    private BigDecimal firstNewUserAvgPrice;
+
+    /**
+     * 至今客单价
+     */
+    @ApiModelProperty(value = "至今客单价")
+    private BigDecimal newUserTotalAvgPrice;
+
+    /**
+     * 计划ID,消耗时间的第1天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第1天新用户充值(不显示)")
+    private BigDecimal d1;
+
+    /**
+     * 计划ID,消耗时间的第2天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第2天新用户充值(不显示)")
+    private BigDecimal d2;
+
+    /**
+     * 计划ID,消耗时间的第3天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第3天新用户充值(不显示)")
+    private BigDecimal d3;
+
+    /**
+     * 计划ID,消耗时间的第4天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第4天新用户充值(不显示)")
+    private BigDecimal d4;
+
+    /**
+     * 计划ID,消耗时间的第5天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第5天新用户充值(不显示)")
+    private BigDecimal d5;
+
+    /**
+     * 计划ID,消耗时间的第6天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第6天新用户充值(不显示)")
+    private BigDecimal d6;
+
+    /**
+     * 计划ID,消耗时间的第7天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第7天新用户充值(不显示)")
+    private BigDecimal d7;
+
+    /**
+     * 计划ID,消耗时间的第8天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第8天新用户充值(不显示)")
+    private BigDecimal d8;
+
+    /**
+     * 计划ID,消耗时间的第9天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第9天新用户充值(不显示)")
+    private BigDecimal d9;
+
+    /**
+     * 计划ID,消耗时间的第10天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第10天新用户充值(不显示)")
+    private BigDecimal d10;
+
+    /**
+     * 计划ID,消耗时间的第11天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第11天新用户充值(不显示)")
+    private BigDecimal d11;
+
+    /**
+     * 计划ID,消耗时间的第12天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第12天新用户充值(不显示)")
+    private BigDecimal d12;
+
+    /**
+     * 计划ID,消耗时间的第13天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第13天新用户充值(不显示)")
+    private BigDecimal d13;
+
+    /**
+     * 计划ID,消耗时间的第14天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第14天新用户充值(不显示)")
+    private BigDecimal d14;
+
+    /**
+     * 计划ID,消耗时间的第15天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第15天新用户充值(不显示)")
+    private BigDecimal d15;
+
+    /**
+     * 计划ID,消耗时间的第16天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第16天新用户充值(不显示)")
+    private BigDecimal d16;
+
+    /**
+     * 计划ID,消耗时间的第17天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第17天新用户充值(不显示)")
+    private BigDecimal d17;
+
+    /**
+     * 计划ID,消耗时间的第18天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第18天新用户充值(不显示)")
+    private BigDecimal d18;
+
+    /**
+     * 计划ID,消耗时间的第19天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第19天新用户充值(不显示)")
+    private BigDecimal d19;
+
+    /**
+     * 计划ID,消耗时间的第20天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第20天新用户充值(不显示)")
+    private BigDecimal d20;
+
+    /**
+     * 计划ID,消耗时间的第21天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第21天新用户充值(不显示)")
+    private BigDecimal d21;
+
+    /**
+     * 计划ID,消耗时间的第22天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第22天新用户充值(不显示)")
+    private BigDecimal d22;
+
+    /**
+     * 计划ID,消耗时间的第23天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第23天新用户充值(不显示)")
+    private BigDecimal d23;
+
+    /**
+     * 计划ID,消耗时间的第24天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第24天新用户充值(不显示)")
+    private BigDecimal d24;
+
+    /**
+     * 计划ID,消耗时间的第25天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第25天新用户充值(不显示)")
+    private BigDecimal d25;
+
+    /**
+     * 计划ID,消耗时间的第26天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第26天新用户充值(不显示)")
+    private BigDecimal d26;
+
+    /**
+     * 计划ID,消耗时间的第27天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第27天新用户充值(不显示)")
+    private BigDecimal d27;
+
+    /**
+     * 计划ID,消耗时间的第28天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第28天新用户充值(不显示)")
+    private BigDecimal d28;
+
+    /**
+     * 计划ID,消耗时间的第29天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第29天新用户充值(不显示)")
+    private BigDecimal d29;
+
+    /**
+     * 计划ID,消耗时间的第30天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第30天新用户充值(不显示)")
+    private BigDecimal d30;
+
+    /**
+     * 付费趋势第1天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第1天总:金额/人数/增/回/倍(不显示)")
+    private String da1;
+
+    /**
+     * 付费趋势第2天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第2天总:金额/人数/增/回/倍(不显示)")
+    private String da2;
+
+    /**
+     * 付费趋势第3天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第3天总:金额/人数/增/回/倍(不显示)")
+    private String da3;
+
+    /**
+     * 付费趋势第4天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第4天总:金额/人数/增/回/倍(不显示)")
+    private String da4;
+
+    /**
+     * 付费趋势第5天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第5天总:金额/人数/增/回/倍(不显示)")
+    private String da5;
+
+    /**
+     * 付费趋势第6天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第6天总:金额/人数/增/回/倍(不显示)")
+    private String da6;
+
+    /**
+     * 付费趋势第7天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第7天总:金额/人数/增/回/倍(不显示)")
+    private String da7;
+
+    /**
+     * 付费趋势第8天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第8天总:金额/人数/增/回/倍(不显示)")
+    private String da8;
+
+    /**
+     * 付费趋势第9天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第9天总:金额/人数/增/回/倍(不显示)")
+    private String da9;
+
+    /**
+     * 付费趋势第10天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第10天总:金额/人数/增/回/倍(不显示)")
+    private String da10;
+
+    /**
+     * 付费趋势第11天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第11天总:金额/人数/增/回/倍(不显示)")
+    private String da11;
+
+    /**
+     * 付费趋势第12天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第12天总:金额/人数/增/回/倍(不显示)")
+    private String da12;
+
+    /**
+     * 付费趋势第13天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第13天总:金额/人数/增/回/倍(不显示)")
+    private String da13;
+
+    /**
+     * 付费趋势第14天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第14天总:金额/人数/增/回/倍(不显示)")
+    private String da14;
+
+    /**
+     * 付费趋势第15天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第15天总:金额/人数/增/回/倍(不显示)")
+    private String da15;
+
+    /**
+     * 付费趋势第16天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第16天总:金额/人数/增/回/倍(不显示)")
+    private String da16;
+
+    /**
+     * 付费趋势第17天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第17天总:金额/人数/增/回/倍(不显示)")
+    private String da17;
+
+    /**
+     * 付费趋势第18天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第18天总:金额/人数/增/回/倍(不显示)")
+    private String da18;
+
+    /**
+     * 付费趋势第19天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第19天总:金额/人数/增/回/倍(不显示)")
+    private String da19;
+
+    /**
+     * 付费趋势第20天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第20天总:金额/人数/增/回/倍(不显示)")
+    private String da20;
+
+    /**
+     * 付费趋势第21天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第21天总:金额/人数/增/回/倍(不显示)")
+    private String da21;
+
+    /**
+     * 付费趋势第22天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第22天总:金额/人数/增/回/倍(不显示)")
+    private String da22;
+
+    /**
+     * 付费趋势第23天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第23天总:金额/人数/增/回/倍(不显示)")
+    private String da23;
+
+    /**
+     * 付费趋势第24天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第24天总:金额/人数/增/回/倍(不显示)")
+    private String da24;
+
+    /**
+     * 付费趋势第25天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第25天总:金额/人数/增/回/倍(不显示)")
+    private String da25;
+
+    /**
+     * 付费趋势第26天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第26天总:金额/人数/增/回/倍(不显示)")
+    private String da26;
+
+    /**
+     * 付费趋势第27天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第27天总:金额/人数/增/回/倍(不显示)")
+    private String da27;
+
+    /**
+     * 付费趋势第28天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第28天总:金额/人数/增/回/倍(不显示)")
+    private String da28;
+
+    /**
+     * 付费趋势第29天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第29天总:金额/人数/增/回/倍(不显示)")
+    private String da29;
+
+    /**
+     * 付费趋势第30天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第30天总:金额/人数/增/回/倍(不显示)")
+    private String da30;
+
+    /**
+     * 次日数据
+     */
+    @ApiModelProperty(value = "次日:ROI/付费/倍数")
+    private PromotionRechargeTrendVO d2Trend;
+
+    /**
+     * 3日数据
+     */
+    @ApiModelProperty(value = "3日:ROI/付费/倍数")
+    private PromotionRechargeTrendVO d3Trend;
+
+    /**
+     * 7日数据
+     */
+    @ApiModelProperty(value = "7日:ROI/付费/倍数")
+    private PromotionRechargeTrendVO d7Trend;
+
+    /**
+     * 15日数据
+     */
+    @ApiModelProperty(value = "15日:ROI/付费/倍数")
+    private PromotionRechargeTrendVO d15Trend;
+
+    /**
+     * 注册人数 (应用下载广告数据-激活数)
+     */
+    @ApiModelProperty(value = "注册人数 (应用下载广告数据-激活数)")
+    private Long active;
+
+    /**
+     * 注册成本 (应用下载广告数据-激活成本)
+     */
+    @ApiModelProperty(value = "注册成本 (应用下载广告数据-激活成本)")
+    private BigDecimal activeCost;
+
+    /**
+     * 首日转化数 (转化数据-转化数)
+     */
+    @ApiModelProperty(value = "首日转化数 (转化数据-转化数)")
+    private Long firstConvertCount;
+
+    /**
+     * 首日转化成本 (转化数据-转化成本)
+     */
+    @ApiModelProperty(value = "首日转化成本 (转化数据-转化成本)")
+    private BigDecimal firstConvertCost;
+
+    /**
+     * 首次付费率 (应用下载广告数据-首次付费率)
+     */
+    @ApiModelProperty(value = "首次付费率 (应用下载广告数据-首次付费率)")
+    private BigDecimal firstActivePayRate;
+
+    /**
+     * 首日付费金额(当日付费金额-所选时间范围内的激活用户,激活当日在APP内的付费金额)
+     */
+    @ApiModelProperty(value = "首日付费金额(当日付费金额-所选时间范围内的激活用户,激活当日在APP内的付费金额)")
+    private BigDecimal firstAttributionGameInAppLtv1day;
+
+    /**
+     * 首日付费ROI (当日付费ROI)
+     */
+    @ApiModelProperty(value = "首日付费ROI (当日付费ROI)")
+    private BigDecimal firstAttributionGameInAppRoi1day;
+
+    /**
+     * 付费次数 (应用下载广告数据-付费次数)
+     */
+    @ApiModelProperty(value = "付费次数 (应用下载广告数据-付费次数)")
+    private Long gamePayCount;
+
+    /**
+     * 付费次数成本
+     */
+    @ApiModelProperty(value = "付费次数成本 = 消耗 / 付费次数")
+    private BigDecimal gamePayCountCost;
+
+    /**
+     * ltv1 (首日付费金额(attribution_game_in_app_ltv1day) / 注册人数)
+     */
+    @ApiModelProperty(value = "ltv1 (首日付费金额(attribution_game_in_app_ltv1day) / 注册人数)")
+    private BigDecimal ltvDay1;
+
+    /**
+     * 每日扣单数 (广告首日总订单数 - 应用下载广告数据-付费次数(game_pay_count))
+     */
+    @ApiModelProperty(value = "每日扣单数 (广告首日总订单数 - 应用下载广告数据-付费次数(game_pay_count))")
+    private Long subOrderNum;
+
+    /**
+     * 每日扣单金额  (广告首日总金额 - 当日付费金额-所选时间范围内的激活用户,激活当日在APP内的付费金额(attribution_game_in_app_ltv1day) )
+     */
+    @ApiModelProperty(value = "每日扣单金额  (广告首日总金额 - 当日付费金额-所选时间范围内的激活用户,激活当日在APP内的付费金额(attribution_game_in_app_ltv1day) )")
+    private BigDecimal subOrderAmount;
+
+}

+ 1062 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/TencentPromotionDayVO.java

@@ -0,0 +1,1062 @@
+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;
+import java.time.LocalDate;
+
+/**
+ * @author tianhua
+ * @time 2023/7/27
+ * @Description 广告监控数据前端显示实体对象(腾讯广告)
+ **/
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class TencentPromotionDayVO {
+
+    /**
+     * 时间
+     */
+    @ApiModelProperty(value = "时间")
+    private LocalDate dt;
+
+    /**
+     * 广告ID
+     */
+    @ApiModelProperty(value = "广告ID")
+    private String promotionId;
+
+    /**
+     * 广告名称
+     */
+    @ApiModelProperty(value = "广告名称")
+    private String promotionName;
+
+    /**
+     * 计划ID
+     */
+    @ApiModelProperty(value = "计划ID")
+    private String projectId;
+
+    /**
+     * 计划名称
+     */
+    @ApiModelProperty(value = "计划名称")
+    private String projectName;
+
+    /**
+     * 推广账号ID
+     */
+    @ApiModelProperty(value = "推广账号ID")
+    private Long accountId;
+
+    /**
+     * 推广账号名称
+     */
+    @ApiModelProperty(value = "推广账号名称")
+    private String accountName;
+
+    /**
+     * 投放媒体
+     */
+    @ApiModelProperty(value = "投放媒体")
+    private String accountType;
+
+    /**
+     * 投手ID
+     */
+    @ApiModelProperty(value = "投手ID")
+    private Long pitcherId;
+
+    /**
+     * 投手名称
+     */
+    @ApiModelProperty(value = "投手名称")
+    private String pitcherName;
+
+    /**
+     * 备注
+     */
+    @ApiModelProperty(value = "备注")
+    private String notes;
+
+    /**
+     * 服务商
+     */
+    @ApiModelProperty(value = "服务商")
+    private String service;
+
+    /**
+     * 余额
+     */
+    @ApiModelProperty(value = "余额")
+    private String balance;
+
+    /**
+     * 渠道ID
+     */
+    @ApiModelProperty(value = "渠道ID")
+    private Long agentId;
+
+    /**
+     * 渠道名称
+     */
+    @ApiModelProperty(value = "渠道名称")
+    private String agentName;
+
+    /**
+     * 渠道标识
+     */
+    @ApiModelProperty(value = "渠道标识")
+    private String agentKey;
+
+    /**
+     * cp名称
+     */
+    @ApiModelProperty(value = "cp名称")
+    private String cpName;
+
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty(value = "游戏ID")
+    private Long gameId;
+
+    /**
+     * 游戏名称
+     */
+    @ApiModelProperty(value = "游戏名称")
+    private String gameName;
+
+    /**
+     * 游戏应用类型
+     */
+    @ApiModelProperty(value = "游戏应用类型")
+    private Long classify;
+
+    /**
+     * 广告状态
+     */
+    @ApiModelProperty(value = "广告状态")
+    private String status;
+
+    /**
+     * 创意预览
+     */
+    @ApiModelProperty(value = "创意预览")
+    private String creativePreview;
+
+    /**
+     * 推广目标
+     */
+    @ApiModelProperty(value = "推广目标")
+    private String landingType;
+
+    /**
+     * 出价方式
+     */
+    @ApiModelProperty(value = "出价方式")
+    private String pricing;
+
+    /**
+     * 当前出价
+     */
+    @ApiModelProperty(value = "当前出价")
+    private String cpaBid;
+
+    /**
+     * 深度转化ROI系数
+     */
+    @ApiModelProperty(value = "深度转化ROI系数")
+    private String roiGoal;
+
+    /**
+     * 日预算
+     */
+    @ApiModelProperty(value = "日预算")
+    private String budget;
+
+    /**
+     * 投放时间
+     */
+    @ApiModelProperty(value = "投放时间")
+    private String scheduleTime;
+
+    /**
+     * 今日消耗
+     */
+    @ApiModelProperty(value = "今日消耗")
+    private BigDecimal todayCost;
+
+    /**
+     * 广告总消耗
+     */
+    @ApiModelProperty(value = "广告总消耗")
+    private BigDecimal promotionTotalCost;
+
+    /**
+     * 曝光量
+     */
+    @ApiModelProperty(value = "曝光量")
+    private Long showCount;
+
+    /**
+     * 千次曝光成本
+     */
+    @ApiModelProperty(value = "千次曝光成本")
+    private BigDecimal thousandDisplayPrice;
+
+    /**
+     * 点击量
+     */
+    @ApiModelProperty(value = "点击量")
+    private Long clickCount;
+
+    /**
+     * 点击均价
+     */
+    @ApiModelProperty(value = "点击均价")
+    private BigDecimal avgClickCost;
+
+    /**
+     * 点击率
+     */
+    @ApiModelProperty(value = "点击率")
+    private BigDecimal ctr;
+
+    /**
+     * 转化目标
+     */
+    @ApiModelProperty(value = "转化目标")
+    private String convertTarget;
+
+    /**
+     * 转化目标量
+     */
+    @ApiModelProperty(value = "转化目标量")
+    private Long convertCount;
+
+    /**
+     * 转化目标成本
+     */
+    @ApiModelProperty(value = "转化目标成本")
+    private BigDecimal convertCost;
+
+    /**
+     * 目标转化率
+     */
+    @ApiModelProperty(value = "目标转化率")
+    private BigDecimal convertRate;
+
+    /**
+     * 新增用户数
+     */
+    @ApiModelProperty(value = "新增用户数")
+    private Long regNum;
+
+    /**
+     * 广告总注册人数
+     */
+    @ApiModelProperty(value = "广告总注册人数")
+    private Long regTotalNum;
+
+    /**
+     * 总创角人数
+     */
+    @ApiModelProperty(value = "总创角人数")
+    private Long roleTotalNum;
+
+    /**
+     * 首日创角人数
+     */
+    @ApiModelProperty(value = "首日创角人数")
+    private Long firstRoleNum;
+
+    /**
+     * 新用户累计创角人数
+     */
+    @ApiModelProperty(value = "新用户累计创角人数")
+    private Long newUserTotalRoleNum;
+
+    /**
+     * 注册成本
+     */
+    @ApiModelProperty(value = "注册成本")
+    private BigDecimal regCost;
+
+    /**
+     * 总注册成本
+     */
+    @ApiModelProperty(value = "总注册成本")
+    private BigDecimal regTotalCost;
+
+    /**
+     * 首日创角成本
+     */
+    @ApiModelProperty(value = "首日创角成本")
+    private BigDecimal firstRoleCost;
+
+    /**
+     * 新用户创角成本
+     */
+    @ApiModelProperty(value = "新用户创角成本")
+    private BigDecimal newUserTotalRoleCost;
+
+    /**
+     * 总创角成本
+     */
+    @ApiModelProperty(value = "总创角成本")
+    private BigDecimal roleTotalCost;
+
+    /**
+     * 首日创角率
+     */
+    @ApiModelProperty(value = "首日创角率")
+    private BigDecimal firstRoleRate;
+
+    /**
+     * 新用户创角率
+     */
+    @ApiModelProperty(value = "新用户创角率")
+    private BigDecimal newUserTotalRoleRate;
+
+    /**
+     * 总创角率
+     */
+    @ApiModelProperty(value = "总创角率")
+    private BigDecimal roleTotalRate;
+
+    /**
+     * 新增付费次数
+     */
+    @ApiModelProperty(value = "新增付费次数")
+    private Long firstNewUserAmountCount;
+
+    /**
+     * 新增付费人数
+     */
+    @ApiModelProperty(value = "新增付费人数")
+    private Long firstNewUserAmountNum;
+
+    /**
+     * 新增付费金额
+     */
+    @ApiModelProperty(value = "新增付费金额")
+    private BigDecimal firstNewUserAmount;
+
+    /**
+     * 至今付费次数
+     */
+    @ApiModelProperty(value = "至今付费次数")
+    private Long newUserTotalAmountCount;
+
+    /**
+     * 至今付费人数
+     */
+    @ApiModelProperty(value = "至今付费人数")
+    private Long newUserTotalAmountNum;
+
+    /**
+     * 至今付费金额
+     */
+    @ApiModelProperty(value = "至今付费金额")
+    private BigDecimal newUserTotalAmount;
+
+    /**
+     * 总充值次数
+     */
+    @ApiModelProperty(value = "总充值次数")
+    private Long totalAmountCount;
+
+    /**
+     * 总充值人数
+     */
+    @ApiModelProperty(value = "总充值人数")
+    private Long totalAmountNum;
+
+    /**
+     * 总充值金额
+     */
+    @ApiModelProperty(value = "总充值金额")
+    private BigDecimal totalAmount;
+
+    /**
+     * 首日ROI
+     */
+    @ApiModelProperty(value = "首日ROI")
+    private BigDecimal firstRoi;
+
+    /**
+     * 新用户24小时充值金额
+     */
+    @ApiModelProperty(value = "新用户24小时充值金额")
+    private BigDecimal twentyFourHoursAmount;
+
+    /**
+     * 新用户24小时ROI
+     */
+    @ApiModelProperty(value = "新用户24小时ROI")
+    private BigDecimal twentyFourHoursRoi;
+
+    /**
+     * 总ROI
+     */
+    @ApiModelProperty(value = "总ROI")
+    private BigDecimal totalRoi;
+
+    /**
+     * 广告总ROI
+     */
+    @ApiModelProperty(value = "广告总ROI")
+    private BigDecimal promotionTotalRoi;
+
+    /**
+     * 新增付费成本
+     */
+    @ApiModelProperty(value = "新增付费成本")
+    private BigDecimal firstNewUserRechargeCost;
+
+    /**
+     * 至今付费成本
+     */
+    @ApiModelProperty(value = "至今付费成本")
+    private BigDecimal newUserTotalRechargeCost;
+
+    /**
+     * 广告总付费成本
+     */
+    @ApiModelProperty(value = "广告总付费成本")
+    private BigDecimal totalRechargeCost;
+
+    /**
+     * 新增付费次数成本
+     */
+    @ApiModelProperty(value = "新增付费次数成本 = 消耗 / 新增付费次数")
+    private BigDecimal firstNewUserAmountCountCost;
+
+    /**
+     * 至今付费次数成本
+     */
+    @ApiModelProperty(value = "至今付费次数成本 = 消耗 / 至今付费数")
+    private BigDecimal newUserTotalAmountCountCost;
+
+    /**
+     * 总充值次数成本
+     */
+    @ApiModelProperty(value = "总充值次数成本 = 消耗 / 总充值次数")
+    private BigDecimal totalAmountCountCost;
+
+    /**
+     * 新增付费ARPPU
+     */
+    @ApiModelProperty(value = "新增付费ARPPU")
+    private BigDecimal firstNewUserArppu;
+
+    /**
+     * 至今付费ARPPU
+     */
+    @ApiModelProperty(value = "至今付费ARPPU")
+    private BigDecimal newUserTotalAmountArppu;
+
+    /**
+     * 新增付费100+用户数
+     */
+    @ApiModelProperty(value = "新增付费100+用户数")
+    private Long firstNewUserHundredUserNum;
+
+    /**
+     * 新增付费200+用户数
+     */
+    @ApiModelProperty(value = "新增付费200+用户数")
+    private Long firstNewUserTwoHundredUserNum;
+
+    /**
+     * 至今付费100+用户数
+     */
+    @ApiModelProperty(value = "至今付费100+用户数")
+    private Long newUserTotalHundredUserNum;
+
+    /**
+     * 首充50~100元用户数
+     */
+    @ApiModelProperty(value = "首充50~100元用户数")
+    private Long firstRechargeFiftyHundredNum;
+
+    /**
+     * 新增付费100+用户付费成本
+     */
+    @ApiModelProperty(value = "新增付费100+用户付费成本")
+    private BigDecimal firstNewUserHundredUserCost;
+
+    /**
+     * 新增付费200+用户付费成本
+     */
+    @ApiModelProperty(value = "新增付费200+用户付费成本")
+    private BigDecimal firstNewUserTwoHundredUserCost;
+
+    /**
+     * 至今付费100+用户付费成本
+     */
+    @ApiModelProperty(value = "至今付费100+用户付费成本")
+    private BigDecimal newUserTotalHundredUserCost;
+
+    /**
+     * 首充50~100元占比
+     */
+    @ApiModelProperty(value = "首充50~100元占比")
+    private BigDecimal firstRechargeFiftyHundredRate;
+
+    /**
+     * 首日IOS付费次数
+     */
+    @ApiModelProperty(value = "首日IOS付费次数")
+    private Long firstIosAmountCount;
+
+    /**
+     * 首日IOS付费人数
+     */
+    @ApiModelProperty(value = "首日IOS付费人数")
+    private Long firstIosAmountNum;
+
+    /**
+     * 首日IOS付费金额
+     */
+    @ApiModelProperty(value = "首日IOS付费金额")
+    private BigDecimal firstIosAmount;
+
+    /**
+     * 首日Android付费次数
+     */
+    @ApiModelProperty(value = "首日Android付费次数")
+    private Long firstAndroidAmountCount;
+
+    /**
+     * 首日Android付费人数
+     */
+    @ApiModelProperty(value = "首日Android付费人数")
+    private Long firstAndroidAmountNum;
+
+    /**
+     * 首日Android付费金额
+     */
+    @ApiModelProperty(value = "首日Android付费金额")
+    private BigDecimal firstAndroidAmount;
+
+    /**
+     * 首日IOS付费人数占比
+     */
+    @ApiModelProperty(value = "首日IOS付费人数占比")
+    private BigDecimal firstIosAmountNumRate;
+
+    /**
+     * 首日IOS付费金额占比
+     */
+    @ApiModelProperty(value = "首日IOS付费金额占比")
+    private BigDecimal firstIosAmountRate;
+
+    /**
+     * 首日IOS付费ROI
+     */
+    @ApiModelProperty(value = "首日IOS付费ROI")
+    private BigDecimal firstIosAmountRoi;
+
+    /**
+     * 首日Android付费人数占比
+     */
+    @ApiModelProperty(value = "首日Android付费人数占比")
+    private BigDecimal firstAndroidAmountNumRate;
+
+    /**
+     * 首日Android付费金额占比
+     */
+    @ApiModelProperty(value = "首日Android付费金额占比")
+    private BigDecimal firstAndroidAmountRate;
+
+    /**
+     * 首日Android付费ROI
+     */
+    @ApiModelProperty(value = "首日Android付费ROI")
+    private BigDecimal firstAndroidAmountRoi;
+
+    /**
+     * 首日付费率
+     */
+    @ApiModelProperty(value = "首日付费率")
+    private BigDecimal firstAmountRate;
+
+    /**
+     * 新增客单价
+     */
+    @ApiModelProperty(value = "新增客单价")
+    private BigDecimal firstNewUserAvgPrice;
+
+    /**
+     * 至今客单价
+     */
+    @ApiModelProperty(value = "至今客单价")
+    private BigDecimal newUserTotalAvgPrice;
+
+    /**
+     * 计划ID,消耗时间的第1天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第1天新用户充值(不显示)")
+    private BigDecimal d1;
+
+    /**
+     * 计划ID,消耗时间的第2天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第2天新用户充值(不显示)")
+    private BigDecimal d2;
+
+    /**
+     * 计划ID,消耗时间的第3天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第3天新用户充值(不显示)")
+    private BigDecimal d3;
+
+    /**
+     * 计划ID,消耗时间的第4天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第4天新用户充值(不显示)")
+    private BigDecimal d4;
+
+    /**
+     * 计划ID,消耗时间的第5天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第5天新用户充值(不显示)")
+    private BigDecimal d5;
+
+    /**
+     * 计划ID,消耗时间的第6天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第6天新用户充值(不显示)")
+    private BigDecimal d6;
+
+    /**
+     * 计划ID,消耗时间的第7天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第7天新用户充值(不显示)")
+    private BigDecimal d7;
+
+    /**
+     * 计划ID,消耗时间的第8天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第8天新用户充值(不显示)")
+    private BigDecimal d8;
+
+    /**
+     * 计划ID,消耗时间的第9天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第9天新用户充值(不显示)")
+    private BigDecimal d9;
+
+    /**
+     * 计划ID,消耗时间的第10天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第10天新用户充值(不显示)")
+    private BigDecimal d10;
+
+    /**
+     * 计划ID,消耗时间的第11天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第11天新用户充值(不显示)")
+    private BigDecimal d11;
+
+    /**
+     * 计划ID,消耗时间的第12天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第12天新用户充值(不显示)")
+    private BigDecimal d12;
+
+    /**
+     * 计划ID,消耗时间的第13天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第13天新用户充值(不显示)")
+    private BigDecimal d13;
+
+    /**
+     * 计划ID,消耗时间的第14天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第14天新用户充值(不显示)")
+    private BigDecimal d14;
+
+    /**
+     * 计划ID,消耗时间的第15天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第15天新用户充值(不显示)")
+    private BigDecimal d15;
+
+    /**
+     * 计划ID,消耗时间的第16天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第16天新用户充值(不显示)")
+    private BigDecimal d16;
+
+    /**
+     * 计划ID,消耗时间的第17天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第17天新用户充值(不显示)")
+    private BigDecimal d17;
+
+    /**
+     * 计划ID,消耗时间的第18天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第18天新用户充值(不显示)")
+    private BigDecimal d18;
+
+    /**
+     * 计划ID,消耗时间的第19天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第19天新用户充值(不显示)")
+    private BigDecimal d19;
+
+    /**
+     * 计划ID,消耗时间的第20天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第20天新用户充值(不显示)")
+    private BigDecimal d20;
+
+    /**
+     * 计划ID,消耗时间的第21天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第21天新用户充值(不显示)")
+    private BigDecimal d21;
+
+    /**
+     * 计划ID,消耗时间的第22天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第22天新用户充值(不显示)")
+    private BigDecimal d22;
+
+    /**
+     * 计划ID,消耗时间的第23天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第23天新用户充值(不显示)")
+    private BigDecimal d23;
+
+    /**
+     * 计划ID,消耗时间的第24天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第24天新用户充值(不显示)")
+    private BigDecimal d24;
+
+    /**
+     * 计划ID,消耗时间的第25天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第25天新用户充值(不显示)")
+    private BigDecimal d25;
+
+    /**
+     * 计划ID,消耗时间的第26天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第26天新用户充值(不显示)")
+    private BigDecimal d26;
+
+    /**
+     * 计划ID,消耗时间的第27天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第27天新用户充值(不显示)")
+    private BigDecimal d27;
+
+    /**
+     * 计划ID,消耗时间的第28天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第28天新用户充值(不显示)")
+    private BigDecimal d28;
+
+    /**
+     * 计划ID,消耗时间的第29天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第29天新用户充值(不显示)")
+    private BigDecimal d29;
+
+    /**
+     * 计划ID,消耗时间的第30天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第30天新用户充值(不显示)")
+    private BigDecimal d30;
+
+    /**
+     * 付费趋势第1天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第1天总:金额/人数/增/回/倍(不显示)")
+    private String da1;
+
+    /**
+     * 付费趋势第2天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第2天总:金额/人数/增/回/倍(不显示)")
+    private String da2;
+
+    /**
+     * 付费趋势第3天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第3天总:金额/人数/增/回/倍(不显示)")
+    private String da3;
+
+    /**
+     * 付费趋势第4天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第4天总:金额/人数/增/回/倍(不显示)")
+    private String da4;
+
+    /**
+     * 付费趋势第5天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第5天总:金额/人数/增/回/倍(不显示)")
+    private String da5;
+
+    /**
+     * 付费趋势第6天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第6天总:金额/人数/增/回/倍(不显示)")
+    private String da6;
+
+    /**
+     * 付费趋势第7天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第7天总:金额/人数/增/回/倍(不显示)")
+    private String da7;
+
+    /**
+     * 付费趋势第8天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第8天总:金额/人数/增/回/倍(不显示)")
+    private String da8;
+
+    /**
+     * 付费趋势第9天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第9天总:金额/人数/增/回/倍(不显示)")
+    private String da9;
+
+    /**
+     * 付费趋势第10天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第10天总:金额/人数/增/回/倍(不显示)")
+    private String da10;
+
+    /**
+     * 付费趋势第11天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第11天总:金额/人数/增/回/倍(不显示)")
+    private String da11;
+
+    /**
+     * 付费趋势第12天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第12天总:金额/人数/增/回/倍(不显示)")
+    private String da12;
+
+    /**
+     * 付费趋势第13天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第13天总:金额/人数/增/回/倍(不显示)")
+    private String da13;
+
+    /**
+     * 付费趋势第14天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第14天总:金额/人数/增/回/倍(不显示)")
+    private String da14;
+
+    /**
+     * 付费趋势第15天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第15天总:金额/人数/增/回/倍(不显示)")
+    private String da15;
+
+    /**
+     * 付费趋势第16天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第16天总:金额/人数/增/回/倍(不显示)")
+    private String da16;
+
+    /**
+     * 付费趋势第17天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第17天总:金额/人数/增/回/倍(不显示)")
+    private String da17;
+
+    /**
+     * 付费趋势第18天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第18天总:金额/人数/增/回/倍(不显示)")
+    private String da18;
+
+    /**
+     * 付费趋势第19天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第19天总:金额/人数/增/回/倍(不显示)")
+    private String da19;
+
+    /**
+     * 付费趋势第20天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第20天总:金额/人数/增/回/倍(不显示)")
+    private String da20;
+
+    /**
+     * 付费趋势第21天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第21天总:金额/人数/增/回/倍(不显示)")
+    private String da21;
+
+    /**
+     * 付费趋势第22天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第22天总:金额/人数/增/回/倍(不显示)")
+    private String da22;
+
+    /**
+     * 付费趋势第23天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第23天总:金额/人数/增/回/倍(不显示)")
+    private String da23;
+
+    /**
+     * 付费趋势第24天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第24天总:金额/人数/增/回/倍(不显示)")
+    private String da24;
+
+    /**
+     * 付费趋势第25天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第25天总:金额/人数/增/回/倍(不显示)")
+    private String da25;
+
+    /**
+     * 付费趋势第26天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第26天总:金额/人数/增/回/倍(不显示)")
+    private String da26;
+
+    /**
+     * 付费趋势第27天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第27天总:金额/人数/增/回/倍(不显示)")
+    private String da27;
+
+    /**
+     * 付费趋势第28天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第28天总:金额/人数/增/回/倍(不显示)")
+    private String da28;
+
+    /**
+     * 付费趋势第29天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第29天总:金额/人数/增/回/倍(不显示)")
+    private String da29;
+
+    /**
+     * 付费趋势第30天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第30天总:金额/人数/增/回/倍(不显示)")
+    private String da30;
+
+    /**
+     * 次日数据
+     */
+    @ApiModelProperty(value = "次日:ROI/付费/倍数")
+    private PromotionRechargeTrendVO d2Trend;
+
+    /**
+     * 3日数据
+     */
+    @ApiModelProperty(value = "3日:ROI/付费/倍数")
+    private PromotionRechargeTrendVO d3Trend;
+
+    /**
+     * 7日数据
+     */
+    @ApiModelProperty(value = "7日:ROI/付费/倍数")
+    private PromotionRechargeTrendVO d7Trend;
+
+    /**
+     * 15日数据
+     */
+    @ApiModelProperty(value = "15日:ROI/付费/倍数")
+    private PromotionRechargeTrendVO d15Trend;
+
+
+    /**
+     * 注册人数 (应用下载广告数据-激活数)
+     */
+    @ApiModelProperty(value = "注册人数 (应用下载广告数据-激活数)")
+    private Long active;
+
+    /**
+     * 注册成本 (应用下载广告数据-激活成本)
+     */
+    @ApiModelProperty(value = "注册成本 (应用下载广告数据-激活成本)")
+    private BigDecimal activeCost;
+
+    /**
+     * 首日转化数 (转化数据-转化数)
+     */
+    @ApiModelProperty(value = "首日转化数 (转化数据-转化数)")
+    private Long firstConvertCount;
+
+    /**
+     * 首日转化成本 (转化数据-转化成本)
+     */
+    @ApiModelProperty(value = "首日转化成本 (转化数据-转化成本)")
+    private BigDecimal firstConvertCost;
+
+    /**
+     * 首次付费率 (应用下载广告数据-首次付费率)
+     */
+    @ApiModelProperty(value = "首次付费率 (应用下载广告数据-首次付费率)")
+    private BigDecimal firstActivePayRate;
+
+    /**
+     * 首日付费金额(当日付费金额-所选时间范围内的激活用户,激活当日在APP内的付费金额)
+     */
+    @ApiModelProperty(value = "首日付费金额(当日付费金额-所选时间范围内的激活用户,激活当日在APP内的付费金额)")
+    private BigDecimal firstAttributionGameInAppLtv1day;
+
+    /**
+     * 首日付费ROI (当日付费ROI)
+     */
+    @ApiModelProperty(value = "首日付费ROI (当日付费ROI)")
+    private BigDecimal firstAttributionGameInAppRoi1day;
+
+    /**
+     * 付费次数 (应用下载广告数据-付费次数)
+     */
+    @ApiModelProperty(value = "付费次数 (应用下载广告数据-付费次数)")
+    private Long gamePayCount;
+
+    /**
+     * 付费次数成本
+     */
+    @ApiModelProperty(value = "付费次数成本 = 消耗 / 付费次数")
+    private BigDecimal gamePayCountCost;
+
+    /**
+     * ltv1 (首日付费金额(attribution_game_in_app_ltv1day) / 注册人数)
+     */
+    @ApiModelProperty(value = "ltv1 (首日付费金额(attribution_game_in_app_ltv1day) / 注册人数)")
+    private BigDecimal ltvDay1;
+
+    /**
+     * 每日扣单数 (广告首日总订单数 - 应用下载广告数据-付费次数(game_pay_count))
+     */
+    @ApiModelProperty(value = "每日扣单数 (广告首日总订单数 - 应用下载广告数据-付费次数(game_pay_count))")
+    private Long subOrderNum;
+
+    /**
+     * 每日扣单金额  (广告首日总金额 - 当日付费金额-所选时间范围内的激活用户,激活当日在APP内的付费金额(attribution_game_in_app_ltv1day) )
+     */
+    @ApiModelProperty(value = "每日扣单金额  (广告首日总金额 - 当日付费金额-所选时间范围内的激活用户,激活当日在APP内的付费金额(attribution_game_in_app_ltv1day) )")
+    private BigDecimal subOrderAmount;
+    
+}

+ 25 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IAdsPromotionDayService.java

@@ -2,8 +2,12 @@ package com.zanxiang.game.data.serve.service;
 
 import com.zanxiang.game.data.serve.pojo.dto.PromotionDayDTO;
 import com.zanxiang.game.data.serve.pojo.dto.PromotionDayTotalDTO;
+import com.zanxiang.game.data.serve.pojo.dto.TencentPromotionDayDTO;
+import com.zanxiang.game.data.serve.pojo.dto.TencentPromotionDayTotalDTO;
 import com.zanxiang.game.data.serve.pojo.vo.PromotionDayTotalVO;
 import com.zanxiang.game.data.serve.pojo.vo.PromotionDayVO;
+import com.zanxiang.game.data.serve.pojo.vo.TencentPromotionDayTotalVO;
+import com.zanxiang.game.data.serve.pojo.vo.TencentPromotionDayVO;
 import com.zanxiang.game.data.serve.utils.Page;
 
 public interface IAdsPromotionDayService {
@@ -29,4 +33,25 @@ public interface IAdsPromotionDayService {
      */
     Page<PromotionDayVO> getPromotionDayListData(PromotionDayDTO dto);
 
+    /**
+     * 广告监控数据(腾讯广告)
+     * @param dto
+     * @return
+     */
+    Page<TencentPromotionDayVO> getTencentPromotionDayData(TencentPromotionDayDTO dto);
+
+    /**
+     * 广告监控数据总计(腾讯广告)
+     * @param dto
+     * @return
+     */
+    TencentPromotionDayTotalVO getTencentPromotionDayTotalData(TencentPromotionDayTotalDTO dto);
+
+    /**
+     * 广告监控每日数据(腾讯广告)
+     * @param dto
+     * @return
+     */
+    Page<TencentPromotionDayVO> getTencentPromotionDayListData(TencentPromotionDayDTO dto);
+
 }

+ 35 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IGameDataService.java

@@ -54,4 +54,39 @@ public interface IGameDataService {
 
 
     Page<GameDataH5VO> getH5Recharge(GameDataH5DTO dto);
+
+    /**
+     * ltv数据
+     * @param dto
+     * @return
+     */
+    Page<LtvDataVO> getLtvData(LtvDataDTO dto);
+
+    /**
+     * ltv数据总计一栏
+     * @param dto
+     * @return
+     */
+    LtvDataTotalVO getLtvTotalData(LtvDataTotalDTO dto);
+
+    /**
+     * 游戏首日复充
+     * @param dto
+     * @return
+     */
+    Page<GameDataFirstNewUserAgainVO> getFirstNewUserAgain(GameDataFirstNewUserAgainDTO dto);
+
+    /**
+     * 游戏首日复充总计
+     * @param dto
+     * @return
+     */
+    GameDataFirstNewUserAgainTotalVO getFirstNewUserAgainTotal(GameDataFirstNewUserAgainTotalDTO dto);
+
+    /**
+     * 用户详情
+     * @param dto
+     * @return
+     */
+    Page<GameDataUserDetailsVO> getUserDetails(GameDataUserDetailsDTO dto);
 }

+ 25 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IGameServerService.java

@@ -0,0 +1,25 @@
+package com.zanxiang.game.data.serve.service;
+
+import com.zanxiang.game.data.serve.pojo.dto.GameServerDayDTO;
+import com.zanxiang.game.data.serve.pojo.dto.GameServerDayTotalDTO;
+import com.zanxiang.game.data.serve.pojo.vo.GameServerDayTotalVO;
+import com.zanxiang.game.data.serve.pojo.vo.GameServerDayVO;
+import com.zanxiang.game.data.serve.utils.Page;
+
+public interface IGameServerService {
+
+    /**
+     * 游戏区服数据
+     * @param dto
+     * @return
+     */
+    Page<GameServerDayVO> getGameServerDataDay(GameServerDayDTO dto);
+
+    /**
+     * 游戏区服数据总计
+     * @param dto
+     * @return
+     */
+    GameServerDayTotalVO getGameServerDataDayTotal(GameServerDayTotalDTO dto);
+
+}

+ 49 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IPitcherDataService.java

@@ -0,0 +1,49 @@
+package com.zanxiang.game.data.serve.service;
+
+import com.zanxiang.game.data.serve.pojo.dto.*;
+import com.zanxiang.game.data.serve.pojo.vo.*;
+import com.zanxiang.game.data.serve.utils.Page;
+
+public interface IPitcherDataService {
+
+    /**
+     * 投手每日数据
+     */
+    Page<PitcherDataDayVO> getPitcherDataDay(PitcherDataDayDTO dto);
+
+    /**
+     * 投手每日数据总计
+     */
+    PitcherDataDayTotalVO getPitcherDataDayTotal(PitcherDataDayTotalDTO dto);
+
+    /**
+     * 投手总数据
+     */
+    Page<PitcherDataTotalVO> getPitcherDataTotal(PitcherDataTotalDTO dto);
+
+    /**
+     * 投手总数据总计
+     */
+    PitcherDataTotalSumVO getPitcherDataTotalSum(PitcherDataTotalSumDTO dto);
+
+    /**
+     * 投手游戏每日数据
+     */
+    Page<PitcherGameDataDayVO> getPitcherGameDataDay(PitcherGameDataDayDTO dto);
+
+    /**
+     * 投手游戏每日数据总计
+     */
+    PitcherGameDataDayTotalVO getPitcherGameDataDayTotal(PitcherGameDataDayTotalDTO dto);
+
+    /**
+     * 投手游戏总数据
+     */
+    Page<PitcherGameDataTotalVO> getPitcherGameDataTotal(PitcherGameDataTotalDTO dto);
+
+    /**
+     * 投手游戏总数据总计
+     */
+    PitcherGameDataTotalSumVO getPitcherGameDataTotalSum(PitcherGameDataTotalSumDTO dto);
+
+}

+ 1 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/AdsOrderDetailService.java

@@ -97,6 +97,7 @@ public class AdsOrderDetailService implements IAdsOrderDetailService {
         if (dto.getEndRegTime() != null) {
             cnd.and(AdsOrderDetail::getRegTime, "<=", dto.getEndRegTime());
         }
+        cnd.orderBy(dto.getSortFiled(), dto.getSortType());
         List<AdsOrderDetailVO> records = dao.query(AdsOrderDetail.class, cnd, pager).stream().map(this::toVO).collect(Collectors.toList());
         pager.setRecordCount(dao.count(AdsOrderDetail.class, cnd));
         return new Page<>(records, pager);

File diff suppressed because it is too large
+ 710 - 258
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameDataServiceImpl.java


+ 462 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameServerServiceImpl.java

@@ -0,0 +1,462 @@
+package com.zanxiang.game.data.serve.service.impl;
+
+import com.google.common.base.CaseFormat;
+import com.zanxiang.game.data.serve.pojo.dto.GameServerDayDTO;
+import com.zanxiang.game.data.serve.pojo.dto.GameServerDayTotalDTO;
+import com.zanxiang.game.data.serve.pojo.entity.AdsGameServerDay;
+import com.zanxiang.game.data.serve.pojo.enums.OrderByEnum;
+import com.zanxiang.game.data.serve.pojo.vo.GameServerDayTotalVO;
+import com.zanxiang.game.data.serve.pojo.vo.GameServerDayVO;
+import com.zanxiang.game.data.serve.pojo.vo.GameServerTrendVO;
+import com.zanxiang.game.data.serve.service.IGameServerService;
+import com.zanxiang.game.data.serve.utils.Page;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.nutz.dao.Cnd;
+import org.nutz.dao.Dao;
+import org.nutz.dao.Sqls;
+import org.nutz.dao.pager.Pager;
+import org.nutz.dao.sql.Criteria;
+import org.nutz.dao.sql.Sql;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import reactor.util.function.Tuple2;
+import reactor.util.function.Tuples;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.LocalDate;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @author tianhua
+ * @time 2023/8/14
+ * @Description 游戏区服接口逻辑处理
+ **/
+@Slf4j
+@Service
+public class GameServerServiceImpl implements IGameServerService {
+
+    //存储映射的List
+    private static final List<Tuple2<Field,Field>> dayNFieldMapList;
+    private static final List<Tuple2<Field,Field>> dayNTotalFieldMapList;
+
+    static {
+        //解析游戏区服的dayN映射
+        Map<String, Field> fieldMap = new HashMap<>();
+        List<Field> dayNFieldList = new ArrayList<>();
+        Class<?> tempClazz = GameServerDayVO.class;
+        while (tempClazz != null) {
+            //得到所有的field
+            Field[] fields = tempClazz.getDeclaredFields();
+            for (Field field : fields) {
+                if (Modifier.isFinal(field.getModifiers()) || Modifier.isStatic(field.getModifiers())) {
+                    continue;
+                }
+                //map里面存储了所有的field
+                fieldMap.put(field.getName(), field);
+                if (field.getType() == GameServerTrendVO.class) {
+                    //list里面只存储了 Trend 相关的field
+                    dayNFieldList.add(field);
+                }
+            }
+            tempClazz = tempClazz.getSuperclass();
+        }
+        if (dayNFieldList.isEmpty()) {
+            dayNFieldMapList = Collections.emptyList();
+        } else {
+            dayNFieldMapList = new ArrayList<>(dayNFieldList.size());
+            for (Field dayNField : dayNFieldList) {
+                dayNField.setAccessible(true);
+                Field sourceField = fieldMap.get(dayNField.getName().replace("Trend", ""));
+                sourceField.setAccessible(true);
+                if (sourceField != null) {
+                    dayNFieldMapList.add(Tuples.of(sourceField, dayNField));
+                }
+            }
+        }
+
+        //游戏区服总计dayN映射
+        Map<String, Field> fieldTotalMap = new HashMap<>();
+        List<Field> dayNTotalFieldList = new ArrayList<>();
+        Class<?> tempTotalClazz = GameServerDayTotalVO.class;
+        while (tempTotalClazz != null) {
+            //得到所有的field
+            Field[] fields = tempTotalClazz.getDeclaredFields();
+            for (Field field : fields) {
+                if (Modifier.isFinal(field.getModifiers()) || Modifier.isStatic(field.getModifiers())) {
+                    continue;
+                }
+                //map里面存储了所有的field
+                fieldTotalMap.put(field.getName(), field);
+                if (field.getType() == GameServerTrendVO.class) {
+                    //list里面只存储了 Trend 相关的field
+                    dayNTotalFieldList.add(field);
+                }
+            }
+            tempTotalClazz = tempTotalClazz.getSuperclass();
+        }
+        if (dayNTotalFieldList.isEmpty()) {
+            dayNTotalFieldMapList = Collections.emptyList();
+        } else {
+            dayNTotalFieldMapList = new ArrayList<>(dayNTotalFieldList.size());
+            for (Field dayNTotalField : dayNTotalFieldList) {
+                dayNTotalField.setAccessible(true);
+                Field sourceField = fieldTotalMap.get(dayNTotalField.getName().replace("Trend", ""));
+                sourceField.setAccessible(true);
+                if (sourceField != null) {
+                    dayNTotalFieldMapList.add(Tuples.of(sourceField, dayNTotalField));
+                }
+            }
+        }
+    }
+
+    @Autowired
+    private Dao dao;
+
+    /**
+     * 游戏区服数据
+     *
+     * @param dto 前端传递的查询参数
+     * @return page
+     */
+    @Override
+    public Page<GameServerDayVO> getGameServerDataDay(GameServerDayDTO dto) {
+
+        //不传递时间,默认查询当天数据
+        if (dto.getBeginDate() == null || dto.getEndDate() == null) {
+            dto.setBeginDate(LocalDate.now());
+            dto.setEndDate(LocalDate.now());
+        }
+        //默认排序字段 开服时间 降序
+        if (StringUtils.isBlank(dto.getSortFiled())) {
+            dto.setSortFiled("dt");
+        }
+        if (StringUtils.isBlank(dto.getSortType())) {
+            dto.setSortType(OrderByEnum.DESC.getOrderType());
+        }
+        //创建查询条件
+        Criteria cri = Cnd.cri();
+        if (dto.getGameId() != null) {
+            //拼接游戏ID查询条件
+            cri.where().andEquals("game_id", dto.getGameId());
+        }
+        if (dto.getServerId() != null) {
+            //拼接区服ID查询条件
+            cri.where().andEquals("server_id", dto.getServerId());
+        }
+        if (StringUtils.isNotBlank(dto.getServerName())) {
+            //拼接区服名称查询条件
+            cri.where().andLike("server_name", dto.getServerName());
+        }
+        if (dto.getBeginDate() != null && dto.getEndDate() != null) {
+            //拼接开服时间查询条件
+            cri.where().andBetween("dt", dto.getBeginDate(), dto.getEndDate());
+        }
+        if (StringUtils.isNotBlank(dto.getSourceSystem())) {
+            //拼接sdk来源
+            cri.where().andEquals("source_system", dto.getSourceSystem());
+        }
+        //添加排序条件
+        cri.getOrderBy().orderBy(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, dto.getSortFiled()), dto.getSortType());
+        //创建sql语句查询数据
+        Sql sql = Sqls.create(gameServerDaySql() + cri);
+        //设置自定义回传对象
+        sql.setCallback(Sqls.callback.entities());
+        sql.setEntity(dao.getEntity(GameServerDayVO.class));
+        //设置分页对象
+        Pager pager = dao.createPager(dto.getPageNum(), dto.getPageSize());
+        sql.setPager(pager);
+        //执行sql
+        dao.execute(sql);
+        //设置总记录数
+        pager.setRecordCount(dao.count(AdsGameServerDay.class, cri));
+        List<GameServerDayVO> tempList = sql.getList(GameServerDayVO.class);
+        List<GameServerDayVO> list = tempList.stream().map(vo -> {
+                formatDayN(vo);
+                return vo;
+        }).collect(Collectors.toList());
+        //返回结果
+        return new Page<>(list, pager);
+    }
+
+    /**
+     * 游戏区服数据总计
+     *
+     * @param dto 前端传递的查询参数
+     * @return vo
+     */
+    @Override
+    public GameServerDayTotalVO getGameServerDataDayTotal(GameServerDayTotalDTO dto) {
+        //不传递时间,默认查询当天数据
+        if (dto.getBeginDate() == null || dto.getEndDate() == null) {
+            dto.setBeginDate(LocalDate.now());
+            dto.setEndDate(LocalDate.now());
+        }
+        //创建查询条件
+        Criteria cri = Cnd.cri();
+        if (dto.getGameId() != null) {
+            //拼接游戏ID查询条件
+            cri.where().andEquals("game_id", dto.getGameId());
+        }
+        if (dto.getServerId() != null) {
+            //拼接区服ID查询条件
+            cri.where().andEquals("server_id", dto.getServerId());
+        }
+        if (StringUtils.isNotBlank(dto.getServerName())) {
+            //拼接区服名称查询条件
+            cri.where().andLike("server_name", dto.getServerName());
+        }
+        if (dto.getBeginDate() != null && dto.getEndDate() != null) {
+            //拼接开服时间查询条件
+            cri.where().andBetween("dt", dto.getBeginDate(), dto.getEndDate());
+        }
+        if (StringUtils.isNotBlank(dto.getSourceSystem())) {
+            //拼接sdk来源
+            cri.where().andEquals("source_system", dto.getSourceSystem());
+        }
+        //创建sql语句查询数据
+        Sql sql = Sqls.create(gameServerDayTotalSql() + cri);
+        //设置自定义回传对象
+        sql.setCallback(Sqls.callback.entity());
+        sql.setEntity(dao.getEntity(GameServerDayTotalVO.class));
+        //执行sql
+        dao.execute(sql);
+        //得到查询的结果
+        GameServerDayTotalVO vo = sql.getObject(GameServerDayTotalVO.class);
+        if (StringUtils.isNotBlank(vo.getDa1())) {
+            formatTotalDayN(vo);
+        }
+        //返回结果
+        return vo;
+    }
+
+    /**
+     * 将vo中的原始String数据修改为一个对象
+     * @param vo 展示给前端的游戏区服数据
+     */
+    private void formatDayN(GameServerDayVO vo) {
+        if (CollectionUtils.isEmpty(dayNFieldMapList)) {
+            return;
+        }
+        dayNFieldMapList.forEach(dayNFieldMap -> {
+            try {
+                String[] temps = ((String) dayNFieldMap.getT1().get(vo)).split("/");
+                dayNFieldMap.getT2().set(vo, GameServerTrendVO.builder()
+                        .regNum(Long.parseLong(temps[0]))
+                        .roleNum(Long.parseLong(temps[1]))
+                        .activeNum(Long.parseLong(temps[2]))
+                        .amountNum(Long.parseLong(temps[3]))
+                        .amount(new BigDecimal(temps[4]))
+                        .rollServerNum(Long.parseLong(temps[5]))
+                        .rollServerAmountNum(Long.parseLong(temps[6]))
+                        .rollServerAmount(new BigDecimal(temps[7]))
+                        .rollServerAmountRate(new BigDecimal(temps[8]))
+                        .build()
+                );
+            } catch (IllegalAccessException e) {
+                e.printStackTrace();
+            }
+
+        });
+    }
+
+    /**
+     * 将vo中的原始String数据修改为一个对象
+     * @param vo 展示给前端的游戏区服数据总计
+     */
+    private void formatTotalDayN(GameServerDayTotalVO vo) {
+        if (CollectionUtils.isEmpty(dayNTotalFieldMapList)) {
+            return;
+        }
+        dayNTotalFieldMapList.forEach(dayNTotalFieldMap -> {
+            try {
+                String[] temps = ((String) dayNTotalFieldMap.getT1().get(vo)).split("/");
+                //付费金额
+                BigDecimal amount = new BigDecimal(temps[4]);
+                //滚服付费金额
+                BigDecimal rollServerAmount = new BigDecimal(temps[7]);
+                //设置trend对象
+                dayNTotalFieldMap.getT2().set(vo, GameServerTrendVO.builder()
+                        .regNum(Long.parseLong(temps[0]))
+                        .roleNum(Long.parseLong(temps[1]))
+                        .activeNum(Long.parseLong(temps[2]))
+                        .amountNum(Long.parseLong(temps[3]))
+                        .amount(amount)
+                        .rollServerNum(Long.parseLong(temps[5]))
+                        .rollServerAmountNum(Long.parseLong(temps[6]))
+                        .rollServerAmount(rollServerAmount)
+                        .rollServerAmountRate(amount.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO :
+                                rollServerAmount.divide(amount, 4, RoundingMode.HALF_UP))
+                        .build()
+                );
+            } catch (IllegalAccessException e) {
+                e.printStackTrace();
+            }
+
+        });
+    }
+
+    /**
+     * 计算总计一栏的daN数据
+     * @return String
+     */
+    private String trendDay() {
+        StringBuilder daySql = new StringBuilder(StringUtils.EMPTY);
+        //拼接da1-da30 sql
+        for (int i = 1; i < 31; i++) {
+            daySql.append("""
+                    CONCAT(
+                    	SUM(CAST (SPLIT_PART(da%s, '/', 1) AS BIGINT(20))), '/',
+                    	SUM(CAST (SPLIT_PART(da%s, '/', 2) AS BIGINT(20))), '/',
+                    	SUM(CAST (SPLIT_PART(da%s, '/', 3) AS BIGINT(20))), '/',
+                    	SUM(CAST (SPLIT_PART(da%s, '/', 4) AS BIGINT(20))), '/',
+                    	SUM(CAST (SPLIT_PART(da%s, '/', 5) AS DECIMAL(10,2))), '/',
+                    	SUM(CAST (SPLIT_PART(da%s, '/', 6) AS BIGINT(20))), '/',
+                    	SUM(CAST (SPLIT_PART(da%s, '/', 7) AS BIGINT(20))), '/',
+                    	SUM(CAST (SPLIT_PART(da%s, '/', 8) AS DECIMAL(10,2)))
+                    ) as da%s ,
+                    """.formatted(i, i, i, i, i, i, i, i, i));
+        }
+        //拼接m2-m11 sql
+        for (int i = 2; i < 12; i++) {
+            daySql.append("""
+                    CONCAT(
+                    	SUM(CAST (SPLIT_PART(m%s, '/', 1) AS BIGINT(20))), '/',
+                    	SUM(CAST (SPLIT_PART(m%s, '/', 2) AS BIGINT(20))), '/',
+                    	SUM(CAST (SPLIT_PART(m%s, '/', 3) AS BIGINT(20))), '/',
+                    	SUM(CAST (SPLIT_PART(m%s, '/', 4) AS BIGINT(20))), '/',
+                    	SUM(CAST (SPLIT_PART(m%s, '/', 5) AS DECIMAL(10,2))), '/',
+                    	SUM(CAST (SPLIT_PART(m%s, '/', 6) AS BIGINT(20))), '/',
+                    	SUM(CAST (SPLIT_PART(m%s, '/', 7) AS BIGINT(20))), '/',
+                    	SUM(CAST (SPLIT_PART(m%s, '/', 8) AS DECIMAL(10,2)))
+                    ) as m%s ,
+                    """.formatted(i, i, i, i, i, i, i, i, i));
+        }
+        //拼接y1
+        daySql.append("""
+                    CONCAT(
+                    	SUM(CAST (SPLIT_PART(y1, '/', 1) AS BIGINT(20))), '/',
+                    	SUM(CAST (SPLIT_PART(y1, '/', 2) AS BIGINT(20))), '/',
+                    	SUM(CAST (SPLIT_PART(y1, '/', 3) AS BIGINT(20))), '/',
+                    	SUM(CAST (SPLIT_PART(y1, '/', 4) AS BIGINT(20))), '/',
+                    	SUM(CAST (SPLIT_PART(y1, '/', 5) AS DECIMAL(10,2))), '/',
+                    	SUM(CAST (SPLIT_PART(y1, '/', 6) AS BIGINT(20))), '/',
+                    	SUM(CAST (SPLIT_PART(y1, '/', 7) AS BIGINT(20))), '/',
+                    	SUM(CAST (SPLIT_PART(y1, '/', 8) AS DECIMAL(10,2)))
+                    ) as y1 ,
+                    """);
+        //拼接total
+        daySql.append("""
+                    CONCAT(
+                    	SUM(CAST (SPLIT_PART(total, '/', 1) AS BIGINT(20))), '/',
+                    	SUM(CAST (SPLIT_PART(total, '/', 2) AS BIGINT(20))), '/',
+                    	SUM(CAST (SPLIT_PART(total, '/', 3) AS BIGINT(20))), '/',
+                    	SUM(CAST (SPLIT_PART(total, '/', 4) AS BIGINT(20))), '/',
+                    	SUM(CAST (SPLIT_PART(total, '/', 5) AS DECIMAL(10,2))), '/',
+                    	SUM(CAST (SPLIT_PART(total, '/', 6) AS BIGINT(20))), '/',
+                    	SUM(CAST (SPLIT_PART(total, '/', 7) AS BIGINT(20))), '/',
+                    	SUM(CAST (SPLIT_PART(total, '/', 8) AS DECIMAL(10,2)))
+                    ) as total
+                    """);
+
+        return daySql.toString();
+    }
+
+    /**
+     * 游戏区服数据SQL
+     * @return String
+     */
+    private String gameServerDaySql() {
+        return """
+                SELECT
+                    dt,
+                    source_system,
+                    server_id,
+                    server_name,
+                    game_id,
+                    game_name,
+                    classify,
+                    out_total_num,
+                    out_total_amount_num,
+                    out_total_amount,
+                    out_total_rate,
+                    total_role_num,
+                    total_reg_num,
+                    total_amount_num,
+                    total_amount,
+                    da1,
+                    da2,
+                    da3,
+                    da4,
+                    da5,
+                    da6,
+                    da7,
+                    da8,
+                    da9,
+                    da10,
+                    da11,
+                    da12,
+                    da13,
+                    da14,
+                    da15,
+                    da16,
+                    da17,
+                    da18,
+                    da19,
+                    da20,
+                    da21,
+                    da22,
+                    da23,
+                    da24,
+                    da25,
+                    da26,
+                    da27,
+                    da28,
+                    da29,
+                    da30,
+                    m2,
+                    m3,
+                    m4,
+                    m5,
+                    m6,
+                    m7,
+                    m8,
+                    m9,
+                    m10,
+                    m11,
+                    y1,
+                    total
+                FROM
+                    game_ads.ads_game_server_day
+                """;
+    }
+
+    /**
+     * 游戏区服数据总计SQL
+     * @return String
+     */
+    private String gameServerDayTotalSql() {
+        return """
+                SELECT
+                    IFNULL(SUM(out_total_num), 0) as out_total_num,
+                    IFNULL(SUM(out_total_amount_num), 0) as out_total_amount_num,
+                    IFNULL(SUM(out_total_amount), 0) as out_total_amount,
+                    ROUND(IF(SUM(total_amount) > 0, SUM(out_total_amount) / SUM(total_amount), 0), 4) as out_total_rate,
+                    IFNULL(SUM(total_role_num), 0) as total_role_num,
+                    IFNULL(SUM(total_reg_num), 0) as total_reg_num,
+                    IFNULL(SUM(total_amount_num), 0) as total_amount_num,
+                    IFNULL(SUM(total_amount), 0) as total_amount,
+                """ + trendDay() +
+                """
+                FROM
+                    game_ads.ads_game_server_day
+                """;
+    }
+
+
+}

+ 104 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/PitcherDataServiceImpl.java

@@ -0,0 +1,104 @@
+package com.zanxiang.game.data.serve.service.impl;
+
+import com.zanxiang.game.data.serve.pojo.dto.*;
+import com.zanxiang.game.data.serve.pojo.vo.*;
+import com.zanxiang.game.data.serve.service.IPitcherDataService;
+import com.zanxiang.game.data.serve.utils.Page;
+import lombok.extern.slf4j.Slf4j;
+import org.nutz.dao.Dao;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author tianhua
+ * @time 2023/8/15
+ * @Description 投手数据接口逻辑处理
+ **/
+@Service
+@Slf4j
+public class PitcherDataServiceImpl implements IPitcherDataService {
+
+    @Autowired
+    private Dao dao;
+
+    /**
+     * 投手每日数据
+     * @param dto PitcherDataDayDTO
+     * @return Page<PitcherDataDayVO>
+     */
+    @Override
+    public Page<PitcherDataDayVO> getPitcherDataDay(PitcherDataDayDTO dto) {
+        return null;
+    }
+
+    /**
+     * 投手每日数据总计
+     * @param dto PitcherDataDayTotalDTO
+     * @return PitcherDataDayTotalVO
+     */
+    @Override
+    public PitcherDataDayTotalVO getPitcherDataDayTotal(PitcherDataDayTotalDTO dto) {
+        return null;
+    }
+
+    /**
+     * 投手总数据
+     * @param dto PitcherDataTotalDTO
+     * @return Page<PitcherDataTotalVO>
+     */
+    @Override
+    public Page<PitcherDataTotalVO> getPitcherDataTotal(PitcherDataTotalDTO dto) {
+        return null;
+    }
+
+    /**
+     * 投手总数据总计
+     * @param dto PitcherDataTotalSumDTO
+     * @return PitcherDataTotalSumVO
+     */
+    @Override
+    public PitcherDataTotalSumVO getPitcherDataTotalSum(PitcherDataTotalSumDTO dto) {
+        return null;
+    }
+
+    /**
+     * 投手游戏每日数据
+     * @param dto PitcherGameDataDayDTO
+     * @return Page<PitcherGameDataDayVO>
+     */
+    @Override
+    public Page<PitcherGameDataDayVO> getPitcherGameDataDay(PitcherGameDataDayDTO dto) {
+        return null;
+    }
+
+    /**
+     * 投手游戏每日数据总计
+     * @param dto PitcherGameDataDayTotalDTO
+     * @return PitcherGameDataDayTotalVO
+     */
+    @Override
+    public PitcherGameDataDayTotalVO getPitcherGameDataDayTotal(PitcherGameDataDayTotalDTO dto) {
+        return null;
+    }
+
+    /**
+     * 投手游戏总数据
+     * @param dto PitcherGameDataTotalDTO
+     * @return Page<PitcherGameDataTotalVO>
+     */
+    @Override
+    public Page<PitcherGameDataTotalVO> getPitcherGameDataTotal(PitcherGameDataTotalDTO dto) {
+        return null;
+    }
+
+    /**
+     * 投手游戏总数据总计
+     * @param dto PitcherGameDataTotalSumDTO
+     * @return PitcherGameDataTotalSumVO
+     */
+    @Override
+    public PitcherGameDataTotalSumVO getPitcherGameDataTotalSum(PitcherGameDataTotalSumDTO dto) {
+        return null;
+    }
+
+}

File diff suppressed because it is too large
+ 683 - 162
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/PromotionDayServiceImpl.java


+ 1 - 1
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/ManageApplication.java

@@ -21,7 +21,7 @@ public class ManageApplication {
 
     public static void main(String[] args) {
         SpringApplication.run(ManageApplication.class, args);
-        System.out.println("赞象Manage服务启动成功 <dubbo升级3.0, 后台BUG修复> ( ´・・)ノ(._.`) \n" +
+        System.out.println("赞象Manage服务启动成功 <dubbo升级3.0, 解决ip封禁未指定游戏得问题> ( ´・・)ノ(._.`) \n" +
                 "___  ___  ___   _   _   ___  _____  _____ \n" +
                 "|  \\/  | / _ \\ | \\ | | / _ \\|  __ \\|  ___|\n" +
                 "| .  . |/ /_\\ \\|  \\| |/ /_\\ \\ |  \\/| |__  \n" +

+ 57 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/GameServerController.java

@@ -0,0 +1,57 @@
+package com.zanxiang.game.module.manage.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.zanxiang.erp.security.annotation.PreAuthorize;
+import com.zanxiang.game.module.manage.pojo.params.GameServerAddUpdateParam;
+import com.zanxiang.game.module.manage.pojo.params.GameServerListParam;
+import com.zanxiang.game.module.manage.pojo.vo.GameServerListVO;
+import com.zanxiang.game.module.manage.service.IGameServerService;
+import com.zanxiang.module.util.pojo.ResultVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-07
+ * @description : 游戏区服接口
+ */
+@Api(tags = {"游戏区服接口"})
+@RestController
+@RequestMapping("/gameServer")
+@Slf4j
+public class GameServerController {
+
+    @Autowired
+    private IGameServerService gameServerService;
+
+    @ApiOperation(value = "新增或修改游戏区服")
+    @PostMapping(value = "/add/or/update")
+    @PreAuthorize(permissionKey = "manage:gameServer:addOrUpdate")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
+    public ResultVO<Boolean> addOrUpdate(@Validated @RequestBody GameServerAddUpdateParam param) {
+        return ResultVO.ok(gameServerService.addOrUpdate(param));
+    }
+
+    @ApiOperation(value = "游戏区服列表查询")
+    @PostMapping(value = "/list")
+    @PreAuthorize(permissionKey = "manage:gameServer:list")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = GameServerListVO.class)})
+    public ResultVO<IPage<GameServerListVO>> listOfPage(@Validated @RequestBody GameServerListParam param) {
+        return ResultVO.ok(gameServerService.listOfPage(param));
+    }
+
+    @ApiOperation(value = "游戏区服删除")
+    @DeleteMapping(value = "/delete")
+    @PreAuthorize(permissionKey = "manage:gameServer:delete")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
+    public ResultVO<Boolean> deleteById(@RequestParam Long id) {
+        return ResultVO.ok(gameServerService.deleteById(id));
+    }
+
+}

+ 54 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/GameUserConfigController.java

@@ -0,0 +1,54 @@
+package com.zanxiang.game.module.manage.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.zanxiang.erp.security.annotation.PreAuthorize;
+import com.zanxiang.game.module.manage.pojo.params.GameUserConfigAddUpdateParam;
+import com.zanxiang.game.module.manage.pojo.params.GameUserConfigListParam;
+import com.zanxiang.game.module.manage.pojo.vo.GameUserConfigListVO;
+import com.zanxiang.game.module.manage.service.IGameUserConfigService;
+import com.zanxiang.module.util.pojo.ResultVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-09
+ * @description : 有效用户配置
+ */
+@Api(tags = {"有效创角配置接口"})
+@RestController
+@RequestMapping("/gameUser/config")
+public class GameUserConfigController {
+
+    @Autowired
+    private IGameUserConfigService gameUserConfigService;
+
+    @ApiOperation(value = "新增或修改有效创角配置")
+    @PostMapping(value = "/add/or/update")
+    @PreAuthorize(permissionKey = "manage:gameUserConfig:addOrUpdate")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
+    public ResultVO<Boolean> addOrUpdate(@Validated @RequestBody GameUserConfigAddUpdateParam param) {
+        return ResultVO.ok(gameUserConfigService.addOrUpdate(param));
+    }
+
+    @ApiOperation(value = "有效创角配置列表查询")
+    @PostMapping(value = "/list")
+    @PreAuthorize(permissionKey = "manage:gameUserConfig:list")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = GameUserConfigListVO.class)})
+    public ResultVO<IPage<GameUserConfigListVO>> listOfPage(@Validated @RequestBody GameUserConfigListParam param) {
+        return ResultVO.ok(gameUserConfigService.listOfPage(param));
+    }
+
+    @ApiOperation(value = "有效创角配置服删除")
+    @DeleteMapping(value = "/delete")
+    @PreAuthorize(permissionKey = "manage:gameUserConfig:delete")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
+    public ResultVO<Boolean> deleteById(@RequestParam Long id) {
+        return ResultVO.ok(gameUserConfigService.deleteById(id));
+    }
+}

+ 14 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/OrderController.java

@@ -2,10 +2,13 @@ package com.zanxiang.game.module.manage.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.zanxiang.erp.security.annotation.PreAuthorize;
+import com.zanxiang.game.module.manage.pojo.params.GameRemitLogListParam;
 import com.zanxiang.game.module.manage.pojo.params.OrderParam;
 import com.zanxiang.game.module.manage.pojo.params.PayCallCpLogParam;
+import com.zanxiang.game.module.manage.pojo.vo.GameRemitLogVO;
 import com.zanxiang.game.module.manage.pojo.vo.LogPayCpVO;
 import com.zanxiang.game.module.manage.pojo.vo.OrderListVO;
+import com.zanxiang.game.module.manage.service.IGameRemitLogService;
 import com.zanxiang.game.module.manage.service.ILogPayCpService;
 import com.zanxiang.game.module.manage.service.IOrderService;
 import com.zanxiang.module.util.pojo.ResultVO;
@@ -38,6 +41,9 @@ public class OrderController {
     @Autowired
     private ILogPayCpService logPayCpService;
 
+    @Autowired
+    private IGameRemitLogService gameRemitLogService;
+
     @ApiOperation(value = "订单列表")
     @PostMapping(value = "/list")
     @PreAuthorize(permissionKey = "manage:order:orderList")
@@ -61,4 +67,12 @@ public class OrderController {
     public void getOrderExcel(@Validated @RequestBody OrderParam param, HttpServletResponse response) {
         orderService.getOrderExcel(param, response);
     }
+
+    @ApiOperation(value = "游戏提现记录")
+    @PostMapping(value = "/remit/Log")
+    @PreAuthorize(permissionKey = "manage:order:remitLog")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = GameRemitLogVO.class, responseContainer = "list")})
+    public ResultVO<IPage<GameRemitLogVO>> listOfPage(@Validated @RequestBody GameRemitLogListParam param) {
+        return ResultVO.ok(gameRemitLogService.listOfPage(param));
+    }
 }

+ 49 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameRemitLogListParam.java

@@ -0,0 +1,49 @@
+package com.zanxiang.game.module.manage.pojo.params;
+
+import com.zanxiang.game.module.mybatis.entity.GameRemitLog;
+import com.zanxiang.module.web.pojo.BaseListDTO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDate;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-08
+ * @description : 提现记录查询参数
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class GameRemitLogListParam extends BaseListDTO<GameRemitLog> {
+
+    /**
+     * 用户id
+     */
+    @ApiModelProperty(notes = "用户id")
+    private Long userId;
+
+    /**
+     * 游戏id
+     */
+    @ApiModelProperty(notes = "游戏id")
+    private Long gameId;
+
+    /**
+     * 交易订单号
+     */
+    @ApiModelProperty(notes = "交易订单号")
+    private String merchantOrderNo;
+
+    /**
+     * 提现开始时间
+     */
+    @ApiModelProperty(notes = "提现开始时间")
+    private LocalDate startTime;
+
+    /**
+     * 提现结束时间
+     */
+    @ApiModelProperty(notes = "提现结束时间")
+    private LocalDate endTime;
+}

+ 57 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameServerAddUpdateParam.java

@@ -0,0 +1,57 @@
+package com.zanxiang.game.module.manage.pojo.params;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.time.LocalDateTime;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-07
+ * @description : 游戏区服添加更新参数
+ */
+@Data
+public class GameServerAddUpdateParam {
+
+    /**
+     * 主键id
+     */
+    @ApiModelProperty(notes = "主键id, 传则是更新, 不传则是添加, 非必传")
+    private Long id;
+
+    /**
+     * 游戏id
+     */
+    @NotNull(message = "游戏id不可为空")
+    @ApiModelProperty(notes = "游戏id, 必传")
+    private Long gameId;
+
+    /**
+     * 区服id
+     */
+    @NotBlank(message = "区服id不可为空")
+    @ApiModelProperty(notes = "区服id, 必传")
+    private String serverId;
+
+    /**
+     * 区服名称
+     */
+    @NotBlank(message = "区服名称不可为空")
+    @ApiModelProperty(notes = "区服名称, 必传")
+    private String serverName;
+
+    /**
+     * 区服冠名
+     */
+    @ApiModelProperty(notes = "区服冠名, 非必传")
+    private String nickName;
+
+    /**
+     * 开服时间
+     */
+    @NotNull(message = "开服时间不可为空")
+    @ApiModelProperty(notes = "开服时间, 必传")
+    private LocalDateTime startTime;
+}

+ 48 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameServerListParam.java

@@ -0,0 +1,48 @@
+package com.zanxiang.game.module.manage.pojo.params;
+
+import com.zanxiang.game.module.mybatis.entity.GameServer;
+import com.zanxiang.module.web.pojo.BaseListDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDate;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-07
+ * @description : 游戏区服查询提交
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class GameServerListParam extends BaseListDTO<GameServer> {
+
+    /**
+     * 游戏id
+     */
+    private Long gameId;
+
+    /**
+     * 区服id
+     */
+    private String serverId;
+
+    /**
+     * 区服名称
+     */
+    private String serverName;
+
+    /**
+     * 区服冠名
+     */
+    private String nickName;
+
+    /**
+     * 开服时间区间-开始
+     */
+    private LocalDate startTime;
+
+    /**
+     * 开服时间区间-结束
+     */
+    private LocalDate endTime;
+}

+ 35 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameUserConfigAddUpdateParam.java

@@ -0,0 +1,35 @@
+package com.zanxiang.game.module.manage.pojo.params;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-09
+ * @description : 有效用户配置
+ */
+@Data
+public class GameUserConfigAddUpdateParam {
+
+    /**
+     * 主键id
+     */
+    @ApiModelProperty(notes = "主键id, 传则是更新, 不传则是添加")
+    private Long id;
+
+    /**
+     * 游戏id
+     */
+    @NotNull(message = "游戏id不可为空, 必传")
+    @ApiModelProperty(notes = "游戏id")
+    private Long gameId;
+
+    /**
+     * 游戏角色等级
+     */
+    @NotNull(message = "游戏角色等级不可为空, 必传")
+    @ApiModelProperty(notes = "游戏角色等级")
+    private Long roleLevel;
+}

+ 21 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameUserConfigListParam.java

@@ -0,0 +1,21 @@
+package com.zanxiang.game.module.manage.pojo.params;
+
+import com.zanxiang.game.module.mybatis.entity.GameUserConfig;
+import com.zanxiang.module.web.pojo.BaseListDTO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-09
+ * @description : 有效用户配置查询
+ */
+@Data
+public class GameUserConfigListParam extends BaseListDTO<GameUserConfig> {
+
+    /**
+     * 游戏id
+     */
+    @ApiModelProperty(notes = "游戏id")
+    private Long gameId;
+}

+ 9 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/IpBanAddParam.java

@@ -1,8 +1,10 @@
 package com.zanxiang.game.module.manage.pojo.params;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
 import java.util.List;
 
 /**
@@ -13,6 +15,13 @@ import java.util.List;
 @Data
 public class IpBanAddParam {
 
+    /**
+     * 游戏id
+     */
+    @NotNull(message = "游戏id不可为空")
+    @ApiModelProperty(notes = "游戏id")
+    private Long gameId;
+
     /**
      * ip列表
      */

+ 6 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/IpBanListParam.java

@@ -25,6 +25,12 @@ public class IpBanListParam extends BaseListDTO<IpBan> {
     @ApiModelProperty(notes = "查询的ip")
     private String ip;
 
+    /**
+     * 游戏id
+     */
+    @ApiModelProperty(notes = "游戏id")
+    private Long gameId;
+
     /**
      * 封禁状态
      */

+ 1 - 1
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/OrderParam.java

@@ -42,7 +42,7 @@ public class OrderParam extends BaseListDTO<Order> {
     private String cpId;
 
     @ApiModelProperty(notes = "充值游戏id")
-    private String gameId;
+    private Long gameId;
 
     @ApiModelProperty(notes = "注册渠道对应的id")
     private Long channelId;

+ 12 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/UserNameAuthListParam.java

@@ -58,4 +58,16 @@ public class UserNameAuthListParam extends BaseListDTO<UserCard> {
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     @ApiModelProperty(value = "结束时间")
     private LocalDate endDate;
+
+    /**
+     * 游戏id
+     */
+    @ApiModelProperty(notes = "最近游戏角色名称")
+    private Long gameId;
+
+    /**
+     * 最近游戏角色名称
+     */
+    @ApiModelProperty(notes = "最近游戏角色名称")
+    private String lastGameRoleName;
 }

+ 81 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/GameRemitLogVO.java

@@ -0,0 +1,81 @@
+package com.zanxiang.game.module.manage.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-08
+ * @description : 提现记录
+ */
+@Data
+public class GameRemitLogVO {
+
+    /**
+     * 主键
+     */
+    @ApiModelProperty(notes = "主键")
+    private Long id;
+
+    /**
+     * 用户id
+     */
+    @ApiModelProperty(notes = "用户id")
+    private Long userId;
+
+    /**
+     * 游戏id
+     */
+    @ApiModelProperty(notes = "游戏id")
+    private Long gameId;
+
+    /**
+     * 游戏名称
+     */
+    @ApiModelProperty(notes = "游戏名称")
+    private String gameName;
+
+    /**
+     * 交易订单号
+     */
+    @ApiModelProperty(notes = "交易订单号")
+    private String merchantOrderNo;
+
+    /**
+     * 金额(单位 : 分)
+     */
+    @ApiModelProperty(notes = "金额(单位 : 分)")
+    private Long amount;
+
+    /**
+     * 提现平台
+     */
+    @ApiModelProperty(notes = "提现平台")
+    private String payPlatform;
+
+    /**
+     * 提现账号
+     */
+    @ApiModelProperty(notes = "提现账号")
+    private String payAccount;
+
+    /**
+     * 提现时间
+     */
+    @ApiModelProperty(notes = "提现时间")
+    private LocalDateTime createdTime;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(notes = "创建时间")
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty(notes = "更新时间")
+    private LocalDateTime updateTime;
+}

+ 75 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/GameServerListVO.java

@@ -0,0 +1,75 @@
+package com.zanxiang.game.module.manage.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-07
+ * @description : 游戏区服
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class GameServerListVO {
+
+    /**
+     * 主键id
+     */
+    @ApiModelProperty(notes = "主键id")
+    private Long id;
+
+    /**
+     * 游戏id
+     */
+    @ApiModelProperty(notes = "游戏id")
+    private Long gameId;
+
+    /**
+     * 游戏名称
+     */
+    @ApiModelProperty(notes = "游戏名称")
+    private String gameName;
+
+    /**
+     * 区服id
+     */
+    @ApiModelProperty(notes = "区服id")
+    private String serverId;
+
+    /**
+     * 区服名称
+     */
+    @ApiModelProperty(notes = "区服名称")
+    private String serverName;
+
+    /**
+     * 区服冠名
+     */
+    @ApiModelProperty(notes = "区服冠名")
+    private String nickName;
+
+    /**
+     * 开服时间
+     */
+    @ApiModelProperty(notes = "开服时间")
+    private LocalDateTime startTime;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(notes = "创建时间")
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty(notes = "更新时间")
+    private LocalDateTime updateTime;
+}

+ 51 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/GameUserConfigListVO.java

@@ -0,0 +1,51 @@
+package com.zanxiang.game.module.manage.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-09
+ * @description : 有效用户配置
+ */
+@Data
+public class GameUserConfigListVO {
+
+    /**
+     * 主键id
+     */
+    @ApiModelProperty(notes = "主键id")
+    private Long id;
+
+    /**
+     * 游戏id
+     */
+    @ApiModelProperty(notes = "游戏id")
+    private Long gameId;
+
+    /**
+     * 游戏名称
+     */
+    @ApiModelProperty(notes = "游戏名称")
+    private String gameName;
+
+    /**
+     * 游戏角色等级
+     */
+    @ApiModelProperty(notes = "游戏角色等级")
+    private Long roleLevel;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(notes = "创建时间")
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty(notes = "更新时间")
+    private LocalDateTime updateTime;
+}

+ 6 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/GameUserRoleListVO.java

@@ -100,6 +100,12 @@ public class GameUserRoleListVO {
     @ApiModelProperty(notes = "游戏应用类型名称")
     private String gameCategoryName;
 
+    /**
+     * 原始服务器名称
+     */
+    @ApiModelProperty(notes = "原始服务器名称")
+    private String sourceServerName;
+
     /**
      * 游戏区服
      */

+ 12 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/IpBanVO.java

@@ -25,6 +25,18 @@ public class IpBanVO {
     @ApiModelProperty(notes = "ip")
     private String ip;
 
+    /**
+     * 游戏id
+     */
+    @ApiModelProperty(notes = "游戏id")
+    private Long gameId;
+
+    /**
+     * 游戏名称
+     */
+    @ApiModelProperty(notes = "游戏名称")
+    private String gameName;
+
     /**
      * 封禁时间
      */

+ 7 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/OrderExcelVO.java

@@ -1,6 +1,7 @@
 package com.zanxiang.game.module.manage.pojo.vo;
 
 import com.zanxiang.module.util.excel.ExcelAnno;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -147,6 +148,12 @@ public class OrderExcelVO {
     @ExcelAnno(title = "商户名称")
     private String merchantName;
 
+    /**
+     * 原始服务器名称
+     */
+    @ApiModelProperty(notes = "原始服务器名称")
+    private String sourceServerName;
+
     /**
      * 所在服务器名称
      */

+ 6 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/OrderVO.java

@@ -195,6 +195,12 @@ public class OrderVO {
     @ApiModelProperty(notes = "商户名称")
     private String merchantName;
 
+    /**
+     * 原始服务器名称
+     */
+    @ApiModelProperty(notes = "原始服务器名称")
+    private String sourceServerName;
+
     /**
      * 所在服务器名称
      */

+ 12 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/UserCardVO.java

@@ -85,6 +85,18 @@ public class UserCardVO {
     @ApiModelProperty(notes = "更新时间")
     private LocalDateTime updateTime;
 
+    /**
+     * 游戏id
+     */
+    @ApiModelProperty(notes = "游戏id")
+    private Long gameId;
+
+    /**
+     * 游戏名称
+     */
+    @ApiModelProperty(notes = "游戏名称")
+    private String gameName;
+
     /**
      * 最近游戏角色名称
      */

+ 23 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IGameRemitLogService.java

@@ -0,0 +1,23 @@
+package com.zanxiang.game.module.manage.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.game.module.manage.pojo.params.GameRemitLogListParam;
+import com.zanxiang.game.module.manage.pojo.vo.GameRemitLogVO;
+import com.zanxiang.game.module.mybatis.entity.GameRemitLog;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-07-17
+ * @description : 游戏提现记录
+ */
+public interface IGameRemitLogService extends IService<GameRemitLog> {
+
+    /**
+     * 列表页面
+     *
+     * @param param 参数
+     * @return {@link IPage}<{@link GameRemitLogVO}>
+     */
+    IPage<GameRemitLogVO> listOfPage(GameRemitLogListParam param);
+}

+ 51 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IGameServerService.java

@@ -0,0 +1,51 @@
+package com.zanxiang.game.module.manage.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.game.module.manage.pojo.params.GameServerAddUpdateParam;
+import com.zanxiang.game.module.manage.pojo.params.GameServerListParam;
+import com.zanxiang.game.module.manage.pojo.vo.GameServerListVO;
+import com.zanxiang.game.module.mybatis.entity.GameServer;
+
+import java.util.List;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-07
+ * @description : 游戏区服
+ */
+public interface IGameServerService extends IService<GameServer> {
+
+    /**
+     * 列表名字
+     *
+     * @param gameId     游戏id
+     * @param serverName 服务器名称
+     * @return {@link List}<{@link String}>
+     */
+    List<String> listServerId(Long gameId, String serverName);
+
+    /**
+     * 添加或更新
+     *
+     * @param param 参数
+     * @return boolean
+     */
+    boolean addOrUpdate(GameServerAddUpdateParam param);
+
+    /**
+     * 列表页面
+     *
+     * @param param 参数
+     * @return {@link IPage}<{@link GameServerListVO}>
+     */
+    IPage<GameServerListVO> listOfPage(GameServerListParam param);
+
+    /**
+     * 删除通过id
+     *
+     * @param id id
+     * @return boolean
+     */
+    boolean deleteById(Long id);
+}

+ 40 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IGameUserConfigService.java

@@ -0,0 +1,40 @@
+package com.zanxiang.game.module.manage.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.game.module.manage.pojo.params.GameUserConfigAddUpdateParam;
+import com.zanxiang.game.module.manage.pojo.params.GameUserConfigListParam;
+import com.zanxiang.game.module.manage.pojo.vo.GameUserConfigListVO;
+import com.zanxiang.game.module.mybatis.entity.GameUserConfig;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-09
+ * @description : 有效用户配置
+ */
+public interface IGameUserConfigService extends IService<GameUserConfig> {
+
+    /**
+     * 添加或更新
+     *
+     * @param param 参数
+     * @return boolean
+     */
+    boolean addOrUpdate(GameUserConfigAddUpdateParam param);
+
+    /**
+     * 列表页面
+     *
+     * @param param 参数
+     * @return {@link IPage}<{@link GameUserConfigListVO}>
+     */
+    IPage<GameUserConfigListVO> listOfPage(GameUserConfigListParam param);
+
+    /**
+     * 删除通过id
+     *
+     * @param id id
+     * @return boolean
+     */
+    boolean deleteById(Long id);
+}

+ 88 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameRemitLogServiceImpl.java

@@ -0,0 +1,88 @@
+package com.zanxiang.game.module.manage.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.game.module.manage.pojo.dto.AgentDTO;
+import com.zanxiang.game.module.manage.pojo.dto.GameDTO;
+import com.zanxiang.game.module.manage.pojo.params.GameRemitLogListParam;
+import com.zanxiang.game.module.manage.pojo.vo.GameRemitLogVO;
+import com.zanxiang.game.module.manage.service.IAgentService;
+import com.zanxiang.game.module.manage.service.IGameRemitLogService;
+import com.zanxiang.game.module.manage.service.IGameService;
+import com.zanxiang.game.module.manage.service.IUserService;
+import com.zanxiang.game.module.mybatis.entity.GameRemitLog;
+import com.zanxiang.game.module.mybatis.entity.User;
+import com.zanxiang.game.module.mybatis.mapper.GameRemitLogMapper;
+import com.zanxiang.module.util.bean.BeanUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.logging.log4j.util.Strings;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import reactor.util.function.Tuple2;
+
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-07-17
+ * @description : 游戏提现记录
+ */
+@Slf4j
+@Service
+public class GameRemitLogServiceImpl extends ServiceImpl<GameRemitLogMapper, GameRemitLog> implements IGameRemitLogService {
+
+    @Autowired
+    private IGameService gameService;
+
+    @Autowired
+    private IAgentService agentService;
+
+    @Autowired
+    private IUserService userService;
+
+    @Override
+    public IPage<GameRemitLogVO> listOfPage(GameRemitLogListParam param) {
+        //渠道获取
+        Tuple2<List<Long>, List<AgentDTO>> tuple2 = agentService.getUserAgent(null, null, null);
+        if (CollectionUtils.isEmpty(tuple2.getT1())) {
+            return new Page<>();
+        }
+        //查询渠道的用户
+        List<Long> userIdList = userService.list(new LambdaQueryWrapper<User>()
+                .in(User::getAgentId, tuple2.getT1())
+        ).stream().map(User::getId).collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(userIdList)) {
+            return new Page<>();
+        }
+        if (param.getUserId() != null && !userIdList.contains(param.getUserId())) {
+            return new Page<>();
+        }
+        return page(param.toPage(), new QueryWrapper<GameRemitLog>().lambda()
+                .in(CollectionUtils.isNotEmpty(userIdList), GameRemitLog::getUserId, userIdList)
+                .eq(param.getUserId() != null, GameRemitLog::getUserId, param.getUserId())
+                .eq(param.getGameId() != null, GameRemitLog::getGameId, param.getGameId())
+                .eq(Strings.isNotBlank(param.getMerchantOrderNo()), GameRemitLog::getMerchantOrderNo, param.getMerchantOrderNo())
+                .ge(param.getStartTime() != null, GameRemitLog::getCreatedTime, param.getStartTime() == null ? null : LocalDateTime.of(param.getStartTime(), LocalTime.MIN))
+                .le(param.getEndTime() != null, GameRemitLog::getCreatedTime, param.getEndTime() == null ? null : LocalDateTime.of(param.getEndTime(), LocalTime.MAX))
+                .orderByDesc(GameRemitLog::getCreatedTime)
+        ).convert(this::toVo);
+    }
+
+    private GameRemitLogVO toVo(GameRemitLog gameRemitLog) {
+        if (Objects.isNull(gameRemitLog)) {
+            return null;
+        }
+        GameRemitLogVO gameRemitLogVO = BeanUtil.copy(gameRemitLog, GameRemitLogVO.class);
+        GameDTO gameDTO = gameService.getById(gameRemitLog.getGameId());
+        gameRemitLogVO.setGameName(gameDTO == null ? null : gameDTO.getName());
+        return gameRemitLogVO;
+    }
+}

+ 114 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameServerServiceImpl.java

@@ -0,0 +1,114 @@
+package com.zanxiang.game.module.manage.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.erp.security.util.SecurityUtil;
+import com.zanxiang.game.module.base.pojo.enums.DeleteEnum;
+import com.zanxiang.game.module.manage.pojo.dto.GameDTO;
+import com.zanxiang.game.module.manage.pojo.params.GameServerAddUpdateParam;
+import com.zanxiang.game.module.manage.pojo.params.GameServerListParam;
+import com.zanxiang.game.module.manage.pojo.vo.GameServerListVO;
+import com.zanxiang.game.module.manage.service.IGameServerService;
+import com.zanxiang.game.module.manage.service.IGameService;
+import com.zanxiang.game.module.mybatis.entity.GameServer;
+import com.zanxiang.game.module.mybatis.mapper.GameServerMapper;
+import com.zanxiang.module.util.bean.BeanUtil;
+import com.zanxiang.module.util.exception.BaseException;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.logging.log4j.util.Strings;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-07
+ * @description : 游戏区服
+ */
+@Slf4j
+@Service
+public class GameServerServiceImpl extends ServiceImpl<GameServerMapper, GameServer> implements IGameServerService {
+
+    @Autowired
+    private IGameService gameService;
+
+    @Override
+    public List<String> listServerId(Long gameId, String serverName) {
+        if (Strings.isBlank(serverName)) {
+            return Collections.emptyList();
+        }
+        return super.list(new LambdaQueryWrapper<GameServer>()
+                .eq(gameId != null, GameServer::getGameId, gameId)
+                .like(Strings.isNotBlank(serverName), GameServer::getServerName, serverName)
+        ).stream().map(GameServer::getServerId).collect(Collectors.toList());
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean addOrUpdate(GameServerAddUpdateParam param) {
+        //判断单游戏内区服id不可重复
+        if (super.count(new LambdaQueryWrapper<GameServer>()
+                .eq(GameServer::getGameId, param.getGameId())
+                .eq(GameServer::getServerId, param.getServerId())
+                .ne(param.getId() != null, GameServer::getId, param.getId())
+        ) > 0) {
+            throw new BaseException("该游戏区服id已存在, 禁止添加或者修改");
+        }
+        //添加或者更新
+        return super.saveOrUpdate(this.transform(param));
+    }
+
+    private GameServer transform(GameServerAddUpdateParam param) {
+        return GameServer.builder()
+                .id(param.getId())
+                .gameId(param.getGameId())
+                .serverId(param.getServerId())
+                .serverName(param.getServerName())
+                .nickName(param.getNickName())
+                .startTime(param.getStartTime())
+                .isDelete(DeleteEnum.NO.getCode())
+                .createBy(param.getId() == null ? SecurityUtil.getUserId() : null)
+                .createTime(param.getId() == null ? LocalDateTime.now() : null)
+                .updateBy(SecurityUtil.getUserId())
+                .updateTime(LocalDateTime.now())
+                .build();
+    }
+
+    @Override
+    public IPage<GameServerListVO> listOfPage(GameServerListParam param) {
+        return page(param.toPage(), new QueryWrapper<GameServer>().lambda()
+                .eq(param.getGameId() != null, GameServer::getGameId, param.getGameId())
+                .eq(param.getServerId() != null, GameServer::getServerId, param.getServerId())
+                .like(Strings.isNotBlank(param.getServerName()), GameServer::getServerName, param.getServerName())
+                .like(Strings.isNotBlank(param.getNickName()), GameServer::getNickName, param.getNickName())
+                .ge(param.getStartTime() != null, GameServer::getStartTime, param.getStartTime() == null ? null : LocalDateTime.of(param.getStartTime(), LocalTime.MIN))
+                .le(param.getEndTime() != null, GameServer::getStartTime, param.getEndTime() == null ? null : LocalDateTime.of(param.getEndTime(), LocalTime.MAX))
+                .orderByDesc(GameServer::getStartTime)
+        ).convert(this::toVo);
+    }
+
+    private GameServerListVO toVo(GameServer gameServer) {
+        if (Objects.isNull(gameServer)) {
+            return null;
+        }
+        GameServerListVO gameServerListVO = BeanUtil.copy(gameServer, GameServerListVO.class);
+        GameDTO gameDTO = gameService.getById(gameServer.getGameId());
+        gameServerListVO.setGameName(gameDTO == null ? null : gameDTO.getName());
+        return gameServerListVO;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean deleteById(Long id) {
+        return super.removeById(id);
+    }
+}

+ 87 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameUserConfigServiceImpl.java

@@ -0,0 +1,87 @@
+package com.zanxiang.game.module.manage.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.erp.security.util.SecurityUtil;
+import com.zanxiang.game.module.manage.pojo.dto.GameDTO;
+import com.zanxiang.game.module.manage.pojo.params.GameUserConfigAddUpdateParam;
+import com.zanxiang.game.module.manage.pojo.params.GameUserConfigListParam;
+import com.zanxiang.game.module.manage.pojo.vo.GameUserConfigListVO;
+import com.zanxiang.game.module.manage.service.IGameService;
+import com.zanxiang.game.module.manage.service.IGameUserConfigService;
+import com.zanxiang.game.module.mybatis.entity.GameUserConfig;
+import com.zanxiang.game.module.mybatis.mapper.GameUserConfigMapper;
+import com.zanxiang.module.util.bean.BeanUtil;
+import com.zanxiang.module.util.exception.BaseException;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+import java.util.Objects;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-09
+ * @description : 有效用户配置
+ */
+@Slf4j
+@Service
+public class GameUserConfigServiceImpl extends ServiceImpl<GameUserConfigMapper, GameUserConfig> implements IGameUserConfigService {
+
+    @Autowired
+    private IGameService gameService;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean addOrUpdate(GameUserConfigAddUpdateParam param) {
+        //判断游戏配置不可重复
+        if (super.count(new LambdaQueryWrapper<GameUserConfig>()
+                .eq(GameUserConfig::getGameId, param.getGameId())
+                .ne(param.getId() != null, GameUserConfig::getId, param.getId())
+        ) > 0) {
+            throw new BaseException("该游戏已经存在配置, 禁止添加或者修改");
+        }
+        //添加或者更新
+        return super.saveOrUpdate(this.transform(param));
+    }
+
+    private GameUserConfig transform(GameUserConfigAddUpdateParam param) {
+        return GameUserConfig.builder()
+                .id(param.getId())
+                .gameId(param.getGameId())
+                .roleLevel(param.getRoleLevel())
+                .createBy(param.getId() == null ? SecurityUtil.getUserId() : null)
+                .createTime(param.getId() == null ? LocalDateTime.now() : null)
+                .updateBy(SecurityUtil.getUserId())
+                .updateTime(LocalDateTime.now())
+                .build();
+    }
+
+    @Override
+    public IPage<GameUserConfigListVO> listOfPage(GameUserConfigListParam param) {
+        return page(param.toPage(), new QueryWrapper<GameUserConfig>().lambda()
+                .eq(param.getGameId() != null, GameUserConfig::getGameId, param.getGameId())
+                .orderByDesc(GameUserConfig::getCreateTime)
+        ).convert(this::toVo);
+    }
+
+    private GameUserConfigListVO toVo(GameUserConfig gameUserConfig) {
+        if (Objects.isNull(gameUserConfig)) {
+            return null;
+        }
+        GameUserConfigListVO gameUserConfigListVO = BeanUtil.copy(gameUserConfig, GameUserConfigListVO.class);
+        GameDTO gameDTO = gameService.getById(gameUserConfigListVO.getGameId());
+        gameUserConfigListVO.setGameName(gameDTO == null ? null : gameDTO.getName());
+        return gameUserConfigListVO;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean deleteById(Long id) {
+        return super.removeById(id);
+    }
+}

+ 33 - 26
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameUserRoleServiceImpl.java

@@ -12,9 +12,9 @@ import com.zanxiang.game.module.manage.pojo.dto.*;
 import com.zanxiang.game.module.manage.pojo.params.GameUserRoleListParam;
 import com.zanxiang.game.module.manage.pojo.vo.GameUserRoleListVO;
 import com.zanxiang.game.module.manage.pojo.vo.GameUserRoleVO;
-import com.zanxiang.game.module.manage.pojo.vo.GameUserVO;
 import com.zanxiang.game.module.manage.service.*;
 import com.zanxiang.game.module.mybatis.entity.Agent;
+import com.zanxiang.game.module.mybatis.entity.GameServer;
 import com.zanxiang.game.module.mybatis.entity.GameUserRole;
 import com.zanxiang.game.module.mybatis.mapper.GameUserRoleMapper;
 import com.zanxiang.module.util.bean.BeanUtil;
@@ -45,15 +45,15 @@ public class GameUserRoleServiceImpl extends ServiceImpl<GameUserRoleMapper, Gam
     @Autowired
     private IGameService gameService;
 
-    @Autowired
-    private IGameUserService gameUserService;
-
     @Autowired
     private ICpService cpService;
 
     @Autowired
     private IAgentService agentService;
 
+    @Autowired
+    private IGameServerService gameServerService;
+
     @Override
     public GameUserRole getLastGameUserRoleName(Long userId, Long gameId) {
         return super.getOne(new LambdaQueryWrapper<GameUserRole>()
@@ -78,29 +78,27 @@ public class GameUserRoleServiceImpl extends ServiceImpl<GameUserRoleMapper, Gam
         if (CollectionUtils.isEmpty(gameUserRoleList)) {
             return Collections.emptyList();
         }
-        List<GameUserRoleVO> list = new ArrayList<>();
-        gameUserRoleList.forEach(role -> {
+        //玩家信息
+        UserDTO userDTO = userService.getById(userId);
+        //游戏信息
+        GameDTO gameDTO = gameService.getById(userDTO.getGameId());
+        //渠道信息
+        String agentName;
+        if (Objects.equals(userDTO.getAgentId(), Agent.DEFAULT_AGENT)) {
+            agentName = Agent.DEFAULT_AGENT_NAME;
+        } else {
+            Agent agent = agentService.getById(userDTO.getAgentId());
+            agentName = agent.getAgentName();
+        }
+        return gameUserRoleList.stream().map(role -> {
             GameUserRoleVO gameUserRoleVO = BeanUtil.copy(role, GameUserRoleVO.class);
-            if (gameUserRoleVO == null) {
-                return;
-            }
             //设置游戏名称
-            GameDTO gameDTO = gameService.getById(role.getGameId());
-            if (gameDTO != null) {
-                gameUserRoleVO.setGameName(gameDTO.getName());
-                gameUserRoleVO.setGameCategoryName(GameCategoryEnum.getNameByCategory(gameDTO.getCategory()));
-            }
-            //玩家游戏信息
-            GameUserVO gameUserVO = gameUserService.getById(role.getGameUserId());
-            if (gameUserVO != null) {
-                Agent agent = agentService.getById(gameUserVO.getAgentId());
-                if (agent != null) {
-                    gameUserRoleVO.setAgentName(agent.getAgentName());
-                }
-            }
-            list.add(gameUserRoleVO);
-        });
-        return list;
+            gameUserRoleVO.setGameName(gameDTO.getName());
+            gameUserRoleVO.setGameCategoryName(GameCategoryEnum.getNameByCategory(gameDTO.getCategory()));
+            //设置渠道信息
+            gameUserRoleVO.setAgentName(agentName);
+            return gameUserRoleVO;
+        }).collect(Collectors.toList());
     }
 
     @Override
@@ -125,6 +123,8 @@ public class GameUserRoleServiceImpl extends ServiceImpl<GameUserRoleMapper, Gam
         if (userMap != null && userMap.isEmpty()) {
             return new Page<>();
         }
+        //区服筛选
+        List<String> serverIdList = gameServerService.listServerId(param.getGameId(), param.getServerName());
         //相关用户id
         Set<Long> userIdSet = userMap == null ? null : userMap.keySet();
         Map<Long, CpDTO> cpMap = cpService.cpMap();
@@ -132,7 +132,7 @@ public class GameUserRoleServiceImpl extends ServiceImpl<GameUserRoleMapper, Gam
         //执行查询
         return page(param.toPage(), new QueryWrapper<GameUserRole>().lambda()
                 .in(CollectionUtils.isNotEmpty(userIdSet), GameUserRole::getUserId, userIdSet)
-                .like(Strings.isNotBlank(param.getServerName()), GameUserRole::getServerName, param.getServerName())
+                .in(CollectionUtils.isNotEmpty(serverIdList), GameUserRole::getServerId, serverIdList)
                 .like(Strings.isNotBlank(param.getRoleName()), GameUserRole::getRoleName, param.getRoleName())
                 .in(gameMap != null, GameUserRole::getGameId, gameMap != null ? gameMap.keySet() : null)
                 .eq(Strings.isNotBlank(param.getOs()), GameUserRole::getOs, param.getOs())
@@ -193,6 +193,13 @@ public class GameUserRoleServiceImpl extends ServiceImpl<GameUserRoleMapper, Gam
         }
         //注册充值时间差
         gameUserRoleListVO.setRegPayTimeDiff(DateUtils.getRegPayTimeDiff(gameUserRoleListVO.getRegTime(), gameUserRoleListVO.getLastRechargeTime()));
+        //设置源服务器名称
+        GameServer gameServer = gameServerService.getOne(new LambdaQueryWrapper<GameServer>()
+                .eq(GameServer::getGameId, gameUserRole.getGameId())
+                .eq(GameServer::getServerId, gameUserRole.getServerId()));
+        if (gameServer != null) {
+            gameUserRoleListVO.setSourceServerName(gameServer.getServerName());
+        }
         return gameUserRoleListVO;
     }
 }

+ 12 - 1
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/IpBanServiceImpl.java

@@ -7,16 +7,19 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zanxiang.erp.security.util.SecurityUtil;
 import com.zanxiang.game.module.base.pojo.enums.BanStatusEnum;
+import com.zanxiang.game.module.manage.pojo.dto.GameDTO;
 import com.zanxiang.game.module.manage.pojo.params.IpBanAddParam;
 import com.zanxiang.game.module.manage.pojo.params.IpBanListParam;
 import com.zanxiang.game.module.manage.pojo.params.IpBanUpdateParam;
 import com.zanxiang.game.module.manage.pojo.vo.IpBanVO;
+import com.zanxiang.game.module.manage.service.IGameService;
 import com.zanxiang.game.module.manage.service.IIpBanService;
 import com.zanxiang.game.module.mybatis.entity.IpBan;
 import com.zanxiang.game.module.mybatis.mapper.IpBanMapper;
 import com.zanxiang.module.util.bean.BeanUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.logging.log4j.util.Strings;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -35,10 +38,14 @@ import java.util.Objects;
 @Service
 public class IpBanServiceImpl extends ServiceImpl<IpBanMapper, IpBan> implements IIpBanService {
 
+    @Autowired
+    private IGameService gameService;
+
     @Override
     public IPage<IpBanVO> list(IpBanListParam param) {
         return page(param.toPage(), new QueryWrapper<IpBan>().lambda()
                 .eq(Strings.isNotBlank(param.getIp()), IpBan::getIp, param.getIp())
+                .eq(param.getGameId() != null, IpBan::getGameId, param.getGameId())
                 .eq(param.getStatus() != null, IpBan::getStatus, param.getStatus())
                 .ge(param.getBeginDate() != null, IpBan::getBanTime, param.getBeginDate() == null ? null : LocalDateTime.of(param.getBeginDate(), LocalTime.MIN))
                 .le(param.getEndDate() != null, IpBan::getBanTime, param.getEndDate() == null ? null : LocalDateTime.of(param.getEndDate(), LocalTime.MAX))
@@ -50,7 +57,10 @@ public class IpBanServiceImpl extends ServiceImpl<IpBanMapper, IpBan> implements
         if (Objects.isNull(ipBan)) {
             return null;
         }
-        return BeanUtil.copy(ipBan, IpBanVO.class);
+        IpBanVO ipBanVO = BeanUtil.copy(ipBan, IpBanVO.class);
+        GameDTO gameDTO = gameService.getById(ipBanVO.getGameId());
+        ipBanVO.setGameName(gameDTO == null ? null : gameDTO.getName());
+        return ipBanVO;
     }
 
     @Override
@@ -63,6 +73,7 @@ public class IpBanServiceImpl extends ServiceImpl<IpBanMapper, IpBan> implements
             if (ipBan == null) {
                 ipBan = IpBan.builder()
                         .ip(ip)
+                        .gameId(param.getGameId())
                         .banTime(LocalDateTime.now())
                         .status(BanStatusEnum.BAN_STATUS.getStatus())
                         .operateId(SecurityUtil.getUserId())

+ 36 - 18
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/OrderServiceImpl.java

@@ -20,6 +20,7 @@ import com.zanxiang.game.module.manage.pojo.vo.OrderVO;
 import com.zanxiang.game.module.manage.pojo.vo.UserOrderListVO;
 import com.zanxiang.game.module.manage.service.*;
 import com.zanxiang.game.module.mybatis.entity.Agent;
+import com.zanxiang.game.module.mybatis.entity.GameServer;
 import com.zanxiang.game.module.mybatis.entity.Order;
 import com.zanxiang.game.module.mybatis.entity.User;
 import com.zanxiang.game.module.mybatis.mapper.OrderMapper;
@@ -69,6 +70,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     @Autowired
     private IPayMerchantService payMerchantService;
 
+    @Autowired
+    private IGameServerService gameServerService;
+
     @Override
     public IPage<UserOrderListVO> orderList(UserOrderListParam param) {
         //执行查询
@@ -115,13 +119,15 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                     .like(User::getUsername, param.getUsername())
             ).stream().map(User::getId).collect(Collectors.toList());
         }
+        //区服筛选
+        List<String> serverIdList = gameServerService.listServerId(param.getGameId(), param.getServerName());
         //查询订单列表
-        IPage<OrderVO> page = page(param.toPage(), getListWrapper(param, agentIds, userIds, "*")).convert(this::orderToVo);
+        IPage<OrderVO> page = page(param.toPage(), getListWrapper(param, agentIds, userIds, serverIdList, "*")).convert(this::toVO);
         if (page.getTotal() == 0) {
             return new OrderListVO(param.toPage().getSize());
         }
         //统计:订单金额与实付金额
-        Order total = super.getOne(getListWrapper(param, agentIds, userIds, "IFNULL(SUM(amount),0) amount, IFNULL(SUM(real_amount),0) realAmount"));
+        Order total = super.getOne(getListWrapper(param, agentIds, userIds, serverIdList, "IFNULL(SUM(amount),0) amount, IFNULL(SUM(real_amount),0) realAmount"));
         HashMap<String, BigDecimal> totalData = new HashMap<>(2);
         if (total == null) {
             totalData.put("totalOrderAmount", new BigDecimal("0.00"));
@@ -157,6 +163,27 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         return orderListVO;
     }
 
+    private OrderVO toVO(Order order) {
+        if (Objects.isNull(order)) {
+            return null;
+        }
+        OrderVO orderVO = BeanUtil.copy(order, OrderVO.class);
+        //原始区服名称
+        GameServer gameServer = gameServerService.getOne(new LambdaQueryWrapper<GameServer>()
+                .eq(GameServer::getGameId, order.getGameId())
+                .eq(GameServer::getServerId, order.getServerId()));
+        if (gameServer != null) {
+            orderVO.setSourceServerName(gameServer.getServerName());
+        }
+        //支付渠道, 场景
+        orderVO.setPayWayName(PayWayEnum.getNameByPayWayId(orderVO.getPayWayId()));
+        orderVO.setPayDeviceName(PayDeviceEnum.getByPayWayId(orderVO.getPayDeviceId()));
+        //注册充值时间差
+        orderVO.setRegPayTimeDiff(DateUtils.getRegPayTimeDiff(orderVO.getRegTime(), orderVO.getPayTime()));
+        //返回
+        return orderVO;
+    }
+
     private void toVO(OrderVO orderVO, Map<Long, UserDTO> userMap, Map<Long, GameDTO> gameMap, Map<Long, CpDTO> cpMap,
                       Map<Long, AgentDTO> agentMap, Map<String, PayMerchantDTO> payMerchantMap) {
         orderVO.setDateTime(orderVO.getCreateTime().toLocalDate());
@@ -194,21 +221,18 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             orderVO.setGameCategoryId(gameCategoryEnum == null ? null : gameCategoryEnum.getId());
             orderVO.setGameCategoryName(gameCategoryEnum == null ? null : gameCategoryEnum.getName());
         }
-        //支付渠道, 场景
-        orderVO.setPayWayName(PayWayEnum.getNameByPayWayId(orderVO.getPayWayId()));
-        orderVO.setPayDeviceName(PayDeviceEnum.getByPayWayId(orderVO.getPayDeviceId()));
-        //注册充值时间差
-        orderVO.setRegPayTimeDiff(DateUtils.getRegPayTimeDiff(orderVO.getRegTime(), orderVO.getPayTime()));
     }
 
-    private LambdaQueryWrapper<Order> getListWrapper(OrderParam param, List<Long> agentIdList, List<Long> userIdList, String select) {
+    private LambdaQueryWrapper<Order> getListWrapper(OrderParam param, List<Long> agentIdList, List<Long> userIdList,
+                                                     List<String> serverIdList, String select) {
         return new QueryWrapper<Order>().select(select).lambda()
                 .eq(Strings.isNotBlank(param.getOrderId()), Order::getOrderId, param.getOrderId())
                 .eq(Strings.isNotBlank(param.getCpOrderId()), Order::getCpOrderId, param.getCpOrderId())
                 .eq(Strings.isNotBlank(param.getMerchantOrderNo()), Order::getMerchantOrderNo, param.getMerchantOrderNo())
                 .eq(Strings.isNotBlank(param.getUserId()), Order::getUserId, param.getUserId())
                 .in(CollectionUtils.isNotEmpty(userIdList), Order::getUserId, userIdList)
-                .like(Strings.isNotBlank(param.getServerName()), Order::getServerName, param.getServerName())
+                .in(CollectionUtils.isNotEmpty(serverIdList), Order::getServerId, serverIdList)
+                .like(CollectionUtils.isEmpty(serverIdList) && Strings.isNotBlank(param.getServerName()), Order::getServerName, param.getServerName())
                 .like(Strings.isNotBlank(param.getRoleName()), Order::getRoleName, param.getRoleName())
                 .eq(param.getCpId() != null, Order::getCpId, param.getCpId())
                 .eq(param.getGameId() != null, Order::getGameId, param.getGameId())
@@ -233,13 +257,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 .orderByDesc(Order::getCreateTime);
     }
 
-    private OrderVO orderToVo(Order order) {
-        if (Objects.isNull(order)) {
-            return null;
-        }
-        return BeanUtil.copy(order, OrderVO.class);
-    }
-
     @Override
     public void getOrderExcel(OrderParam param, HttpServletResponse response) {
         if (!SecurityUtil.isAdmin()) {
@@ -256,11 +273,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                     .like(User::getUsername, param.getUsername()));
         }
         final List<Long> userIds = userList.stream().map(User::getId).collect(Collectors.toList());
+        List<String> serverIdList = gameServerService.listServerId(param.getGameId(), param.getServerName());
         //excel下载
         WebExcelUtil.httpExport(response, "游戏订单", OrderExcelVO.class, ((pageNumber, pageSize) -> {
             //查询订单
-            List<OrderVO> orderVOList = page(new Page<>(pageNumber, pageSize), this.getListWrapper(param, agentIds, userIds, "*"))
-                    .convert(this::orderToVo).getRecords();
+            List<OrderVO> orderVOList = page(new Page<>(pageNumber, pageSize), this.getListWrapper(param, agentIds, userIds, serverIdList, "*"))
+                    .convert(this::toVO).getRecords();
             //商户列表
             Map<String, PayMerchantDTO> payMerchantMap = payMerchantService.payMerchantMap();
             //cp信息

+ 11 - 4
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/UserCardServiceImpl.java

@@ -7,13 +7,11 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zanxiang.game.module.manage.pojo.dto.AgentDTO;
+import com.zanxiang.game.module.manage.pojo.dto.GameDTO;
 import com.zanxiang.game.module.manage.pojo.dto.UserDTO;
 import com.zanxiang.game.module.manage.pojo.params.UserNameAuthListParam;
 import com.zanxiang.game.module.manage.pojo.vo.UserCardVO;
-import com.zanxiang.game.module.manage.service.IAgentService;
-import com.zanxiang.game.module.manage.service.IGameUserRoleService;
-import com.zanxiang.game.module.manage.service.IUserCardService;
-import com.zanxiang.game.module.manage.service.IUserService;
+import com.zanxiang.game.module.manage.service.*;
 import com.zanxiang.game.module.mybatis.entity.GameUserRole;
 import com.zanxiang.game.module.mybatis.entity.UserCard;
 import com.zanxiang.game.module.mybatis.mapper.UserCardMapper;
@@ -49,6 +47,9 @@ public class UserCardServiceImpl extends ServiceImpl<UserCardMapper, UserCard> i
     @Autowired
     private IGameUserRoleService gameUserRoleService;
 
+    @Autowired
+    private IGameService gameService;
+
     @Override
     public IPage<UserCardVO> getUserCardList(UserNameAuthListParam param) {
         //渠道获取
@@ -84,6 +85,12 @@ public class UserCardServiceImpl extends ServiceImpl<UserCardMapper, UserCard> i
         UserDTO userDTO = userService.getById(userCard.getUserId());
         GameUserRole gameUserRole = gameUserRoleService.getLastGameUserRoleName(userDTO.getId(), userDTO.getGameId());
         userCardVO.setLastGameRoleName(gameUserRole == null ? null : gameUserRole.getRoleName());
+        //游戏名称
+        userCardVO.setGameId(gameUserRole == null ? null : gameUserRole.getGameId());
+        if (userCardVO.getGameId() != null) {
+            GameDTO gameDTO = gameService.getById(userCardVO.getGameId());
+            userCardVO.setGameName(gameDTO == null ? null : gameDTO.getName());
+        }
         return userCardVO;
     }
 

+ 13 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/UserServiceImpl.java

@@ -39,6 +39,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import reactor.util.function.Tuple2;
 
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
@@ -106,6 +107,11 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         h5User.setMobile(mobile);
         h5User.setRelationUserId(user.getId());
         h5User.setRelationCreateTime(LocalDateTime.now());
+        //充值统计数据归零设置
+        h5User.setSessionKey(null);
+        h5User.setRechargeCount(0);
+        h5User.setRechargeMoney(BigDecimal.ZERO);
+        h5User.setLastRechargeTime(null);
         super.save(h5User);
         //复制玩家信息
         GameUser gameUser = gameUserService.getOne(new LambdaQueryWrapper<GameUser>()
@@ -250,6 +256,13 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         userListVO.setLastGameRoleName(gameUserRole == null ? null : gameUserRole.getRoleName());
         //注册充值时间差
         userListVO.setRegPayTimeDiff(DateUtils.getRegPayTimeDiff(userListVO.getCreateTime(), userListVO.getLastRechargeTime()));
+        //设置关联游戏名称
+        if (userListVO.getRelationUserId() != null) {
+            User relationUser = super.getById(userListVO.getRelationUserId());
+            GameDTO relationGame = gameService.getById(relationUser.getGameId());
+            userListVO.setRelationGameId(relationGame.getId());
+            userListVO.setRelationGameName(relationGame.getName());
+        }
         //返回
         return userListVO;
     }

+ 5 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/GameRemitLog.java

@@ -34,6 +34,11 @@ public class GameRemitLog implements Serializable {
      */
     private Long userId;
 
+    /**
+     * 渠道id
+     */
+    private Long agentId;
+
     /**
      * 游戏id
      */

+ 81 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/GameServer.java

@@ -0,0 +1,81 @@
+package com.zanxiang.game.module.mybatis.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.*;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-07
+ * @description : 游戏区服
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString
+@Builder
+@TableName("t_game_server")
+public class GameServer implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 游戏id
+     */
+    private Long gameId;
+
+    /**
+     * 区服id
+     */
+    private String serverId;
+
+    /**
+     * 区服名称
+     */
+    private String serverName;
+
+    /**
+     * 区服冠名
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private String nickName;
+
+    /**
+     * 开服时间
+     */
+    private LocalDateTime startTime;
+
+    /**
+     * 1 删除  0 正常
+     */
+    @TableLogic
+    private Integer isDelete;
+
+    /**
+     * 创建者
+     */
+    private Long createBy;
+
+    /**
+     * 更新者
+     */
+    private Long updateBy;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+}

+ 68 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/GameUserConfig.java

@@ -0,0 +1,68 @@
+package com.zanxiang.game.module.mybatis.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-08
+ * @description : 有效用户配置
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString
+@Builder
+@TableName("t_game_user_config")
+public class GameUserConfig implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 游戏id
+     */
+    private Long gameId;
+
+    /**
+     * 游戏角色等级
+     */
+    private Long roleLevel;
+
+    /**
+     * 1 删除  0 正常
+     */
+    @TableLogic
+    private Integer isDelete;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 创建者
+     */
+    private Long createBy;
+
+    /**
+     * 更新者
+     */
+    private Long updateBy;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+}

+ 5 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/IpBan.java

@@ -32,6 +32,11 @@ public class IpBan implements Serializable {
      */
     private String ip;
 
+    /**
+     * 游戏id
+     */
+    private Long gameId;
+
     /**
      * 封禁时间
      */

+ 10 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/UserCard.java

@@ -35,6 +35,11 @@ public class UserCard implements Serializable {
      */
     private Long userId;
 
+    /**
+     * 渠道id
+     */
+    private Long agentId;
+
     /**
      * 用户名
      */
@@ -45,6 +50,11 @@ public class UserCard implements Serializable {
      */
     private String nickname;
 
+    /**
+     * 游戏id
+     */
+    private Long gameId;
+
     /**
      * 注册时间
      */

+ 12 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/GameServerMapper.java

@@ -0,0 +1,12 @@
+package com.zanxiang.game.module.mybatis.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zanxiang.game.module.mybatis.entity.GameServer;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-07
+ * @description : 游戏区服
+ */
+public interface GameServerMapper extends BaseMapper<GameServer> {
+}

+ 12 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/GameUserConfigMapper.java

@@ -0,0 +1,12 @@
+package com.zanxiang.game.module.mybatis.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zanxiang.game.module.mybatis.entity.GameUserConfig;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-08
+ * @description : 有效用户配置
+ */
+public interface GameUserConfigMapper extends BaseMapper<GameUserConfig> {
+}

+ 6 - 0
game-module/game-module-sdk/pom.xml

@@ -127,6 +127,12 @@
             <artifactId>springfox-swagger-ui</artifactId>
             <version>${swagger2.ui.version}</version>
         </dependency>
+        <!-- kafka -->
+        <dependency>
+            <groupId>org.apache.kafka</groupId>
+            <artifactId>kafka-clients</artifactId>
+            <version>2.2.1</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 1 - 1
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/SDKApplication.java

@@ -23,7 +23,7 @@ public class SDKApplication {
 
     public static void main(String[] args) {
         SpringApplication.run(SDKApplication.class, args);
-        System.out.println("赞象SDK服务启动成功 <解决短信验证码问题> ( ´・・)ノ(._.`) \n" +
+        System.out.println("赞象SDK服务启动成功 <米大师支付增加兑换比例> ( ´・・)ノ(._.`) \n" +
                 " ___________ _   __\n" +
                 "/  ___|  _  \\ | / /\n" +
                 "\\ `--.| | | | |/ / \n" +

+ 41 - 0
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/config/KafkaConfig.java

@@ -0,0 +1,41 @@
+package com.zanxiang.game.module.sdk.config;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.kafka.clients.producer.KafkaProducer;
+import org.apache.kafka.clients.producer.ProducerConfig;
+import org.apache.kafka.common.serialization.StringSerializer;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.net.InetAddress;
+import java.util.Properties;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-09-28
+ * @description : kafka配置
+ */
+@Slf4j
+@Configuration
+public class KafkaConfig {
+
+    @Value("${spring.kafka.game-sdk.bootstrap-servers}")
+    private String gameSdkKafkaSevers;
+
+    @Bean("gameSdkKafkaProducer")
+    public KafkaProducer<String, String> gameKafkaProducer() {
+        String clientId = "UNKNOWN";
+        try {
+            clientId = InetAddress.getLocalHost().getHostAddress();
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        Properties props = new Properties();
+        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, gameSdkKafkaSevers);
+        props.put(ProducerConfig.CLIENT_ID_CONFIG, clientId);
+        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
+        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
+        return new KafkaProducer<>(props);
+    }
+}

+ 1 - 5
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/controller/PayController.java

@@ -7,7 +7,6 @@ import com.zanxiang.game.module.sdk.pojo.param.ProductPayParam;
 import com.zanxiang.game.module.sdk.pojo.param.UserData;
 import com.zanxiang.game.module.sdk.pojo.vo.PayParamVO;
 import com.zanxiang.game.module.sdk.service.IOrderPayService;
-import com.zanxiang.game.module.sdk.service.pay.MiPayService;
 import com.zanxiang.module.util.JsonUtil;
 import com.zanxiang.module.util.pojo.ResultVO;
 import io.swagger.annotations.Api;
@@ -38,9 +37,6 @@ public class PayController {
     @Autowired
     private IOrderPayService orderPayService;
 
-    @Autowired
-    private MiPayService miPayService;
-
     @UnSignCheck
     @ApiOperation(value = "获取客服支付参数")
     @GetMapping(value = "/param/applet")
@@ -82,7 +78,7 @@ public class PayController {
         return orderPayService.notify(request, response, PayWayEnum.WX_PAY.getPayWayId());
     }
 
-    @ApiOperation(value = "米大师支付异步回调")
+    @ApiOperation(value = "米大师支付异步回调<接口已弃用>")
     @RequestMapping(value = "/miPayNotify", method = RequestMethod.GET)
     public ResultVO<Map> miPayNotify(@RequestParam String orderId, @ValidLogin UserData userData) {
         //返回参数

+ 7 - 0
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/controller/UserController.java

@@ -106,4 +106,11 @@ public class UserController {
         return ResultVO.ok(result);
     }
 
+    @ApiOperation(value = "用户活跃信息上报")
+    @PostMapping("/active/call/role")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
+    public ResultVO<Boolean> gameRoleActiveCall(@Validated @RequestBody GameRoleActiveCallParam param, @ValidLogin UserData userData) {
+        return ResultVO.ok(gameUserRoleService.gameRoleActiveCall(userData, param));
+    }
+
 }

Some files were not shown because too many files changed in this diff