瀏覽代碼

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

root 1 年之前
父節點
當前提交
6d97b27f7d
共有 27 個文件被更改,包括 4223 次插入644 次删除
  1. 7 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameOceanengineOrderLogDTO.java
  2. 7 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameOceanengineUserLogDTO.java
  3. 8 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameTencentMiniGameOrderDTO.java
  4. 8 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameTencentMiniGameUserDTO.java
  5. 8 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameTencentOrderDTO.java
  6. 7 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameTencentUserDTO.java
  7. 3 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineOrderLogServiceImpl.java
  8. 3 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineUserLogServiceImpl.java
  9. 5 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameOrderServiceImpl.java
  10. 5 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameUserServiceImpl.java
  11. 4 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentOrderServiceImpl.java
  12. 3 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentUserServiceImpl.java
  13. 17 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/AdsGameServerController.java
  14. 13 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/AdsOrderDetailListDTO.java
  15. 12 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/AdsOrderDetailTotalDTO.java
  16. 59 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GameServerSumDayDTO.java
  17. 46 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GameServerSumDayTotalDTO.java
  18. 368 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsGameServerSumDay.java
  19. 12 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/AdsOrderDetailVO.java
  20. 1026 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameServerSumDayTotalVO.java
  21. 1069 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameServerSumDayVO.java
  22. 18 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IGameServerService.java
  23. 44 10
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/AdsOrderDetailService.java
  24. 584 160
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameServerServiceImpl.java
  25. 129 62
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/PlayerDataServiceImpl.java
  26. 753 412
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/RoleManageServiceImpl.java
  27. 5 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/AgentChoiceVO.java

+ 7 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameOceanengineOrderLogDTO.java

@@ -9,6 +9,7 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 /**
@@ -43,6 +44,12 @@ public class GameOceanengineOrderLogDTO extends BaseListDTO<GameOceanengineOrder
     @ApiModelProperty("回传状态")
     private Integer backStatus;
 
+    @ApiModelProperty("注册时间")
+    private LocalDate regTimeBegin;
+
+    @ApiModelProperty("注册时间")
+    private LocalDate regTimeEnd;
+
     @ApiModelProperty("充值到支付的间隔时间(分)")
     private Long regPayIntervalTimeMin;
 

+ 7 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameOceanengineUserLogDTO.java

@@ -9,6 +9,7 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 /**
@@ -42,4 +43,10 @@ public class GameOceanengineUserLogDTO extends BaseListDTO<GameOceanengineUserLo
 
     @ApiModelProperty("回传状态")
     private Integer backStatus;
+
+    @ApiModelProperty("注册时间")
+    private LocalDate activeTimeBegin;
+
+    @ApiModelProperty("注册时间")
+    private LocalDate activeTimeEnd;
 }

+ 8 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameTencentMiniGameOrderDTO.java

@@ -8,6 +8,8 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import java.time.LocalDate;
+
 /**
  * <p>
  * 游戏腾讯订单表
@@ -80,4 +82,10 @@ public class GameTencentMiniGameOrderDTO extends BaseListDTO<GameTencentMiniGame
 
     @ApiModelProperty("是否是首单")
     private Boolean isFirstOrder;
+
+    @ApiModelProperty("注册时间")
+    private LocalDate regTimeBegin;
+
+    @ApiModelProperty("注册时间")
+    private LocalDate regTimeEnd;
 }

+ 8 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameTencentMiniGameUserDTO.java

@@ -8,6 +8,8 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import java.time.LocalDate;
+
 /**
  * 游戏腾讯用户表
  */
@@ -33,4 +35,10 @@ public class GameTencentMiniGameUserDTO extends BaseListDTO<GameTencentMiniGameU
 
     @ApiModelProperty("回传状态")
     private Integer backStatus;
+
+    @ApiModelProperty("注册时间")
+    private LocalDate activeTimeBegin;
+
+    @ApiModelProperty("注册时间")
+    private LocalDate activeTimeEnd;
 }

+ 8 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameTencentOrderDTO.java

@@ -8,6 +8,8 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import java.time.LocalDate;
+
 /**
  * <p>
  * 游戏腾讯订单表
@@ -86,4 +88,10 @@ public class GameTencentOrderDTO extends BaseListDTO<GameTencentOrder> {
 
     @ApiModelProperty("是否是首单")
     private Boolean isFirstOrder;
+
+    @ApiModelProperty("注册时间")
+    private LocalDate regTimeBegin;
+
+    @ApiModelProperty("注册时间")
+    private LocalDate regTimeEnd;
 }

+ 7 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameTencentUserDTO.java

@@ -9,6 +9,7 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 /**
@@ -39,4 +40,10 @@ public class GameTencentUserDTO extends BaseListDTO<GameTencentUser> {
 
     @ApiModelProperty("数据源ID")
     private Long userActionSetId;
+
+    @ApiModelProperty("注册时间")
+    private LocalDate activeTimeBegin;
+
+    @ApiModelProperty("注册时间")
+    private LocalDate activeTimeEnd;
 }

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

@@ -35,6 +35,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -253,6 +254,8 @@ public class GameOceanengineOrderLogServiceImpl extends ServiceImpl<GameOceaneng
     public IPage<GameOceanengineOrderLogVO> oceanengineOrderLogList(GameOceanengineOrderLogDTO dto) {
         IPage<GameOceanengineOrderLog> page = page(dto.toPage(), new LambdaQueryWrapper<GameOceanengineOrderLog>()
                 .eq(StringUtils.isNotBlank(dto.getAgentKey()), GameOceanengineOrderLog::getAgentKey, dto.getAgentKey())
+                .ge(dto.getRegTimeBegin() != null, GameOceanengineOrderLog::getRegTime, dto.getRegTimeBegin() == null ? null : LocalDateTime.of(dto.getRegTimeBegin(), LocalTime.MIDNIGHT))
+                .le(dto.getRegTimeEnd() != null, GameOceanengineOrderLog::getRegTime, dto.getRegTimeEnd() == null ? null : LocalDateTime.of(dto.getRegTimeEnd(), LocalTime.MAX))
                 .eq(null != dto.getGameId(), GameOceanengineOrderLog::getGameId, dto.getGameId())
                 .eq(null != dto.getAccountId(), GameOceanengineOrderLog::getAccountId, dto.getAccountId())
                 .eq(StringUtils.isNotBlank(dto.getAppId()), GameOceanengineOrderLog::getAppId, dto.getAppId())

+ 3 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineUserLogServiceImpl.java

@@ -32,6 +32,7 @@ import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -66,6 +67,8 @@ public class GameOceanengineUserLogServiceImpl extends ServiceImpl<GameOceanengi
     public IPage<GameOceanengineUserLogVO> oceanengineUserLogList(GameOceanengineUserLogDTO dto) {
         IPage<GameOceanengineUserLog> page = page(dto.toPage(), new LambdaQueryWrapper<GameOceanengineUserLog>()
                 .eq(StringUtils.isNotBlank(dto.getAgentKey()), GameOceanengineUserLog::getAgentKey, dto.getAgentKey())
+                .ge(dto.getActiveTimeBegin() != null, GameOceanengineUserLog::getActiveTime, dto.getActiveTimeBegin() == null ? null : LocalDateTime.of(dto.getActiveTimeBegin(), LocalTime.MIDNIGHT))
+                .le(dto.getActiveTimeEnd() != null, GameOceanengineUserLog::getActiveTime, dto.getActiveTimeEnd() == null ? null : LocalDateTime.of(dto.getActiveTimeEnd(), LocalTime.MAX))
                 .eq(null != dto.getGameId(), GameOceanengineUserLog::getGameId, dto.getGameId())
                 .eq(null != dto.getAccountId(), GameOceanengineUserLog::getAccountId, dto.getAccountId())
                 .eq(StringUtils.isNotBlank(dto.getAppId()), GameOceanengineUserLog::getAppId, dto.getAppId())

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

@@ -14,6 +14,7 @@ import com.zanxiang.game.back.base.pojo.enums.OrderStatusEnum;
 import com.zanxiang.game.back.serve.dao.mapper.GameTencentMiniGameOrderMapper;
 import com.zanxiang.game.back.serve.pojo.dto.GameTencentMiniGameOrderDTO;
 import com.zanxiang.game.back.serve.pojo.entity.GameBackPolicy;
+import com.zanxiang.game.back.serve.pojo.entity.GameOceanengineOrderLog;
 import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameOrder;
 import com.zanxiang.game.back.serve.pojo.enums.BackStatusEnum;
 import com.zanxiang.game.back.serve.pojo.enums.BackUnitEnum;
@@ -35,6 +36,8 @@ 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.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -257,6 +260,8 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
     public IPage<GameTencentMiniGameOrderVO> listOfPage(GameTencentMiniGameOrderDTO dto) {
         IPage<GameTencentMiniGameOrder> page = page(dto.toPage(), new LambdaQueryWrapper<GameTencentMiniGameOrder>()
                 .eq(StringUtils.isNotBlank(dto.getAgentKey()), GameTencentMiniGameOrder::getAgentKey, dto.getAgentKey())
+                .ge(dto.getRegTimeBegin() != null, GameTencentMiniGameOrder::getRegisterTime, dto.getRegTimeBegin() == null ? null : LocalDateTime.of(dto.getRegTimeBegin(), LocalTime.MIDNIGHT))
+                .le(dto.getRegTimeEnd() != null, GameTencentMiniGameOrder::getRegisterTime, dto.getRegTimeEnd() == null ? null : LocalDateTime.of(dto.getRegTimeEnd(), LocalTime.MAX))
                 .eq(null != dto.getGameId(), GameTencentMiniGameOrder::getGameId, dto.getGameId())
                 .eq(null != dto.getAdAccountId(), GameTencentMiniGameOrder::getAdAccountId, dto.getAdAccountId())
                 .eq(StringUtils.isNotBlank(dto.getWechatAppId()), GameTencentMiniGameOrder::getWechatAppId, dto.getWechatAppId())

+ 5 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameUserServiceImpl.java

@@ -10,6 +10,7 @@ import com.zanxiang.advertising.tencent.base.rpc.IUserActionSetRpc;
 import com.zanxiang.game.back.serve.dao.mapper.GameTencentMiniGameUserMapper;
 import com.zanxiang.game.back.serve.pojo.dto.GameTencentMiniGameUserDTO;
 import com.zanxiang.game.back.serve.pojo.entity.GameOceanengineOrderLog;
+import com.zanxiang.game.back.serve.pojo.entity.GameOceanengineUserLog;
 import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameBackLog;
 import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameUser;
 import com.zanxiang.game.back.serve.pojo.enums.BackStatusEnum;
@@ -29,6 +30,8 @@ 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.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -68,6 +71,8 @@ public class GameTencentMiniGameUserServiceImpl extends ServiceImpl<GameTencentM
     public IPage<GameTencentMiniGameUserVO> listOfPage(GameTencentMiniGameUserDTO dto) {
         IPage<GameTencentMiniGameUser> page = page(dto.toPage(), new LambdaQueryWrapper<GameTencentMiniGameUser>()
                 .eq(StringUtils.isNotBlank(dto.getAgentKey()), GameTencentMiniGameUser::getAgentKey, dto.getAgentKey())
+                .ge(dto.getActiveTimeBegin() != null, GameTencentMiniGameUser::getRegisterTime, dto.getActiveTimeBegin() == null ? null : LocalDateTime.of(dto.getActiveTimeBegin(), LocalTime.MIDNIGHT))
+                .le(dto.getActiveTimeEnd() != null, GameTencentMiniGameUser::getRegisterTime, dto.getActiveTimeEnd() == null ? null : LocalDateTime.of(dto.getActiveTimeEnd(), LocalTime.MAX))
                 .eq(null != dto.getGameId(), GameTencentMiniGameUser::getGameId, dto.getGameId())
                 .eq(null != dto.getAdAccountId(), GameTencentMiniGameUser::getAdAccountId, dto.getAdAccountId())
                 .eq(StringUtils.isNotBlank(dto.getWechatAppId()), GameTencentMiniGameUser::getWechatAppId, dto.getWechatAppId())

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

@@ -15,6 +15,7 @@ import com.zanxiang.game.back.base.pojo.enums.OrderStatusEnum;
 import com.zanxiang.game.back.serve.pojo.dto.GameTencentOrderDTO;
 import com.zanxiang.game.back.serve.pojo.entity.GameBackPolicy;
 import com.zanxiang.game.back.serve.pojo.entity.GameTencentBackLog;
+import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameOrder;
 import com.zanxiang.game.back.serve.pojo.entity.GameTencentOrder;
 import com.zanxiang.game.back.serve.dao.mapper.GameTencentOrderMapper;
 import com.zanxiang.game.back.serve.pojo.enums.ActionTypeEnum;
@@ -41,6 +42,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -266,6 +268,8 @@ public class GameTencentOrderServiceImpl extends ServiceImpl<GameTencentOrderMap
     @Override
     public IPage<GameTencentOrderVO> tencentOrderLogList(GameTencentOrderDTO dto) {
         IPage<GameTencentOrder> page = page(dto.toPage(), new LambdaQueryWrapper<GameTencentOrder>()
+                .ge(dto.getRegTimeBegin() != null, GameTencentOrder::getRegisterTime, dto.getRegTimeBegin() == null ? null : LocalDateTime.of(dto.getRegTimeBegin(), LocalTime.MIDNIGHT))
+                .le(dto.getRegTimeEnd() != null, GameTencentOrder::getRegisterTime, dto.getRegTimeEnd() == null ? null : LocalDateTime.of(dto.getRegTimeEnd(), LocalTime.MAX))
                 .eq(StringUtils.isNotBlank(dto.getChannel()), GameTencentOrder::getChannel, dto.getChannel())
                 .eq(null != dto.getGameId(), GameTencentOrder::getGameId, dto.getGameId())
                 .eq(null != dto.getAdAccountId(), GameTencentOrder::getAdAccountId, dto.getAdAccountId())

+ 3 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentUserServiceImpl.java

@@ -36,6 +36,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -81,6 +82,8 @@ public class GameTencentUserServiceImpl extends ServiceImpl<GameTencentUserMappe
     public IPage<GameTencentUserVO> tencentUserLogList(GameTencentUserDTO dto) {
         IPage<GameTencentUser> page = page(dto.toPage(), new LambdaQueryWrapper<GameTencentUser>()
                 .eq(StringUtils.isNotBlank(dto.getChannel()), GameTencentUser::getChannel, dto.getChannel())
+                .ge(dto.getActiveTimeBegin() != null, GameTencentUser::getRegisterTime, dto.getActiveTimeBegin() == null ? null : LocalDateTime.of(dto.getActiveTimeBegin(), LocalTime.MIDNIGHT))
+                .le(dto.getActiveTimeEnd() != null, GameTencentUser::getRegisterTime, dto.getActiveTimeEnd() == null ? null : LocalDateTime.of(dto.getActiveTimeEnd(), LocalTime.MAX))
                 .eq(null != dto.getGameId(), GameTencentUser::getGameId, dto.getGameId())
                 .eq(null != dto.getAdAccountId(), GameTencentUser::getAdAccountId, dto.getAdAccountId())
                 .eq(StringUtils.isNotBlank(dto.getWechatAppId()), GameTencentUser::getWechatAppId, dto.getWechatAppId())

+ 17 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/AdsGameServerController.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.GameServerDayDTO;
 import com.zanxiang.game.data.serve.pojo.dto.GameServerDayTotalDTO;
+import com.zanxiang.game.data.serve.pojo.dto.GameServerSumDayDTO;
+import com.zanxiang.game.data.serve.pojo.dto.GameServerSumDayTotalDTO;
 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.GameServerSumDayTotalVO;
+import com.zanxiang.game.data.serve.pojo.vo.GameServerSumDayVO;
 import com.zanxiang.game.data.serve.service.IGameServerService;
 import com.zanxiang.game.data.serve.utils.Page;
 import com.zanxiang.module.util.pojo.ResultVO;
@@ -45,5 +49,18 @@ public class AdsGameServerController {
         return ResultVO.ok(gameServerService.getGameServerDataDayTotal(dto));
     }
 
+    @ApiOperation(value = "游戏区服每日数据")
+    //@PreAuthorize(permissionKey = "gameServer:GameServerSumDay:day")
+    @PostMapping("sum/day")
+    public ResultVO<Page<GameServerSumDayVO>> getGameServerDataSumDay(@RequestBody GameServerSumDayDTO dto) {
+        return ResultVO.ok(gameServerService.getGameServerDataSumDay(dto));
+    }
+
+    @ApiOperation(value = "游戏区服每日数据总计一栏")
+    //@PreAuthorize(permissionKey = "gameServer:GameServerSumDay:dayTotal")
+    @PostMapping("sum/day/total")
+    public ResultVO<GameServerSumDayTotalVO> getGameServerDataSumDayTotal(@RequestBody GameServerSumDayTotalDTO dto) {
+        return ResultVO.ok(gameServerService.getGameServerDataSumDayTotal(dto));
+    }
 
 }

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

@@ -209,4 +209,17 @@ public class AdsOrderDetailListDTO extends BasePage {
      */
     @ApiModelProperty("排序方式")
     private String sortType;
