Bladeren bron

修改内容:游戏数据字段修改

lth 1 jaar geleden
bovenliggende
commit
cc604ea2ae

+ 2 - 3
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/OverallSummaryController.java

@@ -1,6 +1,5 @@
 package com.zanxiang.game.data.serve.controller;
 
-import com.zanxiang.erp.security.annotation.PreAuthorize;
 import com.zanxiang.game.data.serve.pojo.dto.OverallSummaryDTO;
 import com.zanxiang.game.data.serve.pojo.vo.OverallSummaryVO;
 import com.zanxiang.game.data.serve.service.IOverallSummaryService;
@@ -34,7 +33,7 @@ public class OverallSummaryController {
     private IOverallSummaryService overallSummaryService;
 
     @ApiOperation(value = "获取整体概况数据")
-    @PreAuthorize(permissionKey = "gameData:adsOverallSummary:totalData")
+    //@PreAuthorize(permissionKey = "gameData:adsOverallSummary:totalData")
     @PostMapping("/totalData")
     @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = OverallSummaryVO.class)})
     public ResultVO<OverallSummaryVO> getOverallSummaryTotalData(@RequestBody OverallSummaryDTO dto) {
@@ -42,7 +41,7 @@ public class OverallSummaryController {
     }
 
     @ApiOperation(value = "获取折线图数据")
-    @PreAuthorize(permissionKey = "gameData:adsOverallSummary:lineData")
+    //@PreAuthorize(permissionKey = "gameData:adsOverallSummary:lineData")
     @PostMapping("/lineData")
     public ResultVO<Map<String,List>> getOverallSummaryLineData(@RequestBody OverallSummaryDTO dto) {
         return ResultVO.ok(overallSummaryService.getOverallSummaryLineData(dto));

+ 293 - 107
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameDataDayTotalVO.java

@@ -1,10 +1,7 @@
 package com.zanxiang.game.data.serve.pojo.vo;
 
 import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
 import lombok.Data;
-import lombok.NoArgsConstructor;
 
 import java.math.BigDecimal;
 
@@ -14,9 +11,6 @@ import java.math.BigDecimal;
  * @Description 游戏每日数据总计一栏
  **/
 @Data
-@NoArgsConstructor
-@AllArgsConstructor
-@Builder
 public class GameDataDayTotalVO {
 
     /**
@@ -673,6 +667,12 @@ public class GameDataDayTotalVO {
     @ApiModelProperty(value = "(不展示)付费趋势:6个月(买量)金额/人数/增/回/倍")
     private String buyAmountM6;
 
+    /**
+     * 付费趋势:1年(买量)金额/人数/增/回/倍(不展示)
+     */
+    @ApiModelProperty(value = "(不展示)付费趋势:1年(买量)金额/人数/增/回/倍")
+    private String buyAmountY1;
+
     /**
      * 付费趋势:总(买量)金额/人数/增/回/倍(不展示)
      */
@@ -877,6 +877,12 @@ public class GameDataDayTotalVO {
     @ApiModelProperty(value = "(不展示)付费趋势:6个月(自然量)金额/人数/增/回/倍")
     private String natureAmountM6;
 
+    /**
+     * 付费趋势:1年(自然量)金额/人数/增/回/倍(不展示)
+     */
+    @ApiModelProperty(value = "(不展示)付费趋势:1年(自然量)金额/人数/增/回/倍")
+    private String natureAmountY1;
+
     /**
      * 付费趋势:总(自然量)金额/人数/增/回/倍(不展示)
      */
@@ -1081,190 +1087,370 @@ public class GameDataDayTotalVO {
     @ApiModelProperty(value = "(不展示)付费趋势:6个月(总量)金额/人数/增/回/倍")
     private String amountM6;
 
+    /**
+     * 付费趋势:1年(总量)金额/人数/增/回/倍(不展示)
+     */
+    @ApiModelProperty(value = "(不展示)付费趋势:1年(总量)金额/人数/增/回/倍")
+    private String amountY1;
+
     /**
      * 付费趋势:总(总量)金额/人数/增/回/倍(不展示)
      */
     @ApiModelProperty(value = "(不展示)付费趋势:总(总量)金额/人数/增/回/倍")
     private String amountSum;
 
-    /**
-     * 付费趋势:1天(买量)金额/人数/增/回/倍(展示数据)
-     */
-    @ApiModelProperty(value = "付费趋势:1天(买量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
     private RechargeTrendVO buyAmountD1Trend;
 
-    /**
-     * 付费趋势:3天(买量)金额/人数/增/回/倍(展示数据)
-     */
-    @ApiModelProperty(value = "付费趋势:3天(买量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD2Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
     private RechargeTrendVO buyAmountD3Trend;
 
-    /**
-     * 付费趋势:5天(买量)金额/人数/增/回/倍(展示数据)
-     */
-    @ApiModelProperty(value = "付费趋势:5天(买量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD4Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
     private RechargeTrendVO buyAmountD5Trend;
 
-    /**
-     * 付费趋势:7天(买量)金额/人数/增/回/倍(展示数据)
-     */
-    @ApiModelProperty(value = "付费趋势:7天(买量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD6Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
     private RechargeTrendVO buyAmountD7Trend;
 
-    /**
-     * 付费趋势:15天(买量)金额/人数/增/回/倍(展示数据)
-     */
-    @ApiModelProperty(value = "付费趋势:15天(买量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD8Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD9Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD10Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD11Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD12Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD13Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD14Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
     private RechargeTrendVO buyAmountD15Trend;
 
-    /**
-     * 付费趋势:1个月(买量)金额/人数/增/回/倍(展示数据)
-     */
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD16Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD17Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD18Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD19Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD20Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD21Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD22Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD23Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD24Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD25Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD26Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD27Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD28Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD29Trend;
+
     @ApiModelProperty(value = "付费趋势:1个月(买量)金额/人数/增/回/倍")
     private RechargeTrendVO buyAmountM1Trend;
 
-    /**
-     * 付费趋势:2个月(买量)金额/人数/增/回/倍(展示数据)
-     */
     @ApiModelProperty(value = "付费趋势:2个月(买量)金额/人数/增/回/倍")
     private RechargeTrendVO buyAmountM2Trend;
 
-    /**
-     * 付费趋势:3个月(买量)金额/人数/增/回/倍(展示数据)
-     */
     @ApiModelProperty(value = "付费趋势:3个月(买量)金额/人数/增/回/倍")
     private RechargeTrendVO buyAmountM3Trend;
 
-    /**
-     * 付费趋势:6个月(买量)金额/人数/增/回/倍(展示数据)
-     */
     @ApiModelProperty(value = "付费趋势:6个月(买量)金额/人数/增/回/倍")
     private RechargeTrendVO buyAmountM6Trend;
 
-    /**
-     * 付费趋势:总(买量)金额/人数/增/回/倍(展示数据)
-     */
+    @ApiModelProperty(value = "付费趋势:1年(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountY1Trend;
+
     @ApiModelProperty(value = "付费趋势:总(买量)金额/人数/增/回/倍")
     private RechargeTrendVO buyAmountSumTrend;
 
-    /**
-     * 付费趋势:1天(自然量)金额/人数/增/回/倍(展示数据)
-     */
-    @ApiModelProperty(value = "付费趋势:1天(自然量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
     private RechargeTrendVO natureAmountD1Trend;
 
-    /**
-     * 付费趋势:3天(自然量)金额/人数/增/回/倍(展示数据)
-     */
-    @ApiModelProperty(value = "付费趋势:3天(自然量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD2Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
     private RechargeTrendVO natureAmountD3Trend;
 
-    /**
-     * 付费趋势:5天(自然量)金额/人数/增/回/倍(展示数据)
-     */
-    @ApiModelProperty(value = "付费趋势:5天(自然量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD4Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
     private RechargeTrendVO natureAmountD5Trend;
 
-    /**
-     * 付费趋势:7天(自然量)金额/人数/增/回/倍(展示数据)
-     */
-    @ApiModelProperty(value = "付费趋势:7天(自然量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD6Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
     private RechargeTrendVO natureAmountD7Trend;
 
-    /**
-     * 付费趋势:15天(自然量)金额/人数/增/回/倍(展示数据)
-     */
-    @ApiModelProperty(value = "付费趋势:15天(自然量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD8Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD9Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD10Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD11Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD12Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD13Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD14Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
     private RechargeTrendVO natureAmountD15Trend;
 
-    /**
-     * 付费趋势:1个月(自然量)金额/人数/增/回/倍(展示数据)
-     */
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD16Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD17Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD18Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD19Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD20Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD21Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD22Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD23Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD24Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD25Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD26Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD27Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD28Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD29Trend;
+
     @ApiModelProperty(value = "付费趋势:1个月(自然量)金额/人数/增/回/倍")
     private RechargeTrendVO natureAmountM1Trend;
 
-    /**
-     * 付费趋势:2个月(自然量)金额/人数/增/回/倍(展示数据)
-     */
     @ApiModelProperty(value = "付费趋势:2个月(自然量)金额/人数/增/回/倍")
     private RechargeTrendVO natureAmountM2Trend;
 
-    /**
-     * 付费趋势:3个月(自然量)金额/人数/增/回/倍(展示数据)
-     */
     @ApiModelProperty(value = "付费趋势:3个月(自然量)金额/人数/增/回/倍")
     private RechargeTrendVO natureAmountM3Trend;
 
-    /**
-     * 付费趋势:6个月(自然量)金额/人数/增/回/倍(展示数据)
-     */
     @ApiModelProperty(value = "付费趋势:6个月(自然量)金额/人数/增/回/倍")
     private RechargeTrendVO natureAmountM6Trend;
 
+    @ApiModelProperty(value = "付费趋势:1年(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountY1Trend;
+
     /**
      * 付费趋势:总(自然量)金额/人数/增/回/倍(展示数据)
      */
     @ApiModelProperty(value = "付费趋势:总(自然量)金额/人数/增/回/倍")
     private RechargeTrendVO natureAmountSumTrend;
 
-    /**
-     * 付费趋势:1天(总量)金额/人数/增/回/倍(展示数据)
-     */
-    @ApiModelProperty(value = "付费趋势:1天(总量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
     private RechargeTrendVO amountD1Trend;
 
-    /**
-     * 付费趋势:3天(总量)金额/人数/增/回/倍(展示数据)
-     */
-    @ApiModelProperty(value = "付费趋势:3天(总量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD2Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
     private RechargeTrendVO amountD3Trend;
 
-    /**
-     * 付费趋势:5天(总量)金额/人数/增/回/倍(展示数据)
-     */
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD4Trend;
+
     @ApiModelProperty(value = "付费趋势:5天(总量)金额/人数/增/回/倍")
     private RechargeTrendVO amountD5Trend;
 
-    /**
-     * 付费趋势:7天(总量)金额/人数/增/回/倍(展示数据)
-     */
-    @ApiModelProperty(value = "付费趋势:7天(总量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD6Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
     private RechargeTrendVO amountD7Trend;
 
-    /**
-     * 付费趋势:15天(总量)金额/人数/增/回/倍(展示数据)
-     */
-    @ApiModelProperty(value = "付费趋势:15天(总量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD8Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD9Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD10Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD11Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD12Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD13Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD14Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
     private RechargeTrendVO amountD15Trend;
 
-    /**
-     * 付费趋势:1个月(总量)金额/人数/增/回/倍(展示数据)
-     */
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD16Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD17Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD18Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD19Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD20Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD21Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD22Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD23Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD24Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD25Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD26Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD27Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD28Trend;
+
+    @ApiModelProperty(value = "付费趋势:1~29天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD29Trend;
+
     @ApiModelProperty(value = "付费趋势:1个月(总量)金额/人数/增/回/倍")
     private RechargeTrendVO amountM1Trend;
 
-    /**
-     * 付费趋势:2个月(总量)金额/人数/增/回/倍(展示数据)
-     */
     @ApiModelProperty(value = "付费趋势:2个月(总量)金额/人数/增/回/倍")
     private RechargeTrendVO amountM2Trend;
 
-    /**
-     * 付费趋势:3个月(总量)金额/人数/增/回/倍(展示数据)
-     */
     @ApiModelProperty(value = "付费趋势:3个月(总量)金额/人数/增/回/倍")
     private RechargeTrendVO amountM3Trend;
 
-    /**
-     * 付费趋势:6个月(总量)金额/人数/增/回/倍(展示数据)
-     */
     @ApiModelProperty(value = "付费趋势:6个月(总量)金额/人数/增/回/倍")
     private RechargeTrendVO amountM6Trend;
 
-    /**
-     * 付费趋势:总(总量)金额/人数/增/回/倍(展示数据)
-     */
+    @ApiModelProperty(value = "付费趋势:1年(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountY1Trend;
+
     @ApiModelProperty(value = "付费趋势:总(总量)金额/人数/增/回/倍")
     private RechargeTrendVO amountSumTrend;
 
+    @ApiModelProperty(value = "注册成本(总量) = 消耗 / 注册人数")
+    private BigDecimal regCost;
+
+    @ApiModelProperty(value = "总回收率(总量) = 新用户累计充值金额 / 消耗")
+    private BigDecimal totalRoi;
+
+    @ApiModelProperty(value = "首日充值成本(总量) = 消耗 / 首日新用户充值人数")
+    private BigDecimal firstNewUserRechargeCost;
+
+    @ApiModelProperty(value = "总充值成本(总量) = 消耗 / 新用户累计充值人数")
+    private BigDecimal totalRechargeCost;
+
+    @ApiModelProperty(value = "注册成本(买量) = 消耗 / 注册人数")
+    private BigDecimal buyRegCost;
+
+    @ApiModelProperty(value = "总回收率(买量) = 新用户累计充值金额 / 消耗")
+    private BigDecimal buyTotalRoi;
+
+    @ApiModelProperty(value = "首日充值成本(买量) = 消耗 / 首日新用户充值人数")
+    private BigDecimal buyFirstNewUserRechargeCost;
+
+    @ApiModelProperty(value = "总充值成本(买量) = 消耗 / 新用户累计充值人数")
+    private BigDecimal buyTotalRechargeCost;
+
+    @ApiModelProperty(value = "注册成本(自然量) = 消耗 / 注册人数")
+    private BigDecimal natureRegCost;
+
+    @ApiModelProperty(value = "总回收率(自然量) = 新用户累计充值金额 / 消耗")
+    private BigDecimal natureTotalRoi;
+
+    @ApiModelProperty(value = "首日充值成本(自然量) = 消耗 / 首日新用户充值人数")
+    private BigDecimal natureFirstNewUserRechargeCost;
+
+    @ApiModelProperty(value = "总充值成本(自然量) = 消耗 / 新用户累计充值人数")
+    private BigDecimal natureTotalRechargeCost;
+
 }

+ 35 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameDataDayVO.java

@@ -1416,5 +1416,40 @@ public class GameDataDayVO {
     @ApiModelProperty(value = "付费趋势:总(总量)金额/人数/增/回/倍")
     private RechargeTrendVO amountSumTrend;
 
+    @ApiModelProperty(value = "注册成本(总量) = 消耗 / 注册人数")
+    private BigDecimal regCost;
+
+    @ApiModelProperty(value = "总回收率(总量) = 新用户累计充值金额 / 消耗")
+    private BigDecimal totalRoi;
+
+    @ApiModelProperty(value = "首日充值成本(总量) = 消耗 / 首日新用户充值人数")
+    private BigDecimal firstNewUserRechargeCost;
+
+    @ApiModelProperty(value = "总充值成本(总量) = 消耗 / 新用户累计充值人数")
+    private BigDecimal totalRechargeCost;
+
+    @ApiModelProperty(value = "注册成本(买量) = 消耗 / 注册人数")
+    private BigDecimal buyRegCost;
+
+    @ApiModelProperty(value = "总回收率(买量) = 新用户累计充值金额 / 消耗")
+    private BigDecimal buyTotalRoi;
+
+    @ApiModelProperty(value = "首日充值成本(买量) = 消耗 / 首日新用户充值人数")
+    private BigDecimal buyFirstNewUserRechargeCost;
+
+    @ApiModelProperty(value = "总充值成本(买量) = 消耗 / 新用户累计充值人数")
+    private BigDecimal buyTotalRechargeCost;
+
+    @ApiModelProperty(value = "注册成本(自然量) = 消耗 / 注册人数")
+    private BigDecimal natureRegCost;
+
+    @ApiModelProperty(value = "总回收率(自然量) = 新用户累计充值金额 / 消耗")
+    private BigDecimal natureTotalRoi;
+
+    @ApiModelProperty(value = "首日充值成本(自然量) = 消耗 / 首日新用户充值人数")
+    private BigDecimal natureFirstNewUserRechargeCost;
+
+    @ApiModelProperty(value = "总充值成本(自然量) = 消耗 / 新用户累计充值人数")
+    private BigDecimal natureTotalRechargeCost;
 
 }

+ 73 - 9
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameDataTotalVO.java

@@ -152,16 +152,19 @@ public class GameDataTotalVO {
     private BigDecimal buyNewUserTotalAmount;
 
     /**
-     * 首日付费率(买量)
+     * 首日Roi(买量)
      */
-    @ApiModelProperty(value = "首日付费率(买量)")
+    @ApiModelProperty(value = "首日Roi(买量)")
     private BigDecimal buyFirstRoi;
 
+    @ApiModelProperty(value = "首日付费率(买量)")
+    private BigDecimal buyFirstAmountRate;
+
     /**
      * 当天付费率(买量)
      */
     @ApiModelProperty(value = "当天付费率(买量)")
-    private BigDecimal buyTodayRoi;
+    private BigDecimal buyTodayAmountRate;
 
     /**
      * 新用户付费率(买量)
@@ -344,16 +347,19 @@ public class GameDataTotalVO {
     private BigDecimal natureNewUserTotalAmount;
 
     /**
-     * 首日付费率(自然量)
+     * 首日Roi(自然量)
      */
-    @ApiModelProperty(value = "首日付费率(自然量)")
+    @ApiModelProperty(value = "首日Roi(自然量)")
     private BigDecimal natureFirstRoi;
 
+    @ApiModelProperty(value = "首日付费率")
+    private BigDecimal natureFirstAmountRate;
+
     /**
      * 当天付费率(自然量)
      */
     @ApiModelProperty(value = "当天付费率(自然量)")
-    private BigDecimal natureTodayRoi;
+    private BigDecimal natureTodayAmountRate;
 
     /**
      * 新用户付费率(自然量)
@@ -536,16 +542,19 @@ public class GameDataTotalVO {
     private BigDecimal newUserTotalAmount;
 
     /**
-     * 首日付费率(总量)
+     * 首日Roi(总量)
      */
-    @ApiModelProperty(value = "首日付费率(总量)")
+    @ApiModelProperty(value = "首日Roi(总量)")
     private BigDecimal firstRoi;
 
+    @ApiModelProperty(value = "首日付费率")
+    private BigDecimal firstAmountRate;
+
     /**
      * 当天付费率(总量)
      */
     @ApiModelProperty(value = "当天付费率(总量)")
-    private BigDecimal todayRoi;
+    private BigDecimal todayAmountRate;
 
     /**
      * 新用户付费率(总量)
@@ -637,4 +646,59 @@ public class GameDataTotalVO {
     @ApiModelProperty(value = "新用户付费ARPU(总量)")
     private BigDecimal newUserAmountArpu;
 
+
+    @ApiModelProperty(value = "注册成本(总量) = 消耗 / 注册人数")
+    private BigDecimal regCost;
+
+    @ApiModelProperty(value = "总回收率(总量) = 新用户累计充值金额 / 消耗")
+    private BigDecimal totalRoi;
+
+    @ApiModelProperty(value = "首日充值成本(总量) = 消耗 / 首日新用户充值人数")
+    private BigDecimal firstNewUserRechargeCost;
+
+    @ApiModelProperty(value = "总充值成本(总量) = 消耗 / 新用户累计充值人数")
+    private BigDecimal totalRechargeCost;
+
+    @ApiModelProperty(value = "新用户回收率(总量) = 新用户充值今日 / 消耗")
+    private BigDecimal newUserRechargeRate;
+
+    @ApiModelProperty(value = "新用户充值成本(总量) = 消耗 / 新用户充值人数")
+    private BigDecimal newUserRechargeCost;
+
+    @ApiModelProperty(value = "注册成本(买量) = 消耗 / 注册人数")
+    private BigDecimal buyRegCost;
+
+    @ApiModelProperty(value = "总回收率(买量) = 新用户累计充值金额 / 消耗")
+    private BigDecimal buyTotalRoi;
+
+    @ApiModelProperty(value = "首日充值成本(买量) = 消耗 / 首日新用户充值人数")
+    private BigDecimal buyFirstNewUserRechargeCost;
+
+    @ApiModelProperty(value = "总充值成本(买量) = 消耗 / 新用户累计充值人数")
+    private BigDecimal buyTotalRechargeCost;
+
+    @ApiModelProperty(value = "新用户回收率(买量) = 新用户充值今日 / 消耗")
+    private BigDecimal buyNewUserRechargeRate;
+
+    @ApiModelProperty(value = "新用户充值成本(买量) = 消耗 / 新用户充值人数")
+    private BigDecimal buyNewUserRechargeCost;
+
+    @ApiModelProperty(value = "注册成本(自然量) = 消耗 / 注册人数")
+    private BigDecimal natureRegCost;
+
+    @ApiModelProperty(value = "总回收率(自然量) = 新用户累计充值金额 / 消耗")
+    private BigDecimal natureTotalRoi;
+
+    @ApiModelProperty(value = "首日充值成本(自然量) = 消耗 / 首日新用户充值人数")
+    private BigDecimal natureFirstNewUserRechargeCost;
+
+    @ApiModelProperty(value = "总充值成本(自然量) = 消耗 / 新用户累计充值人数")
+    private BigDecimal natureTotalRechargeCost;
+
+    @ApiModelProperty(value = "新用户回收率(自然量) = 新用户充值今日 / 消耗")
+    private BigDecimal natureNewUserRechargeRate;
+
+    @ApiModelProperty(value = "新用户充值成本(自然量) = 消耗 / 新用户充值人数")
+    private BigDecimal natureNewUserRechargeCost;
+
 }

+ 175 - 48
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameDataServiceImpl.java

@@ -52,10 +52,15 @@ import java.util.stream.Collectors;
 @Slf4j
 public class GameDataServiceImpl implements IGameDataService {
     private static final List<Tuple2<Field, Field>> dayNFieldMapList;
+    private static final List<Tuple2<Field, Field>> dayNTotalFieldMapList;
     static  {
         Map<String, Field> fieldMap = new HashMap<>();
+        Map<String, Field> fieldTotalMap = new HashMap<>();
         List<Field> dayNFieldList = new ArrayList<>();
+        List<Field> dayNTotalFieldList = new ArrayList<>();
         Class<?> tempClazz = GameDataDayVO.class;
+        Class<?> tempTotalClazz = GameDataDayTotalVO.class;
+
         while (tempClazz != null) {
             Field[] fields = tempClazz.getDeclaredFields();
             for (Field field : fields) {
@@ -69,6 +74,21 @@ public class GameDataServiceImpl implements IGameDataService {
             }
             tempClazz = tempClazz.getSuperclass();
         }
+
+        while (tempTotalClazz != null) {
+            Field[] fields = tempTotalClazz.getDeclaredFields();
+            for (Field field : fields) {
+                if (Modifier.isFinal(field.getModifiers()) || Modifier.isStatic(field.getModifiers())) {
+                    continue;
+                }
+                fieldTotalMap.put(field.getName(), field);
+                if (field.getType() == RechargeTrendVO.class) {
+                    dayNTotalFieldList.add(field);
+                }
+            }
+            tempTotalClazz = tempTotalClazz.getSuperclass();
+        }
+
         if(dayNFieldList.isEmpty()) {
             dayNFieldMapList  = Collections.emptyList();
         } else {
@@ -82,6 +102,20 @@ public class GameDataServiceImpl implements IGameDataService {
                 }
             }
         }
+
+        if(dayNTotalFieldList.isEmpty()) {
+            dayNTotalFieldMapList  = Collections.emptyList();
+        } else {
+            dayNTotalFieldMapList = new ArrayList<>(dayNTotalFieldList.size());
+            for(Field dayNTotalField : dayNTotalFieldList) {
+                dayNTotalField.setAccessible(true);
+                Field sourceField = fieldMap.get(dayNTotalField.getName().replace("Trend", ""));
+                sourceField.setAccessible(true);
+                if(sourceField != null) {
+                    dayNTotalFieldMapList.add(Tuples.of(sourceField, dayNTotalField));
+                }
+            }
+        }
     }
 
     @Autowired
@@ -195,8 +229,10 @@ public class GameDataServiceImpl implements IGameDataService {
         gameDataDayTotalsql.setEntity(dao.getEntity(GameDataDayTotalVO.class));
         //执行sql
         dao.execute(gameDataDayTotalsql);
-
-        return gameDataDayTotalsql.getObject(GameDataDayTotalVO.class);
+        //得到每日总计对象
+        GameDataDayTotalVO vo = gameDataDayTotalsql.getObject(GameDataDayTotalVO.class);
+        //formatDayNTotal(vo);
+        return vo;
     }
 
     /**
@@ -874,6 +910,10 @@ public class GameDataServiceImpl implements IGameDataService {
         }
     }
 
+    /**
+     * 通过反射赋值每日趋势
+     * @param vo
+     */
     private void formatDayN(GameDataDayVO vo) {
         if(CollectionUtils.isEmpty(dayNFieldMapList)) {
             return;
@@ -895,46 +935,55 @@ public class GameDataServiceImpl implements IGameDataService {
     }
 
     /**
-     * 通过反射使用set方法 得到复充趋势的值
-     *
-     * @param vo        需要操作的对象
-     * @param timeType  D1-D30 , M1-M6
-     * @param tableType buy、nature 总
+     * 通过反射赋值每日总计趋势
+     * @param vo
      */
-    private void setAgainContentByNum(GameDataDayVO vo, String timeType, String tableType) {
-        try {
-            //反射得到复充趋势数据字符串
-            Field f;
-            if (StringUtils.isNotBlank(tableType)) {
-                f = vo.getClass().getDeclaredField(tableType + "Amount" + timeType);
-            } else {
-                f = vo.getClass().getDeclaredField("amount" + timeType);
-            }
-            f.setAccessible(true);
-            //分割数据
-            String[] strs = f.get(vo).toString().split("/");
-
-            //反射得到set方法
-            Field field;
-            if (StringUtils.isNotBlank(tableType)) {
-                field = vo.getClass().getDeclaredField(tableType + "Amount" + timeType + "Trend");
-            } else {
-                field = vo.getClass().getDeclaredField("amount" + timeType + "Trend");
-            }
-
-            field.setAccessible(true);
-            //赋值
-            field.set(vo, RechargeTrendVO.builder()
-                    .rechargeMoney(new BigDecimal(strs[0]))
-                    .rechargeUserCount(Long.valueOf(strs[1]))
-                    .increase(new BigDecimal(strs[2]))
-                    .back(new BigDecimal(strs[3]))
-                    .multiples(new BigDecimal(strs[4]))
-                    .build());
-        } catch (Exception e) {
-            e.printStackTrace();
-            throw new BaseException("get/set 方法出错,映射出错");
+    private void formatDayNTotal(GameDataDayTotalVO vo) {
+        if(CollectionUtils.isEmpty(dayNTotalFieldMapList)) {
+            return;
         }
+
+        //D1的充值金额(买量、自然量、总量)
+        BigDecimal amountD1 = new BigDecimal(vo.getAmountD1().split("/")[0]);
+        BigDecimal buyAmountD1 = new BigDecimal(vo.getBuyAmountD1().split("/")[0]);
+        BigDecimal natureAmountD1 = new BigDecimal(vo.getNatureAmountD1().split("/")[0]);
+
+        dayNTotalFieldMapList.forEach(dayNTotalFieldMap -> {
+            try {
+                String[] temps = ((String) dayNTotalFieldMap.getT1().get(vo)).split("/");
+                BigDecimal dNAmount = new BigDecimal(temps[0]);
+                BigDecimal d1ToDNTotalAmount = new BigDecimal(temps[1]);
+
+                if (temps[3].equals("buy")) {
+                    dayNTotalFieldMap.getT2().set(vo, RechargeTrendVO.builder()
+                            .rechargeMoney(dNAmount)
+                            .rechargeUserCount(Long.valueOf(temps[2]))
+                            .increase(dNAmount.divide(vo.getCost(), 4, RoundingMode.HALF_UP))
+                            .back(d1ToDNTotalAmount.divide(vo.getCost(), 4, RoundingMode.HALF_UP))
+                            .multiples(d1ToDNTotalAmount.divide(buyAmountD1, 4, RoundingMode.HALF_UP))
+                            .build());
+                } else if (temps.equals("nature")) {
+                    dayNTotalFieldMap.getT2().set(vo, RechargeTrendVO.builder()
+                            .rechargeMoney(dNAmount)
+                            .rechargeUserCount(Long.valueOf(temps[2]))
+                            .increase(dNAmount.divide(vo.getCost(), 4, RoundingMode.HALF_UP))
+                            .back(d1ToDNTotalAmount.divide(vo.getCost(), 4, RoundingMode.HALF_UP))
+                            .multiples(d1ToDNTotalAmount.divide(natureAmountD1, 4, RoundingMode.HALF_UP))
+                            .build());
+                } else {
+                    dayNTotalFieldMap.getT2().set(vo, RechargeTrendVO.builder()
+                            .rechargeMoney(dNAmount)
+                            .rechargeUserCount(Long.valueOf(temps[2]))
+                            .increase(dNAmount.divide(vo.getCost(), 4, RoundingMode.HALF_UP))
+                            .back(d1ToDNTotalAmount.divide(vo.getCost(), 4, RoundingMode.HALF_UP))
+                            .multiples(d1ToDNTotalAmount.divide(amountD1, 4, RoundingMode.HALF_UP))
+                            .build());
+                }
+
+            } catch (IllegalAccessException e) {
+                throw new RuntimeException(e);
+            }
+        });
     }
 
     /**
@@ -1313,7 +1362,16 @@ public class GameDataServiceImpl implements IGameDataService {
                 SUM(buy_reg_num) buy_reg_num,
                 SUM(nature_reg_num) nature_reg_num,
                 SUM(reg_num) reg_num,
-                                
+                
+                """
+                + amountDay("buy_") +
+                """
+                CONCAT(SUM(CAST(SPLIT_PART(buy_amount_m1 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(buy_amount_m1, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(buy_amount_m1, '/', 2) AS BIGINT)),'/buy') AS buy_amount_m1,
+                CONCAT(SUM(CAST(SPLIT_PART(buy_amount_m2 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(buy_amount_m2, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(buy_amount_m2, '/', 2) AS BIGINT)),'/buy') AS buy_amount_m2,
+                CONCAT(SUM(CAST(SPLIT_PART(buy_amount_m3 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(buy_amount_m3, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(buy_amount_m3, '/', 2) AS BIGINT)),'/buy') AS buy_amount_m3,
+                CONCAT(SUM(CAST(SPLIT_PART(buy_amount_m6 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(buy_amount_m6, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(buy_amount_m6, '/', 2) AS BIGINT)),'/buy') AS buy_amount_m6,
+                CONCAT(SUM(CAST(SPLIT_PART(buy_amount_y1 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(buy_amount_m6, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(buy_amount_y1, '/', 2) AS BIGINT)),'/buy') AS buy_amount_y1,
+                CONCAT(SUM(CAST(SPLIT_PART(buy_amount_sum , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(buy_amount_sum, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(buy_amount_sum, '/', 2) AS BIGINT)),'/buy') AS buy_amount_sum,
                 SUM(buy_first_new_user_amount_count) buy_first_new_user_amount_count,
                 SUM(buy_first_new_user_amount_num) buy_first_new_user_amount_num,
                 SUM(buy_first_new_user_amount) buy_first_new_user_amount,
@@ -1339,6 +1397,15 @@ public class GameDataServiceImpl implements IGameDataService {
                 round(if(SUM(buy_new_user_total_amount_num) > 0 , SUM(buy_new_user_total_amount) / SUM(buy_new_user_total_amount_num), 0), 2) buy_today_amount_arpu,
                 round(if(SUM(buy_amount_num) > 0, SUM(buy_amount) / SUM(buy_amount_num), 0), 2) buy_amount_arpu,
 
+                """
+                + amountDay("nature_") +
+                """
+                CONCAT(SUM(CAST(SPLIT_PART(nature_amount_m1 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(nature_amount_m1, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(nature_amount_m1, '/', 2) AS BIGINT)),'/nature') AS nature_amount_m1,
+                CONCAT(SUM(CAST(SPLIT_PART(nature_amount_m2 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(nature_amount_m2, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(nature_amount_m2, '/', 2) AS BIGINT)),'/nature') AS nature_amount_m2,
+                CONCAT(SUM(CAST(SPLIT_PART(nature_amount_m3 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(nature_amount_m3, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(nature_amount_m3, '/', 2) AS BIGINT)),'/nature') AS nature_amount_m3,
+                CONCAT(SUM(CAST(SPLIT_PART(nature_amount_m6 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(nature_amount_m6, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(nature_amount_m6, '/', 2) AS BIGINT)),'/nature') AS nature_amount_m6,
+                CONCAT(SUM(CAST(SPLIT_PART(nature_amount_y1 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(nature_amount_m6, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(nature_amount_y1, '/', 2) AS BIGINT)),'/nature') AS nature_amount_y1,
+                CONCAT(SUM(CAST(SPLIT_PART(nature_amount_sum , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(nature_amount_sum, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(nature_amount_sum, '/', 2) AS BIGINT)),'/nature') AS nature_amount_sum,
                 SUM(nature_first_new_user_amount_count) nature_first_new_user_amount_count,
                 SUM(nature_first_new_user_amount_num) nature_first_new_user_amount_num,
                 SUM(nature_first_new_user_amount) nature_first_new_user_amount,
@@ -1363,7 +1430,16 @@ public class GameDataServiceImpl implements IGameDataService {
                 round(if(SUM(nature_first_new_user_amount_num) > 0 , SUM(nature_first_new_user_amount) / SUM(nature_first_new_user_amount_num), 0), 2) nature_first_amount_arpu,
                 round(if(SUM(nature_new_user_total_amount_num) > 0 , SUM(nature_new_user_total_amount) / SUM(nature_new_user_total_amount_num), 0), 2) nature_today_amount_arpu,
                 round(if(SUM(nature_amount_num) > 0, SUM(nature_amount) / SUM(nature_amount_num), 0), 2) nature_amount_arpu,
-                                
+                
+                """
+                + amountDay("") +
+                """
+                CONCAT(SUM(CAST(SPLIT_PART(amount_m1 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m1, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m1, '/', 2) AS BIGINT)),'/total') AS amount_m1,
+                CONCAT(SUM(CAST(SPLIT_PART(amount_m2 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m2, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m2, '/', 2) AS BIGINT)),'/total') AS amount_m2,
+                CONCAT(SUM(CAST(SPLIT_PART(amount_m3 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m3, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m3, '/', 2) AS BIGINT)),'/total') AS amount_m3,
+                CONCAT(SUM(CAST(SPLIT_PART(amount_m6 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m6, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m6, '/', 2) AS BIGINT)),'/total') AS amount_m6,
+                CONCAT(SUM(CAST(SPLIT_PART(amount_y1 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m6, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_y1, '/', 2) AS BIGINT)),'/total') AS amount_y1,
+                CONCAT(SUM(CAST(SPLIT_PART(amount_sum , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_sum, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_sum, '/', 2) AS BIGINT)),'/total') AS amount_sum,
                 SUM(first_new_user_amount_count) first_new_user_amount_count,
                 SUM(first_new_user_amount_num) first_new_user_amount_num,
                 SUM(first_new_user_amount) first_new_user_amount,
@@ -1396,6 +1472,54 @@ public class GameDataServiceImpl implements IGameDataService {
                 """;
     }
 
+    /**
+     * 游戏每日总计趋势sql
+     * @param type 输入的参数表示选择表的类型
+     * @return String : Dn的充值金额 / D1-Dn的充值总金额 / Dn的充值人数
+     */
+    private String amountDay(String type){
+
+        //修改拼接字符串
+        String temp;
+        if (type.equals("buy_")) {
+            temp = "buy";
+        } else if (type.equals("nature")) {
+            temp = "nature";
+        } else {
+            temp = "total";
+        }
+
+        StringBuilder trendDay = new StringBuilder(StringUtils.EMPTY);
+        for (int day = 1; day <= 29; day++) {
+            trendDay.append("CONCAT(")
+                    .append("SUM(CAST(SPLIT_PART(")
+                    .append(type)
+                    .append("amount_d")
+                    .append(day)
+                    .append(" , '/', 1) AS DECIMAL(10, 2))), ")
+                    .append("'/', ")
+                    .append("SUM(CAST(SPLIT_PART(")
+                    .append(type)
+                    .append("amount_d")
+                    .append(day)
+                    .append(", '/', 6) AS DECIMAL(10, 2))), ")
+                    .append("'/', ")
+                    .append("SUM(CAST(SPLIT_PART(")
+                    .append(type)
+                    .append("amount_d")
+                    .append(day)
+                    .append(", '/', 2) AS BIGINT))")
+                    .append(",'/")
+                    .append(temp)
+                    .append("'")
+                    .append(") AS ")
+                    .append(type)
+                    .append("amount_d")
+                    .append(day).append(",");
+        }
+        return trendDay.toString();
+    }
+
     /**
      * 游戏总数据SQL
      *
@@ -1433,12 +1557,15 @@ public class GameDataServiceImpl implements IGameDataService {
                     sum(a.new_user_total_amount_num) new_user_total_amount_num,
                     sum(a.new_user_total_amount) new_user_total_amount,
                     
-                    round(if(sum(a.buy_reg_num) > 0 ,sum(a.buy_first_new_user_amount_num) / sum(a.buy_reg_num), 0), 4) buy_first_roi,
-                    round(if(sum(a.buy_reg_num) > 0, sum(a.buy_new_user_total_amount_num) / sum(a.buy_reg_num), 0), 4) buy_today_roi,
-                    round(if(sum(a.nature_reg_num) > 0 ,sum(a.nature_first_new_user_amount_num) / sum(a.nature_reg_num), 0), 4) nature_first_roi,
-                    round(if(sum(a.nature_reg_num) > 0, sum(a.nature_new_user_total_amount_num) / sum(a.nature_reg_num), 0), 4) nature_today_roi,
-                    round(if(sum(a.reg_num) > 0 ,sum(a.first_new_user_amount_num) / sum(a.reg_num), 0), 4) first_roi,
-                    round(if(sum(a.reg_num) > 0, sum(a.new_user_total_amount_num) / sum(a.reg_num), 0), 4) today_roi,
+                    round(if(SUM(a.cost) > 0 , SUM(buy_first_new_user_amount) / SUM(a.cost) ,0), 4) buy_first_roi,
+                    round(if(sum(a.buy_reg_num) > 0 ,sum(a.buy_first_new_user_amount_num) / sum(a.buy_reg_num), 0), 4) buy_first_amount_rate,
+                    round(if(sum(a.buy_reg_num) > 0, sum(a.buy_new_user_total_amount_num) / sum(a.buy_reg_num), 0), 4) buy_today_amount_rate,
+                    round(if(SUM(a.cost) > 0 , SUM(a.nature_first_new_user_amount) / SUM(a.cost) ,0), 4) nature_first_roi,
+                    round(if(sum(a.nature_reg_num) > 0 ,sum(a.nature_first_new_user_amount_num) / sum(a.nature_reg_num), 0), 4) nature_first_amount_rate,
+                    round(if(sum(a.nature_reg_num) > 0, sum(a.nature_new_user_total_amount_num) / sum(a.nature_reg_num), 0), 4) nature_today_amount_rate,
+                    round(if(SUM(a.cost) > 0 , SUM(first_new_user_amount) / SUM(a.cost) ,0), 4) first_roi,
+                    round(if(sum(a.reg_num) > 0 ,sum(a.first_new_user_amount_num) / sum(a.reg_num), 0), 4) first_amount_rate,
+                    round(if(sum(a.reg_num) > 0, sum(a.new_user_total_amount_num) / sum(a.reg_num), 0), 4) today_amount_rate,
                     
                     round(if(sum(a.buy_first_new_user_amount_count) > 0, sum(a.buy_first_new_user_amount) / sum(a.buy_first_new_user_amount_count), 0), 2) buy_first_avg_amount,
                     round(if(sum(a.buy_new_user_total_amount_count) > 0, sum(a.buy_new_user_total_amount) / sum(a.buy_new_user_total_amount_count), 0), 2) buy_today_avg_amount,