Browse Source

修改内容:游戏区服每日数据、总计

lth 1 year ago
parent
commit
1ab153add5

+ 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));
+    }
 
 }

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

@@ -0,0 +1,80 @@
+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;
+
+    /**
+     * 区服ID
+     */
+    @ApiModelProperty(value = "区服ID")
+    private Long serverId;
+
+    /**
+     * 区服名称
+     */
+    @ApiModelProperty(value = "区服名称")
+    private String serverName;
+
+    /**
+     * SDK来源
+     */
+    @ApiModelProperty(value = "SDK来源")
+    private String sourceSystem;
+
+
+    /**
+     * 排序字段
+     */
+    @ApiModelProperty(notes = "排序字段")
+    private String sortFiled;
+
+    /**
+     * 排序方式:升序asc;降序desc
+     */
+    @ApiModelProperty(notes = "排序方式:升序asc;降序desc")
+    private String sortType;
+
+    /**
+     * 选择留存数据的类型
+     */
+    @ApiModelProperty(notes = """
+            选择留存数据的类型:reg -> 注册留存 ; role -> 角色留存 ; amount -> 付费留存
+            """)
+    private String activeTypes;
+
+}

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

@@ -0,0 +1,66 @@
+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;
+
+    /**
+     * 区服ID
+     */
+    @ApiModelProperty(value = "区服ID")
+    private Long serverId;
+
+    /**
+     * 区服名称
+     */
+    @ApiModelProperty(value = "区服名称")
+    private String serverName;
+
+    /**
+     * SDK来源
+     */
+    @ApiModelProperty(value = "SDK来源")
+    private String sourceSystem;
+
+    /**
+     * 选择留存数据的类型
+     */
+    @ApiModelProperty(notes = """
+            选择留存数据的类型:reg -> 注册留存 ; role -> 角色留存 ; amount -> 付费留存
+            """)
+    private String activeTypes;
+
+}

+ 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;
+
+}
+
+

+ 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);
+
 }

+ 578 - 142
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,123 @@ 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.getServerId() != null) {
+            //拼接区服ID查询条件
+            cri.where().andEquals("server_id", dto.getServerId());
+        }
+        if (StringUtils.isNotBlank(dto.getServerName())) {
+            //拼接区服名称查询条件
+            cri.where().andLike("server_name", dto.getServerName());
+        }
+        if (dto.getBeginDate() != null && dto.getEndDate() != null) {
+            //拼接开服时间查询条件
+            cri.where().andBetween("dt", dto.getBeginDate(), dto.getEndDate());
+        }
+        if (StringUtils.isNotBlank(dto.getSourceSystem())) {
+            //拼接sdk来源
+            cri.where().andEquals("source_system", dto.getSourceSystem());
+        }
+        //添加排序条件
+        //拼接排序条件,如果没有排序条件给默认值
+        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.getServerId() != null) {
+            //拼接区服ID查询条件
+            cri.where().andEquals("server_id", dto.getServerId());
+        }
+        if (StringUtils.isNotBlank(dto.getServerName())) {
+            //拼接区服名称查询条件
+            cri.where().andLike("server_name", dto.getServerName());
+        }
+        if (dto.getBeginDate() != null && dto.getEndDate() != null) {
+            //拼接开服时间查询条件
+            cri.where().andBetween("dt", dto.getBeginDate(), dto.getEndDate());
+        }
+        if (StringUtils.isNotBlank(dto.getSourceSystem())) {
+            //拼接sdk来源
+            cri.where().andEquals("source_system", dto.getSourceSystem());
+        }
+        //创建sql语句查询数据
+        Sql sql = Sqls.create(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 +468,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 +602,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 +647,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,8 +820,61 @@ public class GameServerServiceImpl implements IGameServerService {
     }
 
     /**
-     * 游戏区服数据SQL
-     * @return String
+     * 计算总计一栏的daN数据(游戏区服每日总计)
+     * 注册人数/创角人数/活跃人数/付费人数/付费金额/滚服人数/滚服付费人数/滚服付费金额/ (游戏区服数据)
+     */
+    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 """
@@ -832,6 +999,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 +1144,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 +1269,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
+                        """;
+    }
+
 
 }