+
+    /**
+     * 计划ID
+     */
+    @ApiModelProperty(notes = "计划ID")
+    private String promotionId;
+
+    /**
+     * 广告ID
+     */
+    @ApiModelProperty(notes = "广告ID")
+    private String projectId;
+
 }

+ 12 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/AdsOrderDetailTotalDTO.java

@@ -197,4 +197,16 @@ public class AdsOrderDetailTotalDTO {
     @ApiModelProperty("SDK来源")
     private String sourceSystem;
 
+    /**
+     * 计划ID
+     */
+    @ApiModelProperty(notes = "计划ID")
+    private String promotionId;
+
+    /**
+     * 广告ID
+     */
+    @ApiModelProperty(notes = "广告ID")
+    private String projectId;
+
 }

+ 59 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GameServerSumDayDTO.java

@@ -0,0 +1,59 @@
+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 GameServerSumDayDTO extends BasePage {
+
+    /**
+     * 开服时间(开始时间)
+     */
+    @ApiModelProperty(value = "开服时间(起始)")
+    private LocalDate beginDate;
+
+    /**
+     * 开服时间(结束时间)
+     */
+    @ApiModelProperty(value = "开服时间(结束)")
+    private LocalDate endDate;
+
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty(value = "游戏ID")
+    private Long gameId;
+
+    /**
+     * SDK来源
+     */
+    @ApiModelProperty(value = "SDK来源")
+    private String sourceSystem;
+
+    /**
+     * 排序字段
+     */
+    @ApiModelProperty(notes = "排序字段")
+    private String sortFiled;
+
+    /**
+     * 排序方式:升序asc;降序desc
+     */
+    @ApiModelProperty(notes = "排序方式:升序asc;降序desc")
+    private String sortType;
+
+}

+ 46 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GameServerSumDayTotalDTO.java

@@ -0,0 +1,46 @@
+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 GameServerSumDayTotalDTO {
+
+    /**
+     * 开服时间(开始时间)
+     */
+    @ApiModelProperty(value = "开服时间(起始)")
+    private LocalDate beginDate;
+
+    /**
+     * 开服时间(结束时间)
+     */
+    @ApiModelProperty(value = "开服时间(结束)")
+    private LocalDate endDate;
+
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty(value = "游戏ID")
+    private Long gameId;
+
+    /**
+     * SDK来源
+     */
+    @ApiModelProperty(value = "SDK来源")
+    private String sourceSystem;
+
+}

+ 368 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsGameServerSumDay.java

@@ -0,0 +1,368 @@
+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(AdsGameServerSumDay.TABLE_NAME)
+@PK({"id"})
+public class AdsGameServerSumDay implements Serializable {
+    private static final long serialVersionUID = 1L;
+    public static final String TABLE_NAME = "ads_game_server_day_sum";
+
+    /**
+     * 主键id
+     */
+    private String id;
+
+    /**
+    * 开服时间
+    */
+    @Column
+    private LocalDate dt;
+    
+    /**
+    * SDK来源
+    */
+    @Column
+    private String sourceSystem;
+    
+    /**
+    * 区服ID
+    */
+    @Column
+    private String serverId;
+    
+    /**
+    * 区服名称
+    */
+    @Column
+    private String serverName;
+    
+    /**
+    * 游戏ID
+    */
+    @Column
+    private Long gameId;
+    
+    /**
+    * 游戏名称
+    */
+    @Column
+    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;
+
+}
+
+

+ 12 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/AdsOrderDetailVO.java

@@ -166,4 +166,16 @@ public class AdsOrderDetailVO {
     @ApiModelProperty(notes = "最近充值时间距今(秒)")
     private Long payUntilNow;
 
+    /**
+     * 计划ID
+     */
+    @ApiModelProperty(notes = "计划ID")
+    private String promotionId;
+
+    /**
+     * 广告ID
+     */
+    @ApiModelProperty(notes = "广告ID")
+    private String projectId;
+
 }

+ 1026 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameServerSumDayTotalVO.java

@@ -0,0 +1,1026 @@
+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 GameServerSumDayTotalVO {
+
+    /**
+     * 滚服累计人数
+     */
+    @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;
+
+    @ApiModelProperty(value = "不展示")
+    private String da30;
+    @ApiModelProperty(value = "不展示")
+    private String da31;
+    @ApiModelProperty(value = "不展示")
+    private String da32;
+    @ApiModelProperty(value = "不展示")
+    private String da33;
+    @ApiModelProperty(value = "不展示")
+    private String da34;
+    @ApiModelProperty(value = "不展示")
+    private String da35;
+    @ApiModelProperty(value = "不展示")
+    private String da36;
+    @ApiModelProperty(value = "不展示")
+    private String da37;
+    @ApiModelProperty(value = "不展示")
+    private String da38;
+    @ApiModelProperty(value = "不展示")
+    private String da39;
+
+    @ApiModelProperty(value = "不展示")
+    private String da40;
+    @ApiModelProperty(value = "不展示")
+    private String da41;
+    @ApiModelProperty(value = "不展示")
+    private String da42;
+    @ApiModelProperty(value = "不展示")
+    private String da43;
+    @ApiModelProperty(value = "不展示")
+    private String da44;
+    @ApiModelProperty(value = "不展示")
+    private String da45;
+    @ApiModelProperty(value = "不展示")
+    private String da46;
+    @ApiModelProperty(value = "不展示")
+    private String da47;
+    @ApiModelProperty(value = "不展示")
+    private String da48;
+    @ApiModelProperty(value = "不展示")
+    private String da49;
+
+    @ApiModelProperty(value = "不展示")
+    private String da50;
+    @ApiModelProperty(value = "不展示")
+    private String da51;
+    @ApiModelProperty(value = "不展示")
+    private String da52;
+    @ApiModelProperty(value = "不展示")
+    private String da53;
+    @ApiModelProperty(value = "不展示")
+    private String da54;
+    @ApiModelProperty(value = "不展示")
+    private String da55;
+    @ApiModelProperty(value = "不展示")
+    private String da56;
+    @ApiModelProperty(value = "不展示")
+    private String da57;
+    @ApiModelProperty(value = "不展示")
+    private String da58;
+    @ApiModelProperty(value = "不展示")
+    private String da59;
+
+    @ApiModelProperty(value = "不展示")
+    private String da60;
+    @ApiModelProperty(value = "不展示")
+    private String da61;
+    @ApiModelProperty(value = "不展示")
+    private String da62;
+    @ApiModelProperty(value = "不展示")
+    private String da63;
+    @ApiModelProperty(value = "不展示")
+    private String da64;
+    @ApiModelProperty(value = "不展示")
+    private String da65;
+    @ApiModelProperty(value = "不展示")
+    private String da66;
+    @ApiModelProperty(value = "不展示")
+    private String da67;
+    @ApiModelProperty(value = "不展示")
+    private String da68;
+    @ApiModelProperty(value = "不展示")
+    private String da69;
+
+    @ApiModelProperty(value = "不展示")
+    private String da70;
+    @ApiModelProperty(value = "不展示")
+    private String da71;
+    @ApiModelProperty(value = "不展示")
+    private String da72;
+    @ApiModelProperty(value = "不展示")
+    private String da73;
+    @ApiModelProperty(value = "不展示")
+    private String da74;
+    @ApiModelProperty(value = "不展示")
+    private String da75;
+    @ApiModelProperty(value = "不展示")
+    private String da76;
+    @ApiModelProperty(value = "不展示")
+    private String da77;
+    @ApiModelProperty(value = "不展示")
+    private String da78;
+    @ApiModelProperty(value = "不展示")
+    private String da79;
+
+    @ApiModelProperty(value = "不展示")
+    private String da80;
+    @ApiModelProperty(value = "不展示")
+    private String da81;
+    @ApiModelProperty(value = "不展示")
+    private String da82;
+    @ApiModelProperty(value = "不展示")
+    private String da83;
+    @ApiModelProperty(value = "不展示")
+    private String da84;
+    @ApiModelProperty(value = "不展示")
+    private String da85;
+    @ApiModelProperty(value = "不展示")
+    private String da86;
+    @ApiModelProperty(value = "不展示")
+    private String da87;
+    @ApiModelProperty(value = "不展示")
+    private String da88;
+    @ApiModelProperty(value = "不展示")
+    private String da89;
+    @ApiModelProperty(value = "不展示")
+    private String da90;
+
+    /**
+     * 区服在第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 m12;
+
+    /**
+     * 区服至今:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @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;
+
+    /**
+     * 区服第31天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第31天")
+    private GameServerTrendVO da31Trend;
+
+    /**
+     * 区服在第32天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第32天")
+    private GameServerTrendVO da32Trend;
+
+    /**
+     * 区服在第33天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第33天")
+    private GameServerTrendVO da33Trend;
+
+    /**
+     * 区服在第34天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第34天")
+    private GameServerTrendVO da34Trend;
+
+    /**
+     * 区服在第35天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第35天")
+    private GameServerTrendVO da35Trend;
+
+    /**
+     * 区服在第36天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第36天")
+    private GameServerTrendVO da36Trend;
+
+    /**
+     * 区服在第37天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第37天")
+    private GameServerTrendVO da37Trend;
+
+    /**
+     * 区服在第38天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第38天")
+    private GameServerTrendVO da38Trend;
+
+    /**
+     * 区服在第39天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第39天")
+    private GameServerTrendVO da39Trend;
+
+    /**
+     * 区服在第40天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第40天")
+    private GameServerTrendVO da40Trend;
+
+    /**
+     * 区服在第41天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第41天")
+    private GameServerTrendVO da41Trend;
+
+    /**
+     * 区服在第42天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第42天")
+    private GameServerTrendVO da42Trend;
+
+    /**
+     * 区服在第43天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第43天")
+    private GameServerTrendVO da43Trend;
+
+    /**
+     * 区服在第44天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第44天")
+    private GameServerTrendVO da44Trend;
+
+    /**
+     * 区服在第45天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第45天")
+    private GameServerTrendVO da45Trend;
+
+    /**
+     * 区服在第46天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第46天")
+    private GameServerTrendVO da46Trend;
+
+    /**
+     * 区服在第47天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第47天")
+    private GameServerTrendVO da47Trend;
+
+    /**
+     * 区服在第48天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第48天")
+    private GameServerTrendVO da48Trend;
+
+    /**
+     * 区服在第49天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第49天")
+    private GameServerTrendVO da49Trend;
+
+    /**
+     * 区服在第50天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第50天")
+    private GameServerTrendVO da50Trend;
+
+    /**
+     * 区服在第51天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第51天")
+    private GameServerTrendVO da51Trend;
+
+    /**
+     * 区服在第52天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第52天")
+    private GameServerTrendVO da52Trend;
+
+    /**
+     * 区服在第53天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第53天")
+    private GameServerTrendVO da53Trend;
+
+    /**
+     * 区服在第54天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第54天")
+    private GameServerTrendVO da54Trend;
+
+    /**
+     * 区服在第55天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第55天")
+    private GameServerTrendVO da55Trend;
+
+    /**
+     * 区服在第56天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第56天")
+    private GameServerTrendVO da56Trend;
+
+    /**
+     * 区服在第57天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第57天")
+    private GameServerTrendVO da57Trend;
+
+    /**
+     * 区服在第58天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第58天")
+    private GameServerTrendVO da58Trend;
+
+    /**
+     * 区服在第59天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第59天")
+    private GameServerTrendVO da59Trend;
+
+    /**
+     * 区服在第60天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第60天")
+    private GameServerTrendVO da60Trend;
+
+    /**
+     * 区服第61天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第61天")
+    private GameServerTrendVO da61Trend;
+
+    /**
+     * 区服在第62天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第62天")
+    private GameServerTrendVO da62Trend;
+
+    /**
+     * 区服在第63天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第63天")
+    private GameServerTrendVO da63Trend;
+
+    /**
+     * 区服在第64天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第64天")
+    private GameServerTrendVO da64Trend;
+
+    /**
+     * 区服在第65天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第65天")
+    private GameServerTrendVO da65Trend;
+
+    /**
+     * 区服在第66天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第66天")
+    private GameServerTrendVO da66Trend;
+
+    /**
+     * 区服在第67天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第67天")
+    private GameServerTrendVO da67Trend;
+
+    /**
+     * 区服在第68天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第68天")
+    private GameServerTrendVO da68Trend;
+
+    /**
+     * 区服在第69天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第69天")
+    private GameServerTrendVO da69Trend;
+
+    /**
+     * 区服在第70天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第70天")
+    private GameServerTrendVO da70Trend;
+
+    /**
+     * 区服在第71天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第71天")
+    private GameServerTrendVO da71Trend;
+
+    /**
+     * 区服在第72天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第72天")
+    private GameServerTrendVO da72Trend;
+
+    /**
+     * 区服在第73天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第73天")
+    private GameServerTrendVO da73Trend;
+
+    /**
+     * 区服在第74天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第74天")
+    private GameServerTrendVO da74Trend;
+
+    /**
+     * 区服在第75天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第75天")
+    private GameServerTrendVO da75Trend;
+
+    /**
+     * 区服在第76天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第76天")
+    private GameServerTrendVO da76Trend;
+
+    /**
+     * 区服在第77天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第77天")
+    private GameServerTrendVO da77Trend;
+
+    /**
+     * 区服在第78天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第78天")
+    private GameServerTrendVO da78Trend;
+
+    /**
+     * 区服在第79天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第79天")
+    private GameServerTrendVO da79Trend;
+
+    /**
+     * 区服在第80天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第80天")
+    private GameServerTrendVO da80Trend;
+
+    /**
+     * 区服在第81天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第81天")
+    private GameServerTrendVO da81Trend;
+
+    /**
+     * 区服在第82天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第82天")
+    private GameServerTrendVO da82Trend;
+
+    /**
+     * 区服在第83天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第83天")
+    private GameServerTrendVO da83Trend;
+
+    /**
+     * 区服在第84天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第84天")
+    private GameServerTrendVO da84Trend;
+
+    /**
+     * 区服在第85天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第85天")
+    private GameServerTrendVO da85Trend;
+
+    /**
+     * 区服在第86天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第86天")
+    private GameServerTrendVO da86Trend;
+
+    /**
+     * 区服在第87天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第87天")
+    private GameServerTrendVO da87Trend;
+
+    /**
+     * 区服在第88天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第88天")
+    private GameServerTrendVO da88Trend;
+
+    /**
+     * 区服在第89天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第89天")
+    private GameServerTrendVO da89Trend;
+
+    /**
+     * 区服在第90天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第90天")
+    private GameServerTrendVO da90Trend;
+
+    /**
+     * 区服在第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 m12Trend;
+
+    /**
+     * 区服至今:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服至今总数据")
+    private GameServerTrendVO totalTrend;
+
+}

+ 1069 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameServerSumDayVO.java

@@ -0,0 +1,1069 @@
+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 GameServerSumDayVO {
+
+    /**
+     * 开服时间
+     */
+    @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;
+
+    @ApiModelProperty(value = "不展示")
+    private String da30;
+    @ApiModelProperty(value = "不展示")
+    private String da31;
+    @ApiModelProperty(value = "不展示")
+    private String da32;
+    @ApiModelProperty(value = "不展示")
+    private String da33;
+    @ApiModelProperty(value = "不展示")
+    private String da34;
+    @ApiModelProperty(value = "不展示")
+    private String da35;
+    @ApiModelProperty(value = "不展示")
+    private String da36;
+    @ApiModelProperty(value = "不展示")
+    private String da37;
+    @ApiModelProperty(value = "不展示")
+    private String da38;
+    @ApiModelProperty(value = "不展示")
+    private String da39;
+
+    @ApiModelProperty(value = "不展示")
+    private String da40;
+    @ApiModelProperty(value = "不展示")
+    private String da41;
+    @ApiModelProperty(value = "不展示")
+    private String da42;
+    @ApiModelProperty(value = "不展示")
+    private String da43;
+    @ApiModelProperty(value = "不展示")
+    private String da44;
+    @ApiModelProperty(value = "不展示")
+    private String da45;
+    @ApiModelProperty(value = "不展示")
+    private String da46;
+    @ApiModelProperty(value = "不展示")
+    private String da47;
+    @ApiModelProperty(value = "不展示")
+    private String da48;
+    @ApiModelProperty(value = "不展示")
+    private String da49;
+
+    @ApiModelProperty(value = "不展示")
+    private String da50;
+    @ApiModelProperty(value = "不展示")
+    private String da51;
+    @ApiModelProperty(value = "不展示")
+    private String da52;
+    @ApiModelProperty(value = "不展示")
+    private String da53;
+    @ApiModelProperty(value = "不展示")
+    private String da54;
+    @ApiModelProperty(value = "不展示")
+    private String da55;
+    @ApiModelProperty(value = "不展示")
+    private String da56;
+    @ApiModelProperty(value = "不展示")
+    private String da57;
+    @ApiModelProperty(value = "不展示")
+    private String da58;
+    @ApiModelProperty(value = "不展示")
+    private String da59;
+
+    @ApiModelProperty(value = "不展示")
+    private String da60;
+    @ApiModelProperty(value = "不展示")
+    private String da61;
+    @ApiModelProperty(value = "不展示")
+    private String da62;
+    @ApiModelProperty(value = "不展示")
+    private String da63;
+    @ApiModelProperty(value = "不展示")
+    private String da64;
+    @ApiModelProperty(value = "不展示")
+    private String da65;
+    @ApiModelProperty(value = "不展示")
+    private String da66;
+    @ApiModelProperty(value = "不展示")
+    private String da67;
+    @ApiModelProperty(value = "不展示")
+    private String da68;
+    @ApiModelProperty(value = "不展示")
+    private String da69;
+
+    @ApiModelProperty(value = "不展示")
+    private String da70;
+    @ApiModelProperty(value = "不展示")
+    private String da71;
+    @ApiModelProperty(value = "不展示")
+    private String da72;
+    @ApiModelProperty(value = "不展示")
+    private String da73;
+    @ApiModelProperty(value = "不展示")
+    private String da74;
+    @ApiModelProperty(value = "不展示")
+    private String da75;
+    @ApiModelProperty(value = "不展示")
+    private String da76;
+    @ApiModelProperty(value = "不展示")
+    private String da77;
+    @ApiModelProperty(value = "不展示")
+    private String da78;
+    @ApiModelProperty(value = "不展示")
+    private String da79;
+
+    @ApiModelProperty(value = "不展示")
+    private String da80;
+    @ApiModelProperty(value = "不展示")
+    private String da81;
+    @ApiModelProperty(value = "不展示")
+    private String da82;
+    @ApiModelProperty(value = "不展示")
+    private String da83;
+    @ApiModelProperty(value = "不展示")
+    private String da84;
+    @ApiModelProperty(value = "不展示")
+    private String da85;
+    @ApiModelProperty(value = "不展示")
+    private String da86;
+    @ApiModelProperty(value = "不展示")
+    private String da87;
+    @ApiModelProperty(value = "不展示")
+    private String da88;
+    @ApiModelProperty(value = "不展示")
+    private String da89;
+    @ApiModelProperty(value = "不展示")
+    private String da90;
+
+    /**
+     * 区服在第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 m12;
+
+    /**
+     * 区服至今:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @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;
+
+    /**
+     * 区服第31天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第31天")
+    private GameServerTrendVO da31Trend;
+
+    /**
+     * 区服在第32天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第32天")
+    private GameServerTrendVO da32Trend;
+
+    /**
+     * 区服在第33天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第33天")
+    private GameServerTrendVO da33Trend;
+
+    /**
+     * 区服在第34天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第34天")
+    private GameServerTrendVO da34Trend;
+
+    /**
+     * 区服在第35天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第35天")
+    private GameServerTrendVO da35Trend;
+
+    /**
+     * 区服在第36天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第36天")
+    private GameServerTrendVO da36Trend;
+
+    /**
+     * 区服在第37天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第37天")
+    private GameServerTrendVO da37Trend;
+
+    /**
+     * 区服在第38天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第38天")
+    private GameServerTrendVO da38Trend;
+
+    /**
+     * 区服在第39天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第39天")
+    private GameServerTrendVO da39Trend;
+
+    /**
+     * 区服在第40天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第40天")
+    private GameServerTrendVO da40Trend;
+
+    /**
+     * 区服在第41天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第41天")
+    private GameServerTrendVO da41Trend;
+
+    /**
+     * 区服在第42天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第42天")
+    private GameServerTrendVO da42Trend;
+
+    /**
+     * 区服在第43天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第43天")
+    private GameServerTrendVO da43Trend;
+
+    /**
+     * 区服在第44天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第44天")
+    private GameServerTrendVO da44Trend;
+
+    /**
+     * 区服在第45天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第45天")
+    private GameServerTrendVO da45Trend;
+
+    /**
+     * 区服在第46天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第46天")
+    private GameServerTrendVO da46Trend;
+
+    /**
+     * 区服在第47天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第47天")
+    private GameServerTrendVO da47Trend;
+
+    /**
+     * 区服在第48天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第48天")
+    private GameServerTrendVO da48Trend;
+
+    /**
+     * 区服在第49天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第49天")
+    private GameServerTrendVO da49Trend;
+
+    /**
+     * 区服在第50天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第50天")
+    private GameServerTrendVO da50Trend;
+
+    /**
+     * 区服在第51天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第51天")
+    private GameServerTrendVO da51Trend;
+
+    /**
+     * 区服在第52天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第52天")
+    private GameServerTrendVO da52Trend;
+
+    /**
+     * 区服在第53天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第53天")
+    private GameServerTrendVO da53Trend;
+
+    /**
+     * 区服在第54天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第54天")
+    private GameServerTrendVO da54Trend;
+
+    /**
+     * 区服在第55天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第55天")
+    private GameServerTrendVO da55Trend;
+
+    /**
+     * 区服在第56天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第56天")
+    private GameServerTrendVO da56Trend;
+
+    /**
+     * 区服在第57天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第57天")
+    private GameServerTrendVO da57Trend;
+
+    /**
+     * 区服在第58天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第58天")
+    private GameServerTrendVO da58Trend;
+
+    /**
+     * 区服在第59天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第59天")
+    private GameServerTrendVO da59Trend;
+
+    /**
+     * 区服在第60天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第60天")
+    private GameServerTrendVO da60Trend;
+
+    /**
+     * 区服第61天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第61天")
+    private GameServerTrendVO da61Trend;
+
+    /**
+     * 区服在第62天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第62天")
+    private GameServerTrendVO da62Trend;
+
+    /**
+     * 区服在第63天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第63天")
+    private GameServerTrendVO da63Trend;
+
+    /**
+     * 区服在第64天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第64天")
+    private GameServerTrendVO da64Trend;
+
+    /**
+     * 区服在第65天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第65天")
+    private GameServerTrendVO da65Trend;
+
+    /**
+     * 区服在第66天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第66天")
+    private GameServerTrendVO da66Trend;
+
+    /**
+     * 区服在第67天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第67天")
+    private GameServerTrendVO da67Trend;
+
+    /**
+     * 区服在第68天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第68天")
+    private GameServerTrendVO da68Trend;
+
+    /**
+     * 区服在第69天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第69天")
+    private GameServerTrendVO da69Trend;
+
+    /**
+     * 区服在第70天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第70天")
+    private GameServerTrendVO da70Trend;
+
+    /**
+     * 区服在第71天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第71天")
+    private GameServerTrendVO da71Trend;
+
+    /**
+     * 区服在第72天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第72天")
+    private GameServerTrendVO da72Trend;
+
+    /**
+     * 区服在第73天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第73天")
+    private GameServerTrendVO da73Trend;
+
+    /**
+     * 区服在第74天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第74天")
+    private GameServerTrendVO da74Trend;
+
+    /**
+     * 区服在第75天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第75天")
+    private GameServerTrendVO da75Trend;
+
+    /**
+     * 区服在第76天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第76天")
+    private GameServerTrendVO da76Trend;
+
+    /**
+     * 区服在第77天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第77天")
+    private GameServerTrendVO da77Trend;
+
+    /**
+     * 区服在第78天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第78天")
+    private GameServerTrendVO da78Trend;
+
+    /**
+     * 区服在第79天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第79天")
+    private GameServerTrendVO da79Trend;
+
+    /**
+     * 区服在第80天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第80天")
+    private GameServerTrendVO da80Trend;
+
+    /**
+     * 区服在第81天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第81天")
+    private GameServerTrendVO da81Trend;
+
+    /**
+     * 区服在第82天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第82天")
+    private GameServerTrendVO da82Trend;
+
+    /**
+     * 区服在第83天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第83天")
+    private GameServerTrendVO da83Trend;
+
+    /**
+     * 区服在第84天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第84天")
+    private GameServerTrendVO da84Trend;
+
+    /**
+     * 区服在第85天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第85天")
+    private GameServerTrendVO da85Trend;
+
+    /**
+     * 区服在第86天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第86天")
+    private GameServerTrendVO da86Trend;
+
+    /**
+     * 区服在第87天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第87天")
+    private GameServerTrendVO da87Trend;
+
+    /**
+     * 区服在第88天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第88天")
+    private GameServerTrendVO da88Trend;
+
+    /**
+     * 区服在第89天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第89天")
+    private GameServerTrendVO da89Trend;
+
+    /**
+     * 区服在第90天:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服第90天")
+    private GameServerTrendVO da90Trend;
+
+    /**
+     * 区服在第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 m12Trend;
+
+    /**
+     * 区服至今:注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/滚服付费占比
+     */
+    @ApiModelProperty(value = "区服至今总数据")
+    private GameServerTrendVO totalTrend;
+
+}

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

@@ -2,8 +2,12 @@ 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.dto.GameServerSumDayDTO;
+import com.zanxiang.game.data.serve.pojo.dto.GameServerSumDayTotalDTO;
 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.GameServerSumDayTotalVO;
+import com.zanxiang.game.data.serve.pojo.vo.GameServerSumDayVO;
 import com.zanxiang.game.data.serve.utils.Page;
 
 public interface IGameServerService {
@@ -22,4 +26,18 @@ public interface IGameServerService {
      */
     GameServerDayTotalVO getGameServerDataDayTotal(GameServerDayTotalDTO dto);
 
+    /**
+     * 游戏区服每日数据
+     * @param dto
+     * @return
+     */
+    Page<GameServerSumDayVO> getGameServerDataSumDay(GameServerSumDayDTO dto);
+
+    /**
+     * 游戏区服每日数据总计
+     * @param dto
+     * @return
+     */
+    GameServerSumDayTotalVO getGameServerDataSumDayTotal(GameServerSumDayTotalDTO dto);
+
 }

+ 44 - 10
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/AdsOrderDetailService.java

@@ -46,6 +46,7 @@ public class AdsOrderDetailService implements IAdsOrderDetailService {
         Tuple2<List<Long>, List<Long>> poerInfo = dataPowerComponent.getPowerInfo();
         List<Long> userIds = dto.getPitcherId() == null ? poerInfo.first : Collections.singletonList(Long.parseLong(dto.getPitcherId()));
         List<Long> gameIds = CollectionUtils.isEmpty(dto.getGameId()) ? poerInfo.second : dto.getGameId();
+
         if (StringUtils.isBlank(dto.getPitcherId()) && !SecurityUtil.isManager()) {
             // 只有管理员才能查看全部数据
             dto.setPitcherId(SecurityUtil.getUserId().toString());
@@ -129,6 +130,14 @@ public class AdsOrderDetailService implements IAdsOrderDetailService {
         if (StringUtils.isNotBlank(dto.getRoleName())) {
             cri.where().andLike("role_name", dto.getRoleName());
         }
+        if (StringUtils.isNotBlank(dto.getPromotionId())) {
+            //计划ID
+            cri.where().andEquals("promotion_id", dto.getPromotionId());
+        }
+        if (StringUtils.isNotBlank(dto.getProjectId())) {
+            //广告ID
+            cri.where().andEquals("project_id", dto.getProjectId());
+        }
 
         //pager
         Pager pager = dto.toPage();
@@ -171,10 +180,6 @@ public class AdsOrderDetailService implements IAdsOrderDetailService {
         Tuple2<List<Long>, List<Long>> poerInfo = dataPowerComponent.getPowerInfo();
         List<Long> userIds = dto.getPitcherId() == null ? poerInfo.first : Collections.singletonList(Long.parseLong(dto.getPitcherId()));
         List<Long> gameIds = CollectionUtils.isEmpty(dto.getGameId()) ? poerInfo.second : dto.getGameId();
-        /*if (StringUtils.isBlank(dto.getPitcherId()) && !SecurityUtil.isManager()) {
-            // 只有管理员才能查看全部数据
-            dto.setPitcherId(SecurityUtil.getUserId().toString());
-        }*/
         Criteria cri = Cnd.cri();
         if (StringUtils.isNotBlank(dto.getSourceSystem())) {
             cri.where().andEquals("source_system", dto.getSourceSystem());
@@ -254,6 +259,14 @@ public class AdsOrderDetailService implements IAdsOrderDetailService {
         if (StringUtils.isNotBlank(dto.getRoleName())) {
             cri.where().andLike("role_name", dto.getRoleName());
         }
+        if (StringUtils.isNotBlank(dto.getPromotionId())) {
+            //计划ID
+            cri.where().andEquals("promotion_id", dto.getPromotionId());
+        }
+        if (StringUtils.isNotBlank(dto.getProjectId())) {
+            //广告ID
+            cri.where().andEquals("project_id", dto.getProjectId());
+        }
 
         Sql sql = Sqls.create(getOrderDetailTotalSql() + cri);
         sql.setCallback(Sqls.callback.entity());
@@ -366,7 +379,9 @@ public class AdsOrderDetailService implements IAdsOrderDetailService {
                 		a.pay_time,  -- 支付时间
                 		TIMESTAMPDIFF(SECOND, b.create_time, a.pay_time) as reg_until_pay, -- 注册充值时间差
                 		TIMESTAMPDIFF(SECOND, a.pay_time, NOW()) as pay_until_now, -- 最近充值时间距今(秒)
-                		IF(a.status = 2, IF(a.create_time = i.create_time, 1, 0), 0) as is_first_recharge -- 是否首充
+                		IF(a.status = 2, IF(a.create_time = i.create_time, 1, 0), 0) as is_first_recharge, -- 是否首充
+                		IF(a.promotion_id = 'null', NULL, a.promotion_id) as promotion_id , -- 计划ID
+                  		IF(a.project_id = 'null' , NULL, a.project_id) as project_id -- 项目ID(广告ID)
                 	FROM dm_game_order.t_game_order a
                 	LEFT JOIN dm_game_order.t_game_user b on a.source_system = b.source_system AND a.user_id = b.id
                 	LEFT JOIN dm_game_order.t_pitcher_agent c on a.source_system = c.source_system AND a.agent_id = c.id
@@ -374,7 +389,12 @@ public class AdsOrderDetailService implements IAdsOrderDetailService {
                 	LEFT JOIN dm_game_order.t_cp e on a.source_system = e.source_system AND a.cp_id = e.id
                 	LEFT JOIN dm_game_order.t_game f on a.source_system = f.source_system AND a.game_id = f.id
                 	LEFT JOIN dm_game_order.t_game g on b.source_system = g.source_system AND b.game_id = g.id
-                	LEFT JOIN dm_game_order.t_game_server_merge h on a.source_system = h.source_system AND a.server_id = h.server_id AND g.super_game_id = h.game_id
+                	LEFT JOIN (
+                	    SELECT
+                            *
+                        FROM dm_game_order.t_game_server_merge
+                        WHERE is_delete = 0
+                	) h on a.source_system = h.source_system AND a.server_id = h.server_id AND g.super_game_id = h.game_id
                 	LEFT JOIN (
                 		SELECT
                 			source_system ,
@@ -445,7 +465,9 @@ public class AdsOrderDetailService implements IAdsOrderDetailService {
                 		a.pay_time,  -- 支付时间
                 		TIMESTAMPDIFF(SECOND, b.create_time, a.pay_time) as reg_until_pay, -- 注册充值时间差
                 		TIMESTAMPDIFF(SECOND, a.pay_time, NOW()) as pay_until_now, -- 最近充值时间距今(秒)
-                		IF(a.status = 2, IF(a.create_time = i.create_time, 1, 0), 0) as is_first_recharge -- 是否首充
+                		IF(a.status = 2, IF(a.create_time = i.create_time, 1, 0), 0) as is_first_recharge, -- 是否首充
+                		IF(a.promotion_id = 'null', NULL, a.promotion_id) as promotion_id , -- 计划ID
+                  		IF(a.project_id = 'null' , NULL, a.project_id) as project_id -- 项目ID(广告ID)
                 	FROM dm_game_order.t_game_order a
                 	LEFT JOIN dm_game_order.t_game_user b on a.source_system = b.source_system AND a.user_id = b.id
                 	LEFT JOIN dm_game_order.t_pitcher_agent c on a.source_system = c.source_system AND a.agent_id = c.id
@@ -453,7 +475,12 @@ public class AdsOrderDetailService implements IAdsOrderDetailService {
                 	LEFT JOIN dm_game_order.t_cp e on a.source_system = e.source_system AND a.cp_id = e.id
                 	LEFT JOIN dm_game_order.t_game f on a.source_system = f.source_system AND a.game_id = f.id
                 	LEFT JOIN dm_game_order.t_game g on b.source_system = g.source_system AND b.game_id = g.id
-                	LEFT JOIN dm_game_order.t_game_server_merge h on a.source_system = h.source_system AND a.server_id = h.server_id AND g.super_game_id = h.game_id
+                	LEFT JOIN (
+                	    SELECT
+                            *
+                        FROM dm_game_order.t_game_server_merge
+                        WHERE is_delete = 0
+                	) h on a.source_system = h.source_system AND a.server_id = h.server_id AND g.super_game_id = h.game_id
                 	LEFT JOIN (
                 		SELECT
                 			source_system ,
@@ -525,7 +552,9 @@ public class AdsOrderDetailService implements IAdsOrderDetailService {
                 		a.pay_time,  -- 支付时间
                 		TIMESTAMPDIFF(SECOND, b.create_time, a.pay_time) as reg_until_pay, -- 注册充值时间差
                 		TIMESTAMPDIFF(SECOND, a.pay_time, NOW()) as pay_until_now, -- 最近充值时间距今(秒)
-                		IF(a.status = 2, IF(a.create_time = i.create_time, 1, 0), 0) as is_first_recharge -- 是否首充
+                		IF(a.status = 2, IF(a.create_time = i.create_time, 1, 0), 0) as is_first_recharge, -- 是否首充
+                		IF(a.promotion_id = 'null', NULL, a.promotion_id) as promotion_id , -- 计划ID
+                  		IF(a.project_id = 'null' , NULL, a.project_id) as project_id -- 项目ID(广告ID)
                 	FROM dm_game_order.t_game_order a
                 	LEFT JOIN dm_game_order.t_game_user b on a.source_system = b.source_system AND a.user_id = b.id
                 	LEFT JOIN dm_game_order.t_pitcher_agent c on a.source_system = c.source_system AND a.agent_id = c.id
@@ -533,7 +562,12 @@ public class AdsOrderDetailService implements IAdsOrderDetailService {
                 	LEFT JOIN dm_game_order.t_cp e on a.source_system = e.source_system AND a.cp_id = e.id
                 	LEFT JOIN dm_game_order.t_game f on a.source_system = f.source_system AND a.game_id = f.id
                 	LEFT JOIN dm_game_order.t_game g on b.source_system = g.source_system AND b.game_id = g.id
-                	LEFT JOIN dm_game_order.t_game_server_merge h on a.source_system = h.source_system AND a.server_id = h.server_id AND g.super_game_id = h.game_id
+                	LEFT JOIN (
+                	    SELECT
+                            *
+                        FROM dm_game_order.t_game_server_merge
+                        WHERE is_delete = 0
+                	) h on a.source_system = h.source_system AND a.server_id = h.server_id AND g.super_game_id = h.game_id
                 	LEFT JOIN (
                 		SELECT
                 			source_system ,

+ 584 - 160
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameServerServiceImpl.java

@@ -4,11 +4,12 @@ import com.google.common.base.CaseFormat;
 import com.zanxiang.game.data.serve.component.DataPowerComponent;
 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.dto.GameServerSumDayDTO;
+import com.zanxiang.game.data.serve.pojo.dto.GameServerSumDayTotalDTO;
 import com.zanxiang.game.data.serve.pojo.entity.AdsGameServerDay;
+import com.zanxiang.game.data.serve.pojo.entity.AdsGameServerSumDay;
 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.pojo.vo.*;
 import com.zanxiang.game.data.serve.service.IGameServerService;
 import com.zanxiang.game.data.serve.utils.Page;
 import lombok.extern.slf4j.Slf4j;
@@ -44,6 +45,8 @@ public class GameServerServiceImpl implements IGameServerService {
     //存储映射的List
     private static final List<Tuple2<Field,Field>> dayNFieldMapList;
     private static final List<Tuple2<Field,Field>> dayNTotalFieldMapList;
+    private static final List<Tuple2<Field,Field>> dayNFieldMapListForServerDay;
+    private static final List<Tuple2<Field,Field>> dayNTotalFieldMapListForServerDay;
 
     static {
         //解析游戏区服的dayN映射
@@ -113,6 +116,75 @@ public class GameServerServiceImpl implements IGameServerService {
                 }
             }
         }
+
+        //解析游戏区服每日的dayN映射
+        Map<String, Field> fieldMapDay = new HashMap<>();
+        List<Field> dayNFieldListForServerDay = new ArrayList<>();
+        Class<?> tempClazzForServerDay = GameServerSumDayVO.class;
+        while (tempClazzForServerDay != null) {
+            //得到所有的field
+            Field[] fields = tempClazzForServerDay.getDeclaredFields();
+            for (Field field : fields) {
+                if (Modifier.isFinal(field.getModifiers()) || Modifier.isStatic(field.getModifiers())) {
+                    continue;
+                }
+                //map里面存储了所有的field
+                fieldMapDay.put(field.getName(), field);
+                if (field.getType() == GameServerTrendVO.class) {
+                    //list里面只存储了 Trend 相关的field
+                    dayNFieldListForServerDay.add(field);
+                }
+            }
+            tempClazzForServerDay = tempClazzForServerDay.getSuperclass();
+        }
+        if (dayNFieldListForServerDay.isEmpty()) {
+            dayNFieldMapListForServerDay = Collections.emptyList();
+        } else {
+            dayNFieldMapListForServerDay = new ArrayList<>(dayNFieldListForServerDay.size());
+            for (Field dayNFieldForServerDay : dayNFieldListForServerDay) {
+                dayNFieldForServerDay.setAccessible(true);
+                Field sourceField = fieldMapDay.get(dayNFieldForServerDay.getName().replace("Trend", ""));
+                sourceField.setAccessible(true);
+                if (sourceField != null) {
+                    dayNFieldMapListForServerDay.add(Tuples.of(sourceField, dayNFieldForServerDay));
+                }
+            }
+        }
+
+        //游戏区服每日总计dayN映射
+        Map<String, Field> fieldTotalMapDay = new HashMap<>();
+        List<Field> dayNTotalFieldListForServerDay = new ArrayList<>();
+        Class<?> tempTotalClazzForServerDay = GameServerSumDayTotalVO.class;
+        while (tempTotalClazzForServerDay != null) {
+            //得到所有的field
+            Field[] fields = tempTotalClazzForServerDay.getDeclaredFields();
+            for (Field field : fields) {
+                if (Modifier.isFinal(field.getModifiers()) || Modifier.isStatic(field.getModifiers())) {
+                    continue;
+                }
+                //map里面存储了所有的field
+                fieldTotalMapDay.put(field.getName(), field);
+                if (field.getType() == GameServerTrendVO.class) {
+                    //list里面只存储了 Trend 相关的field
+                    dayNTotalFieldListForServerDay.add(field);
+                }
+            }
+            tempTotalClazzForServerDay = tempTotalClazzForServerDay.getSuperclass();
+        }
+        if (dayNTotalFieldListForServerDay.isEmpty()) {
+            dayNTotalFieldMapListForServerDay = Collections.emptyList();
+        } else {
+            dayNTotalFieldMapListForServerDay = new ArrayList<>(dayNTotalFieldListForServerDay.size());
+            for (Field dayNTotalFieldForServerDay : dayNTotalFieldListForServerDay) {
+                dayNTotalFieldForServerDay.setAccessible(true);
+                Field sourceField = fieldTotalMapDay.get(dayNTotalFieldForServerDay.getName().replace("Trend", ""));
+                sourceField.setAccessible(true);
+                if (sourceField != null) {
+                    dayNTotalFieldMapListForServerDay.add(Tuples.of(sourceField, dayNTotalFieldForServerDay));
+                }
+            }
+        }
+
     }
 
     @Autowired
@@ -237,6 +309,111 @@ public class GameServerServiceImpl implements IGameServerService {
         return vo;
     }
 
+    /**
+     * 游戏区服每日数据
+     * @param dto GameServerSumDayDTO
+     * @return Page<GameServerSumDayVO>
+     */
+    @Override
+    public Page<GameServerSumDayVO> getGameServerDataSumDay(GameServerSumDayDTO dto) {
+        //添加权限
+        /*com.github.sd4324530.jtuple.Tuple2<List<Long>, List<Long>> poerInfo = dataPowerComponent.getPowerInfo();
+        List<Long> gameIds = dto.getGameId() == null ? poerInfo.second : Collections.singletonList(dto.getGameId());*/
+        //创建查询条件
+        Criteria cri = Cnd.cri();
+        /*if (gameIds != null) {
+            //拼接游戏ID查询条件
+            cri.where().andInList("game_id", gameIds);
+        }*/
+        if (dto.getGameId() != null) {
+            //拼接游戏ID查询条件
+            cri.where().andEquals("game_id", dto.getGameId());
+        }
+        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());
+        }
+        //添加排序条件
+        //拼接排序条件,如果没有排序条件给默认值
+        if (StringUtils.isBlank(dto.getSortType())) {
+            dto.setSortType(OrderByEnum.DESC.getOrderType());
+        }
+        if (StringUtils.isBlank(dto.getSortFiled())) {
+            cri.getOrderBy().orderBy("dt", dto.getSortType());
+            cri.getOrderBy().orderBy("game_id", dto.getSortType());
+        } else {
+            cri.getOrderBy().orderBy(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, dto.getSortFiled()), dto.getSortType());
+        }
+        //创建sql语句查询数据
+        Sql sql = Sqls.create(gameServerSumDaySql() + cri);
+        //设置自定义回传对象
+        sql.setCallback(Sqls.callback.entities());
+        sql.setEntity(dao.getEntity(GameServerSumDayVO.class));
+        //设置分页对象
+        Pager pager = dao.createPager(dto.getPageNum(), dto.getPageSize());
+        sql.setPager(pager);
+        //执行sql
+        dao.execute(sql);
+        //设置总记录数
+        pager.setRecordCount(dao.count(AdsGameServerSumDay.class, cri));
+        List<GameServerSumDayVO> tempList = sql.getList(GameServerSumDayVO.class);
+        List<GameServerSumDayVO> list = tempList.stream().map(vo -> {
+            formatDayNForServerDay(vo);
+            return vo;
+        }).collect(Collectors.toList());
+        //返回结果
+        return new Page<>(list, pager);
+
+    }
+
+    /**
+     * 游戏区服每日数据总计
+     * @param dto GameServerSumDayTotalDTO
+     * @return GameServerSumDayTotalVO
+     */
+    @Override
+    public GameServerSumDayTotalVO getGameServerDataSumDayTotal(GameServerSumDayTotalDTO dto) {
+        /*com.github.sd4324530.jtuple.Tuple2<List<Long>, List<Long>> poerInfo = dataPowerComponent.getPowerInfo();
+        List<Long> gameIds = dto.getGameId() == null ? poerInfo.second : Collections.singletonList(dto.getGameId());*/
+
+        //创建查询条件
+        Criteria cri = Cnd.cri();
+        /*if (gameIds != null) {
+            //拼接游戏ID查询条件
+            cri.where().andInList("game_id", gameIds);
+        }*/
+        if (dto.getGameId() != null) {
+            //拼接游戏ID查询条件
+            cri.where().andEquals("game_id", dto.getGameId());
+        }
+        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(gameServerSumDayTotalSql() + cri);
+        //设置自定义回传对象
+        sql.setCallback(Sqls.callback.entity());
+        sql.setEntity(dao.getEntity(GameServerSumDayTotalVO.class));
+        //执行sql
+        dao.execute(sql);
+        //得到查询的结果
+        GameServerSumDayTotalVO vo = sql.getObject(GameServerSumDayTotalVO.class);
+        if (StringUtils.isNotBlank(vo.getDa1())) {
+            formatTotalDayNForServerDay(vo);
+        }
+        //返回结果
+        return vo;
+    }
+
     /**
      * 将vo中的原始String数据修改为一个对象
      * @param vo 展示给前端的游戏区服数据
@@ -279,6 +456,36 @@ public class GameServerServiceImpl implements IGameServerService {
         });
     }
 
+    /**
+     * 将vo中的原始String数据修改为一个对象(游戏区服每日数据)
+     * @param vo 展示给前端的游戏区服每日数据
+     */
+    private void formatDayNForServerDay(GameServerSumDayVO vo) {
+        if (CollectionUtils.isEmpty(dayNFieldMapListForServerDay)) {
+            return;
+        }
+        dayNFieldMapListForServerDay.forEach(dayNFieldMapForServerDay -> {
+            try {
+                String[] temps = ((String) dayNFieldMapForServerDay.getT1().get(vo)).split("/");
+                dayNFieldMapForServerDay.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 展示给前端的游戏区服数据总计
@@ -383,144 +590,39 @@ public class GameServerServiceImpl implements IGameServerService {
     }
 
     /**
-     * 计算总计一栏的daN数据
-     * 注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/ (游戏区服数据)
-     * DayN活跃人数/ (注册留存数据)/ 注册人数(去除时间未到的数据)
-     * 第N天的新增付费用户/第N天的老活跃用户/第N天的累计付费用户/第N天的累计活跃用户/ (付费留存数据)
-     * 第N天的新增创角用户/第N天的老活跃用户/第N天的累计创角用户/第N天的累计活跃用户/ (创角留存数据)
+     * 将vo中的原始String数据修改为一个对象
+     * @param vo 展示给前端的游戏区服每日数据总计
      */
-    private String trendDay() {
-        StringBuilder daySql = new StringBuilder(StringUtils.EMPTY);
-        //拼接da1-da90 sql
-        for (int i = 1; i <= 90; i++) {
-            daySql.append("""
-                    CONCAT(
-                    	SUM(SPLIT_PART(da%s, '/', 1)), '/',
-                    	SUM(SPLIT_PART(da%s, '/', 2)), '/',
-                    	SUM(SPLIT_PART(da%s, '/', 3)), '/',
-                    	SUM(SPLIT_PART(da%s, '/', 4)), '/',
-                    	SUM(SPLIT_PART(da%s, '/', 5)), '/',
-                    	SUM(SPLIT_PART(da%s, '/', 6)), '/',
-                    	SUM(SPLIT_PART(da%s, '/', 7)), '/',
-                    	SUM(SPLIT_PART(da%s, '/', 8)), '/',
-                    	SUM(SPLIT_PART(da%s, '/', 10)), '/',
-                        SUM(IF(DATE_ADD(dt, INTERVAL %s day) <= Local.now(), total_reg_num, 0)), '/',
-                        SUM(SPLIT_PART(da%s, '/', 12)), '/',
-                        SUM(SPLIT_PART(da%s, '/', 13)), '/',
-                        SUM(IF(DATE_ADD(dt, INTERVAL %s day) <= Local.now(), SPLIT_PART(da%s, '/', 14), 0)), '/',
-                        SUM(IF(DATE_ADD(dt, INTERVAL %s day) <= Local.now(), SPLIT_PART(da%s, '/', 15), 0))
-                    ) as da%s ,
-                    """.formatted(i, i, i, i, i, i, i, i, i, i-1,i ,i, i-1, i, i-1, i, i ));
-        }
-        //拼接m4-m12 sql
-        for (int i = 4; i <= 12; i++) {
-            daySql.append("""
-                    CONCAT(
-                    	SUM(SPLIT_PART(m%s, '/', 1)), '/',
-                    	SUM(SPLIT_PART(m%s, '/', 2)), '/',
-                    	SUM(SPLIT_PART(m%s, '/', 3)), '/',
-                    	SUM(SPLIT_PART(m%s, '/', 4)), '/',
-                    	SUM(SPLIT_PART(m%s, '/', 5)), '/',
-                    	SUM(SPLIT_PART(m%s, '/', 6)), '/',
-                    	SUM(SPLIT_PART(m%s, '/', 7)), '/',
-                    	SUM(SPLIT_PART(m%s, '/', 8)), '/',
-                    	SUM(SPLIT_PART(m%s, '/', 10)), '/',
-                        SUM(IF(DATE_ADD(dt, INTERVAL %s month) <= Local.now(), total_reg_num, 0)), '/',
-                        SUM(SPLIT_PART(m%s, '/', 12)), '/',
-                        SUM(SPLIT_PART(m%s, '/', 13)), '/',
-                        SUM(IF(DATE_ADD(dt, INTERVAL %s month) <= Local.now(), SPLIT_PART(m%s, '/', 14), 0)), '/',
-                        SUM(IF(DATE_ADD(dt, INTERVAL %s month) <= Local.now(), SPLIT_PART(m%s, '/', 15), 0))
-                    ) as m%s ,
-                    """.formatted(i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i));
-        }
-        //拼接total
-        daySql.append("""
-                    CONCAT(
-                    	SUM(SPLIT_PART(total, '/', 1)), '/',
-                    	SUM(SPLIT_PART(total, '/', 2)), '/',
-                    	SUM(SPLIT_PART(total, '/', 3)), '/',
-                    	SUM(SPLIT_PART(total, '/', 4)), '/',
-                    	SUM(SPLIT_PART(total, '/', 5)), '/',
-                    	SUM(SPLIT_PART(total, '/', 6)), '/',
-                    	SUM(SPLIT_PART(total, '/', 7)), '/',
-                    	SUM(SPLIT_PART(total, '/', 8)), '/',
-                    	SUM(SPLIT_PART(total, '/', 10)), '/',
-                        SUM(total_reg_num), '/',
-                        SUM(SPLIT_PART(total, '/', 12)), '/',
-                        SUM(SPLIT_PART(total, '/', 13)), '/',
-                        SUM(SPLIT_PART(total, '/', 14)), '/',
-                        SUM(SPLIT_PART(total, '/', 15))
-                    ) as total
-                    """);
-
-        return daySql.toString();
-    }
-
-    private String trendDayDemo1() {
-        StringBuilder daySql = new StringBuilder(StringUtils.EMPTY);
-        //拼接da1-da90 sql
-        for (int i = 1; i <= 90; i++) {
-            daySql.append("""
-                    CONCAT(
-                    	SUM(da%s[1]), '/',
-                    	SUM(da%s[2]), '/',
-                    	SUM(da%s[3]), '/',
-                    	SUM(da%s[4]), '/',
-                    	SUM(da%s[5]), '/',
-                    	SUM(da%s[6]), '/',
-                    	SUM(da%s[7]), '/',
-                    	SUM(da%s[8]), '/',
-                    	SUM(da%s[10]), '/',
-                        SUM(IF(DATE_ADD(dt, INTERVAL %s day) <= Local.now(), total_reg_num, 0)), '/',
-                        SUM(da%s[12]), '/',
-                        SUM(da%s[13]), '/',
-                        SUM(IF(DATE_ADD(dt, INTERVAL %s day) <= Local.now(), da%s[14], 0)), '/',
-                        SUM(IF(DATE_ADD(dt, INTERVAL %s day) <= Local.now(), da%s[15], 0))
-                    ) as da%s ,
-                    """.formatted(i, i, i, i, i, i, i, i, i, i-1,i ,i, i-1, i, i-1, i, i ));
-        }
-        //拼接m4-m12 sql
-        for (int i = 4; i <= 12; i++) {
-            daySql.append("""
-                    CONCAT(
-                    	SUM(m%s[1]), '/',
-                    	SUM(m%s[2]), '/',
-                    	SUM(m%s[3]), '/',
-                    	SUM(m%s[4]), '/',
-                    	SUM(m%s[5]), '/',
-                    	SUM(m%s[6]), '/',
-                    	SUM(m%s[7]), '/',
-                    	SUM(m%s[8]), '/',
-                    	SUM(m%s[10]), '/',
-                        SUM(IF(DATE_ADD(dt, INTERVAL %s month) <= Local.now(), total_reg_num, 0)), '/',
-                        SUM(m%s[12]), '/',
-                        SUM(m%s[13]), '/',
-                        SUM(IF(DATE_ADD(dt, INTERVAL %s month) <= Local.now(), m%s[14], 0)), '/',
-                        SUM(IF(DATE_ADD(dt, INTERVAL %s month) <= Local.now(), m%s[15], 0))
-                    ) as m%s ,
-                    """.formatted(i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i));
+    private void formatTotalDayNForServerDay(GameServerSumDayTotalVO vo) {
+        if (CollectionUtils.isEmpty(dayNTotalFieldMapListForServerDay)) {
+            return;
         }
-        //拼接total
-        daySql.append("""
-                    CONCAT(
-                    	SUM(total[1]), '/',
-                    	SUM(total[2]), '/',
-                    	SUM(total[3]), '/',
-                    	SUM(total[4]), '/',
-                    	SUM(total[5]), '/',
-                    	SUM(total[6]), '/',
-                    	SUM(total[7]), '/',
-                    	SUM(total[8]), '/',
-                    	SUM(total[10]), '/',
-                        SUM(total_reg_num), '/',
-                        SUM(total[12]), '/',
-                        SUM(total[13]), '/',
-                        SUM(total[14]), '/',
-                        SUM(total[15])
-                    ) as total
-                    """);
+        dayNTotalFieldMapListForServerDay.forEach(dayNTotalFieldMap -> {
+            try {
+                /*注册人数0/创角人数1/活跃人数2/付费人数3/付费金额4/滚服人数5/滚服付费人数6/滚服付费金额7/ (游戏区服数据)*/
+                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();
+            }
 
-        return daySql.toString();
+        });
     }
 
     /**
@@ -533,7 +635,7 @@ public class GameServerServiceImpl implements IGameServerService {
      *
      * @return String
      */
-    private String trendDayDemo2(String activeType) {
+    private String trendDay(String activeType) {
         StringBuilder daySql = new StringBuilder(StringUtils.EMPTY);
         //注册留存数据
         if ("reg".equals(activeType)) {
@@ -706,27 +808,80 @@ public class GameServerServiceImpl implements IGameServerService {
     }
 
     /**
-     * 游戏区服数据SQL
-     * @return String
+     * 计算总计一栏的daN数据(游戏区服每日总计)
+     * 注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/ (游戏区服数据)
      */
-    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,
+    private String trendDayForServerDay() {
+        StringBuilder daySql = new StringBuilder(StringUtils.EMPTY);
+        //拼接da1-da90 sql
+        for (int i = 1; i <= 90; i++) {
+            daySql.append("""
+                    CONCAT(
+                    	SUM(da%s[1]), '/',
+                    	SUM(da%s[2]), '/',
+                    	SUM(da%s[3]), '/',
+                    	SUM(da%s[4]), '/',
+                    	SUM(da%s[5]), '/',
+                    	SUM(da%s[6]), '/',
+                    	SUM(da%s[7]), '/',
+                    	SUM(da%s[8])
+                    ) as da%s ,
+                    """.formatted(i, i, i, i, i, i, i, i, i));
+        }
+        //拼接m4-m12 sql
+        for (int i = 4; i <= 12; i++) {
+            daySql.append("""
+                    CONCAT(
+                    	SUM(m%s[1]), '/',
+                    	SUM(m%s[2]), '/',
+                    	SUM(m%s[3]), '/',
+                    	SUM(m%s[4]), '/',
+                    	SUM(m%s[5]), '/',
+                    	SUM(m%s[6]), '/',
+                    	SUM(m%s[7]), '/',
+                    	SUM(m%s[8])
+                    ) as m%s ,
+                    """.formatted(i, i, i, i, i, i, i, i, i));
+        }
+        //拼接total
+        daySql.append("""
+                    CONCAT(
+                    	SUM(total[1]), '/',
+                    	SUM(total[2]), '/',
+                    	SUM(total[3]), '/',
+                    	SUM(total[4]), '/',
+                    	SUM(total[5]), '/',
+                    	SUM(total[6]), '/',
+                    	SUM(total[7]), '/',
+                    	SUM(total[8])
+                    ) 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,
@@ -832,6 +987,134 @@ public class GameServerServiceImpl implements IGameServerService {
                 """;
     }
 
+    /**
+     * 游戏区服每日数据SQL
+     * @return String
+     */
+    private String gameServerSumDaySql() {
+        return """
+                SELECT
+                    id,
+                    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,
+                    da31,
+                    da32,
+                    da33,
+                    da34,
+                    da35,
+                    da36,
+                    da37,
+                    da38,
+                    da39,
+                    da40,
+                    da41,
+                    da42,
+                    da43,
+                    da44,
+                    da45,
+                    da46,
+                    da47,
+                    da48,
+                    da49,
+                    da50,
+                    da51,
+                    da52,
+                    da53,
+                    da54,
+                    da55,
+                    da56,
+                    da57,
+                    da58,
+                    da59,
+                    da60,
+                    da61,
+                    da62,
+                    da63,
+                    da64,
+                    da65,
+                    da66,
+                    da67,
+                    da68,
+                    da69,
+                    da70,
+                    da71,
+                    da72,
+                    da73,
+                    da74,
+                    da75,
+                    da76,
+                    da77,
+                    da78,
+                    da79,
+                    da80,
+                    da81,
+                    da82,
+                    da83,
+                    da84,
+                    da85,
+                    da86,
+                    da87,
+                    da88,
+                    da89,
+                    da90,
+                    m4,
+                    m5,
+                    m6,
+                    m7,
+                    m8,
+                    m9,
+                    m10,
+                    m11,
+                    m12,
+                    total
+                FROM
+                    game_ads.ads_game_server_day_sum
+                """;
+    }
+
     /**
      * 游戏区服数据总计SQL
      * @param activeType 查询的留存类型 reg -> 注册留存 ; role -> 角色留存 ; amount -> 付费留存
@@ -849,7 +1132,7 @@ public class GameServerServiceImpl implements IGameServerService {
                     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,
-                """ + trendDayDemo2(activeType) +
+                """ + trendDay(activeType) +
                 """
                 FROM (
                     SELECT
@@ -974,5 +1257,146 @@ public class GameServerServiceImpl implements IGameServerService {
                         """;
     }
 
+    /**
+     * 游戏区服每日数据总计SQL
+     *
+     * @return String
+     */
+    private String gameServerSumDayTotalSql() {
+        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,
+                """ + trendDayForServerDay() +
+                """
+                FROM (
+                    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,
+                        SPLIT(da1, '/') as da1,
+                        SPLIT(da2, '/') as da2,
+                        SPLIT(da3, '/') as da3,
+                        SPLIT(da4, '/') as da4,
+                        SPLIT(da5, '/') as da5,
+                        SPLIT(da6, '/') as da6,
+                        SPLIT(da7, '/') as da7,
+                        SPLIT(da8, '/') as da8,
+                        SPLIT(da9, '/') as da9,
+                        SPLIT(da10, '/') as da10,
+                        SPLIT(da11, '/') as da11,
+                        SPLIT(da12, '/') as da12,
+                        SPLIT(da13, '/') as da13,
+                        SPLIT(da14, '/') as da14,
+                        SPLIT(da15, '/') as da15,
+                        SPLIT(da16, '/') as da16,
+                        SPLIT(da17, '/') as da17,
+                        SPLIT(da18, '/') as da18,
+                        SPLIT(da19, '/') as da19,
+                        SPLIT(da20, '/') as da20,
+                        SPLIT(da21, '/') as da21,
+                        SPLIT(da22, '/') as da22,
+                        SPLIT(da23, '/') as da23,
+                        SPLIT(da24, '/') as da24,
+                        SPLIT(da25, '/') as da25,
+                        SPLIT(da26, '/') as da26,
+                        SPLIT(da27, '/') as da27,
+                        SPLIT(da28, '/') as da28,
+                        SPLIT(da29, '/') as da29,
+                        SPLIT(da30, '/') as da30,
+                        SPLIT(da31, '/') as da31,
+                        SPLIT(da32, '/') as da32,
+                        SPLIT(da33, '/') as da33,
+                        SPLIT(da34, '/') as da34,
+                        SPLIT(da35, '/') as da35,
+                        SPLIT(da36, '/') as da36,
+                        SPLIT(da37, '/') as da37,
+                        SPLIT(da38, '/') as da38,
+                        SPLIT(da39, '/') as da39,
+                        SPLIT(da40, '/') as da40,
+                        SPLIT(da41, '/') as da41,
+                        SPLIT(da42, '/') as da42,
+                        SPLIT(da43, '/') as da43,
+                        SPLIT(da44, '/') as da44,
+                        SPLIT(da45, '/') as da45,
+                        SPLIT(da46, '/') as da46,
+                        SPLIT(da47, '/') as da47,
+                        SPLIT(da48, '/') as da48,
+                        SPLIT(da49, '/') as da49,
+                        SPLIT(da50, '/') as da50,
+                        SPLIT(da51, '/') as da51,
+                        SPLIT(da52, '/') as da52,
+                        SPLIT(da53, '/') as da53,
+                        SPLIT(da54, '/') as da54,
+                        SPLIT(da55, '/') as da55,
+                        SPLIT(da56, '/') as da56,
+                        SPLIT(da57, '/') as da57,
+                        SPLIT(da58, '/') as da58,
+                        SPLIT(da59, '/') as da59,
+                        SPLIT(da60, '/') as da60,
+                        SPLIT(da61, '/') as da61,
+                        SPLIT(da62, '/') as da62,
+                        SPLIT(da63, '/') as da63,
+                        SPLIT(da64, '/') as da64,
+                        SPLIT(da65, '/') as da65,
+                        SPLIT(da66, '/') as da66,
+                        SPLIT(da67, '/') as da67,
+                        SPLIT(da68, '/') as da68,
+                        SPLIT(da69, '/') as da69,
+                        SPLIT(da70, '/') as da70,
+                        SPLIT(da71, '/') as da71,
+                        SPLIT(da72, '/') as da72,
+                        SPLIT(da73, '/') as da73,
+                        SPLIT(da74, '/') as da74,
+                        SPLIT(da75, '/') as da75,
+                        SPLIT(da76, '/') as da76,
+                        SPLIT(da77, '/') as da77,
+                        SPLIT(da78, '/') as da78,
+                        SPLIT(da79, '/') as da79,
+                        SPLIT(da80, '/') as da80,
+                        SPLIT(da81, '/') as da81,
+                        SPLIT(da82, '/') as da82,
+                        SPLIT(da83, '/') as da83,
+                        SPLIT(da84, '/') as da84,
+                        SPLIT(da85, '/') as da85,
+                        SPLIT(da86, '/') as da86,
+                        SPLIT(da87, '/') as da87,
+                        SPLIT(da88, '/') as da88,
+                        SPLIT(da89, '/') as da89,
+                        SPLIT(da90, '/') as da90,
+                        SPLIT(m4, '/') as m4,
+                        SPLIT(m5, '/') as m5,
+                        SPLIT(m6, '/') as m6,
+                        SPLIT(m7, '/') as m7,
+                        SPLIT(m8, '/') as m8,
+                        SPLIT(m9, '/') as m9,
+                        SPLIT(m10, '/') as m10,
+                        SPLIT(m11, '/') as m11,
+                        SPLIT(m12, '/') as m12,
+                        SPLIT(total, '/') as total
+                    FROM
+                        game_ads.ads_game_server_day_sum
+                ) a
+                        """;
+    }
+
 
 }

+ 129 - 62
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/PlayerDataServiceImpl.java

@@ -604,7 +604,7 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
     private String getPlayerDataListSql() {
         return """
                 SELECT
-                *
+                	*
                 FROM (
                     select
                         a.source_system as source_system ,
@@ -628,7 +628,7 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                         IFNULL(i.amount, 0) as recharge_money ,
                         IFNULL(i.amount_count, 0) as recharge_count,
                         IFNULL(b.role_num, 0) as role_count,
-                        b.create_time as update_time ,
+                        j.create_time as update_time ,
                         b.last_recharge_time as last_recharge_time,
                         a.status as status ,
                         b.role_name as last_game_role_name ,
@@ -693,6 +693,14 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                         where status = 2
                         group by user_id , source_system
                     ) i on a.id = i.user_id and a.source_system = i.source_system
+                    LEFT JOIN (
+                    	SELECT
+                    		source_system ,
+                    		user_id ,
+                    		create_time ,
+                    		ROW_NUMBER()over(partition by user_id , source_system order by create_time desc) as num
+                    	FROM dm_game_order.t_user_login_log
+                    ) j ON a.id = j.user_id AND a.source_system = j.source_system AND j.num = 1
                 ) k
                 """;
     }
@@ -704,7 +712,7 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
     private String getPlayerDataListCountSql() {
         return """
                 SELECT
-                    COUNT(1)
+                	COUNT(1)
                 FROM (
                     select
                         a.source_system as source_system ,
@@ -728,7 +736,7 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                         IFNULL(i.amount, 0) as recharge_money ,
                         IFNULL(i.amount_count, 0) as recharge_count,
                         IFNULL(b.role_num, 0) as role_count,
-                        b.create_time as update_time ,
+                        j.create_time as update_time ,
                         b.last_recharge_time as last_recharge_time,
                         a.status as status ,
                         b.role_name as last_game_role_name ,
@@ -749,14 +757,14 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                             a.num,
                             c.role_num
                             from (
-                                    select
-                                        source_system ,
-                                        user_id ,
-                                        role_name ,
-                                        create_time,
-                                        update_time ,
-                                        ROW_NUMBER() OVER(PARTITION BY user_id,source_system order by update_time  desc) as num
-                                    from dm_game_order.t_game_user_role
+                                select
+                                    source_system ,
+                                    user_id ,
+                                    role_name ,
+                                    create_time,
+                                    update_time ,
+                                    ROW_NUMBER() OVER(PARTITION BY user_id,source_system order by update_time  desc) as num
+                                from dm_game_order.t_game_user_role
                                 ) a
                             left join (
                                 select
@@ -793,6 +801,14 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                         where status = 2
                         group by user_id , source_system
                     ) i on a.id = i.user_id and a.source_system = i.source_system
+                    LEFT JOIN (
+                    	SELECT
+                    		source_system ,
+                    		user_id ,
+                    		create_time ,
+                    		ROW_NUMBER()over(partition by user_id , source_system order by create_time desc) as num
+                    	FROM dm_game_order.t_user_login_log
+                    ) j ON a.id = j.user_id AND a.source_system = j.source_system AND j.num = 1
                 ) k
                 """;
     }
@@ -837,7 +853,7 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                 		a.role_vip as role_vip_level, -- 角色vip
                 		a.os , -- 角色操作系统
                 		a.create_time as create_time, -- 角色创建时间
-                		a.update_time, -- 角色最近更新时间
+                		k.active_time as update_time, -- 角色最近更新时间
                 		g.pay_time as last_recharge_time, -- 角色最近充值时间
                 		TIMESTAMPDIFF(SECOND, b.create_time, g.pay_time) as reg_pay_time_diff, -- 最近充值距注册时间差(秒)
                 		i.active_time as last_login_time, -- 玩家最近登陆时间
@@ -878,7 +894,12 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                 				a.source_system
                 			FROM dm_game_order.t_game_server a
                 			LEFT JOIN dm_game_order.t_game b on a.source_system = b.source_system AND a.game_id = b.id
-                		)a LEFT JOIN dm_game_order.t_game_server_merge b
+                		)a LEFT JOIN (
+                			SELECT
+                				*
+                			FROM dm_game_order.t_game_server_merge
+                			WHERE is_delete = 0
+                		) b
                 		on a.source_system = b.source_system AND a.super_game_id = b.game_id AND a.server_id = b.server_id
                 	) h on a.source_system = h.source_system AND a.server_id = h.server_id AND a.game_id = h.game_id
                 	LEFT JOIN (
@@ -886,11 +907,11 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                 			source_system ,
                 			user_id,
                 			game_id,
-                			active_time,
+                			create_time as active_time,
                 			role_id ,
-                			ROW_NUMBER()over(partition by role_id ,user_id, source_system order by active_time desc) as num
-                		FROM game_dw.dw_active_log
-                	) i on a.source_system = i.source_system AND a.role_id = i.role_id AND a.user_id = i.user_id AND a.game_id = i.game_id AND i.num = 1
+                			ROW_NUMBER()over(partition by user_id, source_system order by create_time desc) as num
+                		FROM dm_game_order.t_user_login_log
+                	) i on a.source_system = i.source_system AND a.user_id = i.user_id AND i.num = 1
                 	LEFT JOIN (
                 		SELECT
                 			-- 累计充值金额、累计充值次数
@@ -903,6 +924,16 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                 		WHERE status =2
                 		GROUP BY role_id , user_id , source_system
                 	) j on a.source_system = j.source_system AND a.role_id = j.role_id AND a.user_id = j.user_id
+                	LEFT JOIN (
+                		SELECT
+                			source_system ,
+                			user_id,
+                			game_id,
+                			active_time,
+                			role_id ,
+                			ROW_NUMBER()over(partition by role_id ,user_id, source_system order by active_time desc) as num
+                		FROM game_dw.dw_active_log
+                	) k on a.source_system = k.source_system AND a.user_id = k.user_id AND a.role_id = k.role_id AND k.num = 1
                 ) a
                 """;
     }
@@ -947,7 +978,7 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                 		a.role_vip as role_vip_level, -- 角色vip
                 		a.os , -- 角色操作系统
                 		a.create_time as create_time, -- 角色创建时间
-                		a.update_time, -- 角色最近更新时间
+                		k.active_time as update_time, -- 角色最近更新时间
                 		g.pay_time as last_recharge_time, -- 角色最近充值时间
                 		TIMESTAMPDIFF(SECOND, b.create_time, g.pay_time) as reg_pay_time_diff, -- 最近充值距注册时间差(秒)
                 		i.active_time as last_login_time, -- 玩家最近登陆时间
@@ -988,7 +1019,12 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                 				a.source_system
                 			FROM dm_game_order.t_game_server a
                 			LEFT JOIN dm_game_order.t_game b on a.source_system = b.source_system AND a.game_id = b.id
-                		)a LEFT JOIN dm_game_order.t_game_server_merge b
+                		)a LEFT JOIN (
+                			SELECT
+                				*
+                			FROM dm_game_order.t_game_server_merge
+                			WHERE is_delete = 0
+                		) b
                 		on a.source_system = b.source_system AND a.super_game_id = b.game_id AND a.server_id = b.server_id
                 	) h on a.source_system = h.source_system AND a.server_id = h.server_id AND a.game_id = h.game_id
                 	LEFT JOIN (
@@ -996,11 +1032,11 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                 			source_system ,
                 			user_id,
                 			game_id,
-                			active_time,
+                			create_time as active_time,
                 			role_id ,
-                			ROW_NUMBER()over(partition by role_id ,user_id, source_system order by active_time desc) as num
-                		FROM game_dw.dw_active_log
-                	) i on a.source_system = i.source_system AND a.role_id = i.role_id AND a.user_id = i.user_id AND a.game_id = i.game_id AND i.num = 1
+                			ROW_NUMBER()over(partition by user_id, source_system order by create_time desc) as num
+                		FROM dm_game_order.t_user_login_log
+                	) i on a.source_system = i.source_system AND a.user_id = i.user_id AND i.num = 1
                 	LEFT JOIN (
                 		SELECT
                 			-- 累计充值金额、累计充值次数
@@ -1013,6 +1049,16 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                 		WHERE status =2
                 		GROUP BY role_id , user_id , source_system
                 	) j on a.source_system = j.source_system AND a.role_id = j.role_id AND a.user_id = j.user_id
+                	LEFT JOIN (
+                		SELECT
+                			source_system ,
+                			user_id,
+                			game_id,
+                			active_time,
+                			role_id ,
+                			ROW_NUMBER()over(partition by role_id ,user_id, source_system order by active_time desc) as num
+                		FROM game_dw.dw_active_log
+                	) k on a.source_system = k.source_system AND a.user_id = k.user_id AND a.role_id = k.role_id AND k.num = 1
                 ) a
                 """;
     }
@@ -1058,7 +1104,7 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                 		a.role_vip as role_vip_level, -- 角色vip
                 		a.os , -- 角色操作系统
                 		a.create_time as create_time, -- 角色创建时间
-                		a.update_time, -- 角色最近更新时间
+                		k.active_time as update_time, -- 角色最近更新时间
                 		g.pay_time as last_recharge_time, -- 角色最近充值时间
                 		TIMESTAMPDIFF(SECOND, b.create_time, g.pay_time) as reg_pay_time_diff, -- 最近充值距注册时间差(秒)
                 		i.active_time as last_login_time, -- 玩家最近登陆时间
@@ -1099,7 +1145,12 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                 				a.source_system
                 			FROM dm_game_order.t_game_server a
                 			LEFT JOIN dm_game_order.t_game b on a.source_system = b.source_system AND a.game_id = b.id
-                		)a LEFT JOIN dm_game_order.t_game_server_merge b
+                		)a LEFT JOIN (
+                			SELECT
+                				*
+                			FROM dm_game_order.t_game_server_merge
+                			WHERE is_delete = 0
+                		) b
                 		on a.source_system = b.source_system AND a.super_game_id = b.game_id AND a.server_id = b.server_id
                 	) h on a.source_system = h.source_system AND a.server_id = h.server_id AND a.game_id = h.game_id
                 	LEFT JOIN (
@@ -1107,11 +1158,11 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                 			source_system ,
                 			user_id,
                 			game_id,
-                			active_time,
+                			create_time as active_time,
                 			role_id ,
-                			ROW_NUMBER()over(partition by role_id ,user_id, source_system order by active_time desc) as num
-                		FROM game_dw.dw_active_log
-                	) i on a.source_system = i.source_system AND a.role_id = i.role_id AND a.user_id = i.user_id AND a.game_id = i.game_id AND i.num = 1
+                			ROW_NUMBER()over(partition by user_id, source_system order by create_time desc) as num
+                		FROM dm_game_order.t_user_login_log
+                	) i on a.source_system = i.source_system AND a.user_id = i.user_id AND i.num = 1
                 	LEFT JOIN (
                 		SELECT
                 			-- 累计充值金额、累计充值次数
@@ -1124,6 +1175,16 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                 		WHERE status =2
                 		GROUP BY role_id , user_id , source_system
                 	) j on a.source_system = j.source_system AND a.role_id = j.role_id AND a.user_id = j.user_id
+                	LEFT JOIN (
+                		SELECT
+                			source_system ,
+                			user_id,
+                			game_id,
+                			active_time,
+                			role_id ,
+                			ROW_NUMBER()over(partition by role_id ,user_id, source_system order by active_time desc) as num
+                		FROM game_dw.dw_active_log
+                	) k on a.source_system = k.source_system AND a.user_id = k.user_id AND a.role_id = k.role_id AND k.num = 1
                 ) a
                 """;
     }
@@ -1163,7 +1224,12 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                 	LEFT JOIN dm_game_order.t_game_user c on a.source_system = c.source_system AND a.user_id = c.id
                 	LEFT JOIN dm_game_order.t_game_user_role d on a.source_system = d.source_system AND a.user_id = d.user_id AND a.role_id = d.role_id
                 	LEFT JOIN dm_game_order.t_game e on b.source_system = e.source_system AND b.parent_id = e.id
-                	LEFT JOIN dm_game_order.t_game_server_merge f on a.source_system = f.source_system AND b.super_game_id = f.game_id AND d.server_id = f.server_id
+                	LEFT JOIN (
+                		SELECT
+                			*
+                		FROM dm_game_order.t_game_server_merge
+                		WHERE is_delete = 0
+                	) f on a.source_system = f.source_system AND b.super_game_id = f.game_id AND d.server_id = f.server_id
                 ) a
                 """;
     }
@@ -1177,37 +1243,38 @@ public class PlayerDataServiceImpl implements IPlayerDataService {
                 SELECT
                     COUNT(1)
                 FROM (
-                        SELECT
-                        *
-                    FROM (
-                        SELECT
-                            a.source_system , -- SDK来源
-                            a.id , -- 主键id
-                            a.create_time as dt, -- 时间
-                            c.username , -- 玩家账号
-                            a.user_id , -- 用户id
-                            a.game_id , -- 登陆游戏id
-                            b.game_name , -- 登陆游戏名
-                            b.classify , -- 游戏类型
-                            IFNULL(b.parent_id, a.game_id ) as parent_game_id , -- 父游戏id
-                            IFNULL(e.game_name, b.game_name) as parent_game_name, -- 父游戏名
-                            b.super_game_id , -- 超父游戏id
-                            a.role_id , -- 角色id
-                            a.role_name , -- 角色名
-                            d.server_id , -- 区服id
-                            d.server_name , -- 区服名
-                            f.server_name , -- 原始区服名
-                            a.os , -- 操作系统
-                            a.ip , -- 登陆ip
-                            a.device_type , -- 客户端类型
-                            a.`type` as log_type -- 登陆类型 0-注册;1-登陆;2-退出
-                        FROM dm_game_order.t_user_login_log a
-                        LEFT JOIN dm_game_order.t_game b on a.source_system = b.source_system AND a.game_id = b.id
-                        LEFT JOIN dm_game_order.t_game_user c on a.source_system = c.source_system AND a.user_id = c.id
-                        LEFT JOIN dm_game_order.t_game_user_role d on a.source_system = d.source_system AND a.user_id = d.user_id AND a.role_id = d.role_id
-                        LEFT JOIN dm_game_order.t_game e on b.source_system = e.source_system AND b.parent_id = e.id
-                        LEFT JOIN dm_game_order.t_game_server_merge f on a.source_system = f.source_system AND b.super_game_id = f.game_id AND d.server_id = f.server_id
-                    ) a
+                	SELECT
+                		a.source_system , -- SDK来源
+                		a.id , -- 主键id
+                		a.create_time as dt, -- 时间
+                		c.username , -- 玩家账号
+                		a.user_id , -- 用户id
+                		a.game_id , -- 登陆游戏id
+                		b.game_name , -- 登陆游戏名
+                		b.classify , -- 游戏类型
+                		IFNULL(b.parent_id, a.game_id ) as parent_game_id , -- 父游戏id
+                		IFNULL(e.game_name, b.game_name) as parent_game_name, -- 父游戏名
+                		b.super_game_id , -- 超父游戏id
+                		a.role_id , -- 角色id
+                		a.role_name , -- 角色名
+                		d.server_id , -- 区服id
+                		d.server_name , -- 区服名
+                		f.server_name as source_server_name, -- 原始区服名
+                		a.os , -- 操作系统
+                		a.ip , -- 登陆ip
+                		a.device_type , -- 客户端类型
+                		a.`type` as log_type -- 登陆类型 0-注册;1-登陆;2-退出
+                	FROM dm_game_order.t_user_login_log a
+                	LEFT JOIN dm_game_order.t_game b on a.source_system = b.source_system AND a.game_id = b.id
+                	LEFT JOIN dm_game_order.t_game_user c on a.source_system = c.source_system AND a.user_id = c.id
+                	LEFT JOIN dm_game_order.t_game_user_role d on a.source_system = d.source_system AND a.user_id = d.user_id AND a.role_id = d.role_id
+                	LEFT JOIN dm_game_order.t_game e on b.source_system = e.source_system AND b.parent_id = e.id
+                	LEFT JOIN (
+                		SELECT
+                			*
+                		FROM dm_game_order.t_game_server_merge
+                		WHERE is_delete = 0
+                	) f on a.source_system = f.source_system AND b.super_game_id = f.game_id AND d.server_id = f.server_id
                 ) a
                 """;
     }

文件差異過大導致無法顯示
+ 753 - 412
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/RoleManageServiceImpl.java


+ 5 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/AgentChoiceVO.java

@@ -25,4 +25,9 @@ public class AgentChoiceVO {
      * 渠道名称
      */
     private String agentName;
+
+    /**
+     * 渠道唯一标识
+     */
+    private String agentKey;
 }

部分文件因文件數量過多而無法顯示