Преглед на файлове

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

wcc преди 1 година
родител
ревизия
e4ac8b2784
променени са 31 файла, в които са добавени 1457 реда и са изтрити 108 реда
  1. 0 2
      game-data/game-data-serve/pom.xml
  2. 2 2
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/AccountAgentDayController.java
  3. 11 3
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/GameDataController.java
  4. 2 2
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/RankingController.java
  5. 48 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GameDataWaterDTO.java
  6. 5 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GamePromoteDayDTO.java
  7. 6 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GamePromoteTotalDTO.java
  8. 12 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsAccountAgentDay.java
  9. 6 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsEverydayWater.java
  10. 1 1
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsH5GameDay.java
  11. 12 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/enums/OrderByEnum.java
  12. 239 58
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameDataDayVO.java
  13. 65 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameDataWaterVO.java
  14. 45 9
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GamePromoteDayVO.java
  15. 52 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/PlayerTemplateVO.java
  16. 45 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/RechargeTemplateVO.java
  17. 30 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/RechargeTrendVO.java
  18. 4 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IGameDataService.java
  19. 124 16
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/AccountAgentDayServiceImpl.java
  20. 412 3
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameDataServiceImpl.java
  21. 3 5
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/RankingServiceImpl.java
  22. 34 4
      game-module/game-module-base/src/main/java/com/zanxiang/game/module/base/pojo/enums/PayWayEnum.java
  23. 1 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GamePayWayServiceImpl.java
  24. 1 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/OrderServiceImpl.java
  25. 1 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/PayMerchantServiceImpl.java
  26. 76 0
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/GameRemitLog.java
  27. 12 0
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/GameRemitLogMapper.java
  28. 36 0
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/controller/RemitController.java
  29. 63 0
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/pojo/param/GameRemitLogParam.java
  30. 21 0
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/IGameRemitLogService.java
  31. 88 0
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/GameRemitLogServiceImpl.java

+ 0 - 2
game-data/game-data-serve/pom.xml

@@ -97,12 +97,10 @@
         <dependency>
             <groupId>org.apache.dubbo</groupId>
             <artifactId>dubbo-spring-boot-starter</artifactId>
-            <version>3.2.3</version>
         </dependency>
         <dependency>
             <groupId>org.apache.dubbo</groupId>
             <artifactId>dubbo-metadata-definition-protobuf</artifactId>
-            <version>3.2.3</version>
         </dependency>
         <dependency>
             <groupId>io.springfox</groupId>

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

@@ -23,7 +23,7 @@ public class AccountAgentDayController {
     private IAccountAgentDayService accountAgentDayService;
 
     @ApiOperation(value = "推广每日数据")
-    @PreAuthorize(permissionKey = "gameData:accountAgent:day")
+//    @PreAuthorize(permissionKey = "gameData:accountAgent:day")
     @PostMapping("/day")
     public ResultVO<Page<GamePromoteDayVO>> accountAgentDay(@RequestBody GamePromoteDayDTO dto) {
         return ResultVO.ok(accountAgentDayService.accountAgentDay(dto));
@@ -37,7 +37,7 @@ public class AccountAgentDayController {
     }
 
     @ApiOperation(value = "推广总数据")
-    @PreAuthorize(permissionKey = "gameData:accountAgent:total")
+//    @PreAuthorize(permissionKey = "gameData:accountAgent:total")
     @PostMapping("/total")
     public ResultVO<Page<GamePromoteTotalVO>> accountAgentTotal(@RequestBody GamePromoteTotalDTO dto) {
         return ResultVO.ok(accountAgentDayService.accountAgentTotal(dto));

+ 11 - 3
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/GameDataController.java

@@ -1,10 +1,11 @@
 package com.zanxiang.game.data.serve.controller;
 
-import com.zanxiang.erp.security.annotation.PreAuthorize;
 import com.zanxiang.game.data.serve.pojo.dto.GameDataDayDTO;
 import com.zanxiang.game.data.serve.pojo.dto.GameDataTotalDTO;
+import com.zanxiang.game.data.serve.pojo.dto.GameDataWaterDTO;
 import com.zanxiang.game.data.serve.pojo.vo.GameDataDayVO;
 import com.zanxiang.game.data.serve.pojo.vo.GameDataTotalVO;
+import com.zanxiang.game.data.serve.pojo.vo.GameDataWaterVO;
 import com.zanxiang.game.data.serve.service.IGameDataService;
 import com.zanxiang.game.data.serve.utils.Page;
 import com.zanxiang.module.util.pojo.ResultVO;
@@ -34,7 +35,7 @@ public class GameDataController {
     private IGameDataService gameDataService;
 
     @ApiOperation(value = "游戏每日数据")
-    @PreAuthorize(permissionKey = "gameData:adsGameDay:day")
+    //@PreAuthorize(permissionKey = "gameData:adsGameDay:day")
     @PostMapping("/day")
     @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = GameDataDayVO.class)})
     public ResultVO<Page<GameDataDayVO>> getGameDataDay(@RequestBody GameDataDayDTO dto) {
@@ -43,12 +44,19 @@ public class GameDataController {
 
 
     @ApiOperation(value = "游戏总数据")
-    @PreAuthorize(permissionKey = "gameData:adsGameDay:total")
+    //@PreAuthorize(permissionKey = "gameData:adsGameDay:total")
     @PostMapping("/total")
     @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = GameDataTotalVO.class)})
     public ResultVO<Page<GameDataTotalVO>> getGameDataTotal(@RequestBody GameDataTotalDTO dto) {
         return ResultVO.ok(gameDataService.getGameDataTotal(dto));
     }
 
+    @ApiOperation(value = "每日流水贡献")
+    //@PreAuthorize(permissionKey = "gameData:adsGameDay:water")
+    @PostMapping("/water")
+    public ResultVO<Page<GameDataWaterVO>> getGameDataWater(@RequestBody GameDataWaterDTO dto) {
+        return ResultVO.ok(gameDataService.getGameDataWater(dto));
+    }
+
 
 }

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

@@ -31,9 +31,9 @@ public class RankingController {
     }
 
     @ApiOperation(value = "玩家充值排行榜")
-    @PreAuthorize(permissionKey = "gameData:ranking:player")
+//    @PreAuthorize(permissionKey = "gameData:ranking:player")
     @PostMapping("/player")
-    public ResultVO<Page<PlayerRechargeRankingVO>> userRanking(@RequestBody RechargeRankingDTO dto) {
+    public ResultVO<Page<PlayerRechargeRankingVO>> playerRanking(@RequestBody RechargeRankingDTO dto) {
         return ResultVO.ok(rankingService.playerRanking(dto));
     }
 }

+ 48 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GameDataWaterDTO.java

@@ -0,0 +1,48 @@
+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.math.BigInteger;
+import java.time.LocalDate;
+
+/**
+ * @author tianhua
+ * @time 2023/7/12
+ * @Description 游戏总数据前端查询参数实体
+ **/
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class GameDataWaterDTO extends BasePage {
+
+    /**
+     * 推广游戏名称
+     */
+    @ApiModelProperty(notes = "游戏名称")
+    private String gameName;
+
+    /**
+     * 推广游戏应用类别
+     */
+    @ApiModelProperty(notes = "游戏应用类型")
+    private String gameClassify;
+
+    /**
+     * 充值时间(开始)
+     */
+    @ApiModelProperty(notes = "充值时间")
+    private LocalDate rechargeDate;
+
+    @ApiModelProperty(notes = "排序字段")
+    private String sortFiled;
+
+    @ApiModelProperty(notes = "排序方式:升序asc;降序desc")
+    private String sortType;
+
+}

+ 5 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GamePromoteDayDTO.java

@@ -35,5 +35,10 @@ public class GamePromoteDayDTO extends BasePage {
     @ApiModelProperty(notes = "消耗结束日期")
     private LocalDate endDay;
 
+    @ApiModelProperty(notes = "排序字段")
+    private String sortFiled;
+
+    @ApiModelProperty(notes = "排序方式:升序asc;降序desc")
+    private String sortType;
 
 }

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

@@ -39,4 +39,10 @@ public class GamePromoteTotalDTO extends BasePage {
     private LocalDate rechargeBeginDay;
     @ApiModelProperty(notes = "充值结束日期")
     private LocalDate rechargeEndDay;
+
+    @ApiModelProperty(notes = "排序字段")
+    private String sortFiled;
+
+    @ApiModelProperty(notes = "排序方式:升序asc;降序desc")
+    private String sortType;
 }

+ 12 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsAccountAgentDay.java

@@ -490,6 +490,12 @@ public class AdsAccountAgentDay implements Serializable {
     @Column
     private String amountD3;
 
+    /**
+     * 付费趋势第五天总:增/回/倍
+     */
+    @Column
+    private String amountD5;
+
     /**
      * 付费趋势第七天总:增/回/倍
      */
@@ -520,6 +526,12 @@ public class AdsAccountAgentDay implements Serializable {
     @Column
     private String amountM3;
 
+    /**
+     * 付费趋势第六月总:增/回/倍
+     */
+    @Column
+    private String amountM6;
+
     /**
      * 付费趋势总:增/回/倍
      */

+ 6 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsEverydayWater.java

@@ -107,6 +107,12 @@ public class AdsEverydayWater implements Serializable {
     @Column
     private Long userId;
 
+    /**
+     * 用户名称
+     */
+    @Column
+    private String userName;
+
     /**
      * 用户充值金额
      */

+ 1 - 1
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsH5GameDay.java

@@ -28,7 +28,7 @@ import java.time.LocalDate;
 @PK({"dt", "gameId", "gameName", "gameClassify", "sourceSystem"})
 public class AdsH5GameDay implements Serializable {
     private static final long serialVersionUID = 1L;
-    public static final String TABLE_NAME = "ads_H5_game_day";
+    public static final String TABLE_NAME = "ads_h5_game_day";
 
     /**
      * ID

+ 12 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/enums/OrderByEnum.java

@@ -0,0 +1,12 @@
+package com.zanxiang.game.data.serve.pojo.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum OrderByEnum {
+    DESC("desc"),
+    ASC("asc");
+    private final String orderType;
+}

+ 239 - 58
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameDataDayVO.java

@@ -472,183 +472,364 @@ public class GameDataDayVO {
     private BigDecimal amountArpu;
 
     /**
-     * 付费趋势:1天(买量)金额/人数/增/回/倍
+     * 付费趋势:1天(买量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:1天(买量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:1天(买量)金额/人数/增/回/倍")
     private String buyAmountD1;
 
     /**
-     * 付费趋势:3天(买量)金额/人数/增/回/倍
+     * 付费趋势:3天(买量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:3天(买量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:3天(买量)金额/人数/增/回/倍")
     private String buyAmountD3;
 
     /**
      * 付费趋势:5天(买量)金额/人数/增/回/倍
      */
-    @ApiModelProperty(value = "付费趋势:5天(买量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:5天(买量)金额/人数/增/回/倍")
     private String buyAmountD5;
 
     /**
-     * 付费趋势:7天(买量)金额/人数/增/回/倍
+     * 付费趋势:7天(买量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:7天(买量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:7天(买量)金额/人数/增/回/倍")
     private String buyAmountD7;
 
     /**
-     * 付费趋势:15天(买量)金额/人数/增/回/倍
+     * 付费趋势:15天(买量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:15天(买量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:15天(买量)金额/人数/增/回/倍")
     private String buyAmountD15;
 
     /**
-     * 付费趋势:1个月(买量)金额/人数/增/回/倍
+     * 付费趋势:1个月(买量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:1个月(买量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:1个月(买量)金额/人数/增/回/倍")
     private String buyAmountM1;
 
     /**
-     * 付费趋势:2个月(买量)金额/人数/增/回/倍
+     * 付费趋势:2个月(买量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:2个月(买量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:2个月(买量)金额/人数/增/回/倍")
     private String buyAmountM2;
 
     /**
-     * 付费趋势:3个月(买量)金额/人数/增/回/倍
+     * 付费趋势:3个月(买量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:3个月(买量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:3个月(买量)金额/人数/增/回/倍")
     private String buyAmountM3;
 
     /**
-     * 付费趋势:6个月(买量)金额/人数/增/回/倍
+     * 付费趋势:6个月(买量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:6个月(买量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:6个月(买量)金额/人数/增/回/倍")
     private String buyAmountM6;
 
     /**
-     * 付费趋势:总(买量)金额/人数/增/回/倍
+     * 付费趋势:总(买量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:总(买量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:总(买量)金额/人数/增/回/倍")
     private String buyAmountSum;
 
     /**
-     * 付费趋势:1天(自然量)金额/人数/增/回/倍
+     * 付费趋势:1天(自然量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:1天(自然量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:1天(自然量)金额/人数/增/回/倍")
     private String natureAmountD1;
 
     /**
-     * 付费趋势:3天(自然量)金额/人数/增/回/倍
+     * 付费趋势:3天(自然量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:3天(自然量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:3天(自然量)金额/人数/增/回/倍")
     private String natureAmountD3;
 
     /**
-     * 付费趋势:5天(自然量)金额/人数/增/回/倍
+     * 付费趋势:5天(自然量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:5天(自然量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:5天(自然量)金额/人数/增/回/倍")
     private String natureAmountD5;
 
     /**
-     * 付费趋势:7天(自然量)金额/人数/增/回/倍
+     * 付费趋势:7天(自然量)金额/人数/增/回/倍(不展示)
      */
     @ApiModelProperty(value = "付费趋势:7天(自然量)金额/人数/增/回/倍")
     private String natureAmountD7;
 
     /**
-     * 付费趋势:15天(自然量)金额/人数/增/回/倍
+     * 付费趋势:15天(自然量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:15天(自然量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:15天(自然量)金额/人数/增/回/倍")
     private String natureAmountD15;
 
     /**
-     * 付费趋势:1个月(自然量)金额/人数/增/回/倍
+     * 付费趋势:1个月(自然量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:1个月(自然量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:1个月(自然量)金额/人数/增/回/倍")
     private String natureAmountM1;
 
     /**
-     * 付费趋势:2个月(自然量)金额/人数/增/回/倍
+     * 付费趋势:2个月(自然量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:2个月(自然量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:2个月(自然量)金额/人数/增/回/倍")
     private String natureAmountM2;
 
     /**
-     * 付费趋势:3个月(自然量)金额/人数/增/回/倍
+     * 付费趋势:3个月(自然量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:3个月(自然量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:3个月(自然量)金额/人数/增/回/倍")
     private String natureAmountM3;
 
     /**
-     * 付费趋势:6个月(自然量)金额/人数/增/回/倍
+     * 付费趋势:6个月(自然量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:6个月(自然量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:6个月(自然量)金额/人数/增/回/倍")
     private String natureAmountM6;
 
     /**
-     * 付费趋势:总(自然量)金额/人数/增/回/倍
+     * 付费趋势:总(自然量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:总(自然量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:总(自然量)金额/人数/增/回/倍")
     private String natureAmountSum;
 
     /**
-     * 付费趋势:1天(总量)金额/人数/增/回/倍
+     * 付费趋势:1天(总量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:1天(总量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:1天(总量)金额/人数/增/回/倍")
     private String amountD1;
 
     /**
-     * 付费趋势:3天(总量)金额/人数/增/回/倍
+     * 付费趋势:3天(总量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:3天(总量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:3天(总量)金额/人数/增/回/倍")
     private String amountD3;
 
     /**
-     * 付费趋势:5天(总量)金额/人数/增/回/倍
+     * 付费趋势:5天(总量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:5天(总量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:5天(总量)金额/人数/增/回/倍")
     private String amountD5;
 
     /**
-     * 付费趋势:7天(总量)金额/人数/增/回/倍
+     * 付费趋势:7天(总量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:7天(总量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:7天(总量)金额/人数/增/回/倍")
     private String amountD7;
 
     /**
-     * 付费趋势:15天(总量)金额/人数/增/回/倍
+     * 付费趋势:15天(总量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:15天(总量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:15天(总量)金额/人数/增/回/倍")
     private String amountD15;
 
     /**
-     * 付费趋势:1个月(总量)金额/人数/增/回/倍
+     * 付费趋势:1个月(总量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:1个月(总量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:1个月(总量)金额/人数/增/回/倍")
     private String amountM1;
 
     /**
-     * 付费趋势:2个月(总量)金额/人数/增/回/倍
+     * 付费趋势:2个月(总量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:2个月(总量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:2个月(总量)金额/人数/增/回/倍")
     private String amountM2;
 
     /**
-     * 付费趋势:3个月(总量)金额/人数/增/回/倍
+     * 付费趋势:3个月(总量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:3个月(总量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:3个月(总量)金额/人数/增/回/倍")
     private String amountM3;
 
     /**
-     * 付费趋势:6个月(总量)金额/人数/增/回/倍
+     * 付费趋势:6个月(总量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:6个月(总量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:6个月(总量)金额/人数/增/回/倍")
     private String amountM6;
 
     /**
-     * 付费趋势:总(总量)金额/人数/增/回/倍
+     * 付费趋势:总(总量)金额/人数/增/回/倍(不展示)
      */
-    @ApiModelProperty(value = "付费趋势:总(总量)金额/人数/增/回/倍")
+    @ApiModelProperty(value = "(不展示)付费趋势:总(总量)金额/人数/增/回/倍")
     private String amountSum;
 
+    /**
+     * 付费趋势:1天(买量)金额/人数/增/回/倍(展示数据)
+     */
+    @ApiModelProperty(value = "付费趋势:1天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD1Trend;
+
+    /**
+     * 付费趋势:3天(买量)金额/人数/增/回/倍(展示数据)
+     */
+    @ApiModelProperty(value = "付费趋势:3天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD3Trend;
+
+    /**
+     * 付费趋势:5天(买量)金额/人数/增/回/倍(展示数据)
+     */
+    @ApiModelProperty(value = "付费趋势:5天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD5Trend;
+
+    /**
+     * 付费趋势:7天(买量)金额/人数/增/回/倍(展示数据)
+     */
+    @ApiModelProperty(value = "付费趋势:7天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD7Trend;
+
+    /**
+     * 付费趋势:15天(买量)金额/人数/增/回/倍(展示数据)
+     */
+    @ApiModelProperty(value = "付费趋势:15天(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountD15Trend;
+
+    /**
+     * 付费趋势:1个月(买量)金额/人数/增/回/倍(展示数据)
+     */
+    @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 = "付费趋势:总(买量)金额/人数/增/回/倍")
+    private RechargeTrendVO buyAmountSumTrend;
+
+    /**
+     * 付费趋势:1天(自然量)金额/人数/增/回/倍(展示数据)
+     */
+    @ApiModelProperty(value = "付费趋势:1天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD1Trend;
+
+    /**
+     * 付费趋势:3天(自然量)金额/人数/增/回/倍(展示数据)
+     */
+    @ApiModelProperty(value = "付费趋势:3天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD3Trend;
+
+    /**
+     * 付费趋势:5天(自然量)金额/人数/增/回/倍(展示数据)
+     */
+    @ApiModelProperty(value = "付费趋势:5天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD5Trend;
+
+    /**
+     * 付费趋势:7天(自然量)金额/人数/增/回/倍(展示数据)
+     */
+    @ApiModelProperty(value = "付费趋势:7天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD7Trend;
+
+    /**
+     * 付费趋势:15天(自然量)金额/人数/增/回/倍(展示数据)
+     */
+    @ApiModelProperty(value = "付费趋势:15天(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountD15Trend;
+
+    /**
+     * 付费趋势:1个月(自然量)金额/人数/增/回/倍(展示数据)
+     */
+    @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 = "付费趋势:总(自然量)金额/人数/增/回/倍")
+    private RechargeTrendVO natureAmountSumTrend;
+
+    /**
+     * 付费趋势:1天(总量)金额/人数/增/回/倍(展示数据)
+     */
+    @ApiModelProperty(value = "付费趋势:1天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD1Trend;
+
+    /**
+     * 付费趋势:3天(总量)金额/人数/增/回/倍(展示数据)
+     */
+    @ApiModelProperty(value = "付费趋势:3天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD3Trend;
+
+    /**
+     * 付费趋势:5天(总量)金额/人数/增/回/倍(展示数据)
+     */
+    @ApiModelProperty(value = "付费趋势:5天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD5Trend;
+
+    /**
+     * 付费趋势:7天(总量)金额/人数/增/回/倍(展示数据)
+     */
+    @ApiModelProperty(value = "付费趋势:7天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD7Trend;
+
+    /**
+     * 付费趋势:15天(总量)金额/人数/增/回/倍(展示数据)
+     */
+    @ApiModelProperty(value = "付费趋势:15天(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountD15Trend;
+
+    /**
+     * 付费趋势:1个月(总量)金额/人数/增/回/倍(展示数据)
+     */
+    @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 = "付费趋势:总(总量)金额/人数/增/回/倍")
+    private RechargeTrendVO amountSumTrend;
+
+
 }

+ 65 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameDataWaterVO.java

@@ -0,0 +1,65 @@
+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 org.nutz.dao.entity.annotation.Column;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * @author tianhua
+ * @time 2023/7/12
+ * @Description 返回给前端的游戏总数据实体
+ **/
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class GameDataWaterVO {
+    private Long id;
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty("游戏ID")
+    private Long gameId;
+
+    /**
+     * 游戏名称
+     */
+    @ApiModelProperty("游戏名称")
+    private String gameName;
+
+    /**
+     * 游戏类别
+     */
+    @ApiModelProperty("游戏类别")
+    private String gameClassify;
+
+    /**
+     * 充值金额总
+     */
+    @ApiModelProperty("充值金额总")
+    private BigDecimal amount;
+
+    /**
+     * 买量金额
+     */
+    @ApiModelProperty("买量金额")
+    private BigDecimal buyAmount;
+
+    /**
+     * 自然量充值金额
+     */
+    @ApiModelProperty("自然量充值金额")
+    private BigDecimal natureAmount;
+
+    private List<RechargeTemplateVO> rechargeTemplateVOList;
+
+    private List<PlayerTemplateVO> playerTemplateVOS;
+}

+ 45 - 9
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GamePromoteDayVO.java

@@ -228,35 +228,71 @@ public class GamePromoteDayVO {
     @ApiModelProperty(notes = "首日付费Arpu=首日新用户充值金额/首日新用户充值人数")
     private BigDecimal firstRechargeArpu;
 
-    @ApiModelProperty(notes = "付费Arpu=新用户累计充值金额/新用户累计充值人数")
+    @ApiModelProperty(notes = "当天付费Arpu=新用户累计充值金额/新用户累计充值人数")
     private BigDecimal todayRechargeArpu;
 
     @ApiModelProperty(notes = "账面Arpu=账面充值金额/账面充值人数")
     private BigDecimal showRechargeArpu;
 
+    @ApiModelProperty(notes = "不展示--付费趋势:1天")
+    private String trendDay1;
+
+    @ApiModelProperty(notes = "不展示--付费趋势:3天")
+    private String trendDay3;
+
+    @ApiModelProperty(notes = "不展示--付费趋势:5天")
+    private String trendDay5;
+
+    @ApiModelProperty(notes = "不展示--付费趋势:7天")
+    private String trendDay7;
+
+    @ApiModelProperty(notes = "不展示--付费趋势:15天")
+    private String trendDay15;
+
+    @ApiModelProperty(notes = "不展示--付费趋势:1个月")
+    private String trendMonth1;
+
+    @ApiModelProperty(notes = "不展示--付费趋势:2个月")
+    private String trendMonth2;
+
+    @ApiModelProperty(notes = "不展示--付费趋势:3个月")
+    private String trendMonth3;
+
+    @ApiModelProperty(notes = "不展示--付费趋势:6个月")
+    private String trendMonth6;
+
+    @ApiModelProperty(notes = "不展示--付费趋势:总")
+    private String trendTotal;
+
     @ApiModelProperty(notes = "付费趋势:1天")
-    private String rechargeTrendDay1;
+    private RechargeTrendVO rechargeTrendDay1;
 
     @ApiModelProperty(notes = "付费趋势:3天")
-    private String rechargeTrendDay3;
+    private RechargeTrendVO rechargeTrendDay3;
+
+    @ApiModelProperty(notes = "付费趋势:5天")
+    private RechargeTrendVO rechargeTrendDay5;
 
     @ApiModelProperty(notes = "付费趋势:7天")
-    private String rechargeTrendDay7;
+    private RechargeTrendVO rechargeTrendDay7;
 
     @ApiModelProperty(notes = "付费趋势:15天")
-    private String rechargeTrendDay15;
+    private RechargeTrendVO rechargeTrendDay15;
 
     @ApiModelProperty(notes = "付费趋势:1个月")
-    private String rechargeTrendMonth1;
+    private RechargeTrendVO rechargeTrendMonth1;
 
     @ApiModelProperty(notes = "付费趋势:2个月")
-    private String rechargeTrendMonth2;
+    private RechargeTrendVO rechargeTrendMonth2;
 
     @ApiModelProperty(notes = "付费趋势:3个月")
-    private String rechargeTrendMonth3;
+    private RechargeTrendVO rechargeTrendMonth3;
+
+    @ApiModelProperty(notes = "付费趋势:6个月")
+    private RechargeTrendVO rechargeTrendMonth6;
 
     @ApiModelProperty(notes = "付费趋势:总")
-    private String rechargeTrendTotal;
+    private RechargeTrendVO rechargeTrendTotal;
 
     @ApiModelProperty(notes = "单日付费100+人数")
     private String hundredUserNum;

+ 52 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/PlayerTemplateVO.java

@@ -0,0 +1,52 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+/**
+ * @author tianhua
+ * @time 2023/7/12
+ * @Description 返回给前端的游戏总数据实体
+ **/
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class PlayerTemplateVO {
+    /**
+     * 玩家模板排序
+     */
+    @ApiModelProperty("玩家模板排序")
+    private String userOrderBy;
+
+    /**
+     * 用户ID
+     */
+    @ApiModelProperty("用户ID")
+    private Long userId;
+
+    /**
+     * 用户ID
+     */
+    @ApiModelProperty("用户名称")
+    private String userName;
+
+    /**
+     * 用户充值金额
+     */
+    @ApiModelProperty("用户充值金额")
+    private BigDecimal userAmount;
+
+    /**
+     * 用户充值占比
+     */
+    @ApiModelProperty("用户充值占比")
+    private BigDecimal proportion;
+
+
+}

+ 45 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/RechargeTemplateVO.java

@@ -0,0 +1,45 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+/**
+ * @author tianhua
+ * @time 2023/7/12
+ * @Description 返回给前端的游戏总数据实体
+ **/
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class RechargeTemplateVO {
+    /**
+     * 充值模板排序
+     */
+    @ApiModelProperty("充值模板排序")
+    private String amountOrderBy;
+
+    /**
+     * 充值挡位
+     */
+    @ApiModelProperty("充值挡位")
+    private BigDecimal amountPost;
+
+    /**
+     * 充值次数
+     */
+    @ApiModelProperty("充值次数")
+    private Long amountCount;
+
+    /**
+     * 充值人数
+     */
+    @ApiModelProperty("充值人数")
+    private Long amountNum;
+
+}

+ 30 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/RechargeTrendVO.java

@@ -0,0 +1,30 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class RechargeTrendVO {
+    @ApiModelProperty(notes = "充值人数")
+    private Long rechargeUserCount;
+
+    @ApiModelProperty(notes = "充值金额")
+    private BigDecimal rechargeMoney;
+
+    @ApiModelProperty(notes = "增")
+    private BigDecimal increase;
+
+    @ApiModelProperty(notes = "回")
+    private BigDecimal back;
+
+    @ApiModelProperty(notes = "倍")
+    private BigDecimal multiples;
+}

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

@@ -2,8 +2,10 @@ package com.zanxiang.game.data.serve.service;
 
 import com.zanxiang.game.data.serve.pojo.dto.GameDataDayDTO;
 import com.zanxiang.game.data.serve.pojo.dto.GameDataTotalDTO;
+import com.zanxiang.game.data.serve.pojo.dto.GameDataWaterDTO;
 import com.zanxiang.game.data.serve.pojo.vo.GameDataDayVO;
 import com.zanxiang.game.data.serve.pojo.vo.GameDataTotalVO;
+import com.zanxiang.game.data.serve.pojo.vo.GameDataWaterVO;
 import com.zanxiang.game.data.serve.utils.Page;
 
 public interface IGameDataService {
@@ -21,4 +23,6 @@ public interface IGameDataService {
      * @return
      */
     Page<GameDataTotalVO> getGameDataTotal(GameDataTotalDTO dto);
+
+    Page<GameDataWaterVO> getGameDataWater(GameDataWaterDTO dto);
 }

+ 124 - 16
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/AccountAgentDayServiceImpl.java

@@ -1,15 +1,17 @@
 package com.zanxiang.game.data.serve.service.impl;
 
+import com.google.common.base.CaseFormat;
 import com.google.gson.Gson;
 import com.zanxiang.erp.security.util.SecurityUtil;
 import com.zanxiang.game.data.serve.pojo.dto.GamePromoteDayDTO;
 import com.zanxiang.game.data.serve.pojo.dto.GamePromoteDayTotalDTO;
 import com.zanxiang.game.data.serve.pojo.dto.GamePromoteTotalDTO;
 import com.zanxiang.game.data.serve.pojo.entity.AdsAccountAgentDay;
-import com.zanxiang.game.data.serve.pojo.entity.AdsGameDay;
+import com.zanxiang.game.data.serve.pojo.enums.OrderByEnum;
 import com.zanxiang.game.data.serve.pojo.vo.GamePromoteDayTotalVO;
 import com.zanxiang.game.data.serve.pojo.vo.GamePromoteDayVO;
 import com.zanxiang.game.data.serve.pojo.vo.GamePromoteTotalVO;
+import com.zanxiang.game.data.serve.pojo.vo.RechargeTrendVO;
 import com.zanxiang.game.data.serve.service.IAccountAgentDayService;
 import com.zanxiang.game.data.serve.utils.Page;
 import com.zanxiang.module.util.DateUtil;
@@ -22,8 +24,6 @@ import org.nutz.dao.Dao;
 import org.nutz.dao.Sqls;
 import org.nutz.dao.entity.Entity;
 import org.nutz.dao.pager.Pager;
-import org.nutz.dao.sql.Criteria;
-import org.nutz.dao.sql.GroupBy;
 import org.nutz.dao.sql.Sql;
 import org.nutz.dao.util.Daos;
 import org.nutz.dao.util.cri.SimpleCriteria;
@@ -51,6 +51,12 @@ public class AccountAgentDayServiceImpl implements IAccountAgentDayService {
         Long sysUserId = SecurityUtil.isAdmin() ? null : SecurityUtil.getUserId();
         sysUserId = null == dto.getSysUserId() ? sysUserId : dto.getSysUserId();
         dto.setSysUserId(sysUserId);
+        if (StringUtils.isBlank(dto.getSortFiled())){
+            dto.setSortFiled("dt");
+        }
+        if (StringUtils.isBlank(dto.getSortType())){
+            dto.setSortType(OrderByEnum.DESC.getOrderType());
+        }
         if (null == dto.getBeginDay() || null == dto.getEndDay()){
             dto.setBeginDay(LocalDate.now());
             dto.setEndDay(LocalDate.now());
@@ -83,13 +89,106 @@ public class AccountAgentDayServiceImpl implements IAccountAgentDayService {
         if (null != dto.getEndDay()) {
             cri.where().and("dt", "<=", dto.getEndDay());
         }
-        Sql sql = Sqls.queryEntity(accountAgentDaySql() + "$condition" + " order by dt desc");
+        cri.orderBy(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, dto.getSortFiled()), dto.getSortType());
+        Sql sql = Sqls.queryEntity(accountAgentDaySql() + "$condition");
         sql.setPager(pager);
         Entity<GamePromoteDayVO> entity = dao.getEntity(GamePromoteDayVO.class);
         sql.setEntity(entity).setCondition(cri);
         dao.execute(sql);
         pager.setRecordCount(dao.count(AdsAccountAgentDay.class, cri));
-        return new Page<>(sql.getList(GamePromoteDayVO.class), pager);
+        List<GamePromoteDayVO> collect = sql.getList(GamePromoteDayVO.class).stream().map(item -> {
+            String[] trendDay1 = item.getTrendDay1().split("/");
+            item.setRechargeTrendDay1(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(trendDay1[0]))
+                    .rechargeUserCount(Long.valueOf(trendDay1[1]))
+                    .increase(new BigDecimal(trendDay1[2]))
+                    .back(new BigDecimal(trendDay1[3]))
+                    .multiples(new BigDecimal(trendDay1[4]))
+                    .build());
+
+            String[] trendDay3 = item.getTrendDay3().split("/");
+            item.setRechargeTrendDay3(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(trendDay3[0]))
+                    .rechargeUserCount(Long.valueOf(trendDay3[1]))
+                    .increase(new BigDecimal(trendDay3[2]))
+                    .back(new BigDecimal(trendDay3[3]))
+                    .multiples(new BigDecimal(trendDay3[4]))
+                    .build());
+
+            String[] trendDay5 = item.getTrendDay5().split("/");
+            item.setRechargeTrendDay5(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(trendDay5[0]))
+                    .rechargeUserCount(Long.valueOf(trendDay5[1]))
+                    .increase(new BigDecimal(trendDay5[2]))
+                    .back(new BigDecimal(trendDay5[3]))
+                    .multiples(new BigDecimal(trendDay5[4]))
+                    .build());
+
+            String[] trendDay7 = item.getTrendDay7().split("/");
+            item.setRechargeTrendDay7(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(trendDay7[0]))
+                    .rechargeUserCount(Long.valueOf(trendDay7[1]))
+                    .increase(new BigDecimal(trendDay7[2]))
+                    .back(new BigDecimal(trendDay7[3]))
+                    .multiples(new BigDecimal(trendDay7[4]))
+                    .build());
+
+            String[] trendDay15 = item.getTrendDay15().split("/");
+            item.setRechargeTrendDay15(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(trendDay15[0]))
+                    .rechargeUserCount(Long.valueOf(trendDay15[1]))
+                    .increase(new BigDecimal(trendDay15[2]))
+                    .back(new BigDecimal(trendDay15[3]))
+                    .multiples(new BigDecimal(trendDay15[4]))
+                    .build());
+
+            String[] trendMonth1 = item.getTrendMonth1().split("/");
+            item.setRechargeTrendMonth1(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(trendMonth1[0]))
+                    .rechargeUserCount(Long.valueOf(trendMonth1[1]))
+                    .increase(new BigDecimal(trendMonth1[2]))
+                    .back(new BigDecimal(trendMonth1[3]))
+                    .multiples(new BigDecimal(trendMonth1[4]))
+                    .build());
+
+            String[] trendMonth2 = item.getTrendMonth2().split("/");
+            item.setRechargeTrendMonth2(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(trendMonth2[0]))
+                    .rechargeUserCount(Long.valueOf(trendMonth2[1]))
+                    .increase(new BigDecimal(trendMonth2[2]))
+                    .back(new BigDecimal(trendMonth2[3]))
+                    .multiples(new BigDecimal(trendMonth2[4]))
+                    .build());
+
+            String[] trendMonth3 = item.getTrendMonth3().split("/");
+            item.setRechargeTrendMonth3(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(trendMonth3[0]))
+                    .rechargeUserCount(Long.valueOf(trendMonth3[1]))
+                    .increase(new BigDecimal(trendMonth3[2]))
+                    .back(new BigDecimal(trendMonth3[3]))
+                    .multiples(new BigDecimal(trendMonth3[4]))
+                    .build());
+
+            String[] trendMonth6 = item.getTrendMonth6().split("/");
+            item.setRechargeTrendMonth6(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(trendMonth6[0]))
+                    .rechargeUserCount(Long.valueOf(trendMonth6[1]))
+                    .increase(new BigDecimal(trendMonth6[2]))
+                    .back(new BigDecimal(trendMonth6[3]))
+                    .multiples(new BigDecimal(trendMonth6[4]))
+                    .build());
+
+            String[] trendTotal = item.getTrendTotal().split("/");
+            item.setRechargeTrendTotal(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(trendTotal[0]))
+                    .rechargeUserCount(Long.valueOf(trendTotal[1]))
+                    .increase(new BigDecimal(trendTotal[2]))
+                    .back(new BigDecimal(trendTotal[3]))
+                    .multiples(new BigDecimal(trendTotal[4]))
+                    .build());
+            return item;
+        }).collect(Collectors.toList());
+        return new Page<>(collect, pager);
     }
 
     @Override
@@ -136,6 +235,12 @@ public class AccountAgentDayServiceImpl implements IAccountAgentDayService {
         Long sysUserId = SecurityUtil.isAdmin() ? null : SecurityUtil.getUserId();
         sysUserId = null == dto.getSysUserId() ? sysUserId : dto.getSysUserId();
         dto.setSysUserId(sysUserId);
+        if (StringUtils.isBlank(dto.getSortFiled())){
+            dto.setSortFiled("cost");
+        }
+        if (StringUtils.isBlank(dto.getSortType())){
+            dto.setSortType(OrderByEnum.DESC.getOrderType());
+        }
         if (null == dto.getCostEndDay() || null == dto.getCostBeginDay()) {
             dto.setCostBeginDay(LocalDate.now());
             dto.setCostEndDay(LocalDate.now());
@@ -173,6 +278,7 @@ public class AccountAgentDayServiceImpl implements IAccountAgentDayService {
             cri.where().and("a.dt", "<=", dto.getCostEndDay());
         }
         cri.groupBy("a.account_id,a.agent_id");
+        cri.orderBy(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, dto.getSortFiled()), dto.getSortType());
         Sql sql = Sqls.queryEntity(accountAgentTotalSql() + "$condition");
         sql.setPager(pager);
         Entity<GamePromoteTotalVO> entity = dao.getEntity(GamePromoteTotalVO.class);
@@ -356,14 +462,16 @@ public class AccountAgentDayServiceImpl implements IAccountAgentDayService {
                 	first_arpu AS first_recharge_arpu,
                 	today_arpu AS today_recharge_arpu,
                 	paper_arpu AS show_recharge_arpu,
-                	amount_d1 AS recharge_trend_day1,
-                	amount_d3 AS recharge_trend_day3,
-                	amount_d7 AS recharge_trend_day7,
-                	amount_d15 AS recharge_trend_day15,
-                	amount_m1 AS recharge_trend_month1,
-                	amount_m2 AS recharge_trend_month2,
-                	amount_m3 AS recharge_trend_month3,
-                	amount_sum AS recharge_trend_total,
+                	amount_d1 AS trend_day1,
+                	amount_d3 AS trend_day3,
+                	amount_d5 AS trend_day5,
+                	amount_d7 AS trend_day7,
+                	amount_d15 AS trend_day15,
+                	amount_m1 AS trend_month1,
+                	amount_m2 AS trend_month2,
+                	amount_m3 AS trend_month3,
+                	amount_m6 AS trend_month6,
+                	amount_sum AS trend_total,
                 	hundred_user_num,
                 	hundred_user_num_cost
                 from
@@ -499,9 +607,9 @@ public class AccountAgentDayServiceImpl implements IAccountAgentDayService {
                 	sum(a.first_new_user_amount_count) as user_recharge_count,
                 	sum(a.first_new_user_amount_num) as user_recharge_user,
                 	sum(a.first_new_user_amount) as user_recharge_money,
-                	sum(b.amount_count) as show_recharge_count,
-                	sum(b.amount_num) as show_recharge_user,
-                	sum(b.amount) as show_recharge_money,
+                	ifnull(sum(b.amount_count),0) as show_recharge_count,
+                	ifnull(sum(b.amount_num),0) as show_recharge_user,
+                	ifnull(sum(b.amount),0) as show_recharge_money,
                 	sum(a.old_amount_count) as old_user_recharge_count,
                 	sum(a.old_amount_num) as old_user_recharge_user,
                 	sum(a.old_amount) as old_user_recharge_money,

+ 412 - 3
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameDataServiceImpl.java

@@ -1,10 +1,13 @@
 package com.zanxiang.game.data.serve.service.impl;
 
+import com.google.common.base.CaseFormat;
 import com.google.gson.Gson;
 import com.zanxiang.game.data.serve.pojo.dto.GameDataDayDTO;
 import com.zanxiang.game.data.serve.pojo.dto.GameDataTotalDTO;
-import com.zanxiang.game.data.serve.pojo.vo.GameDataDayVO;
-import com.zanxiang.game.data.serve.pojo.vo.GameDataTotalVO;
+import com.zanxiang.game.data.serve.pojo.dto.GameDataWaterDTO;
+import com.zanxiang.game.data.serve.pojo.entity.AdsEverydayWater;
+import com.zanxiang.game.data.serve.pojo.enums.OrderByEnum;
+import com.zanxiang.game.data.serve.pojo.vo.*;
 import com.zanxiang.game.data.serve.service.IGameDataService;
 import com.zanxiang.game.data.serve.utils.Page;
 import com.zanxiang.module.util.DateUtil;
@@ -15,9 +18,12 @@ import org.apache.commons.lang3.StringUtils;
 import org.nutz.dao.Cnd;
 import org.nutz.dao.Dao;
 import org.nutz.dao.Sqls;
+import org.nutz.dao.entity.Entity;
 import org.nutz.dao.pager.Pager;
 import org.nutz.dao.sql.Criteria;
 import org.nutz.dao.sql.Sql;
+import org.nutz.dao.util.Daos;
+import org.nutz.dao.util.cri.SimpleCriteria;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -44,6 +50,11 @@ public class GameDataServiceImpl implements IGameDataService {
     @Autowired
     private Dao dao;
 
+    /**
+     * 游戏每日数据
+     * @param dto 前端传递查询参数
+     * @return 返回给前端的数据
+     */
     @Override
     public Page<GameDataDayVO> getGameDataDay(GameDataDayDTO dto) {
 
@@ -83,10 +94,292 @@ public class GameDataServiceImpl implements IGameDataService {
         //设置查询总数
         pager.setRecordCount(list.size());
 
+        List<GameDataDayVO> gameDataDayVOList = list.stream().map(vo -> {
+            //买量数据
+            String[] buyAmountD1 = vo.getBuyAmountD1().split("/");
+            vo.setBuyAmountD1Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(buyAmountD1[0]))
+                    .rechargeUserCount(Long.valueOf(buyAmountD1[1]))
+                    .increase(new BigDecimal(buyAmountD1[2]))
+                    .back(new BigDecimal(buyAmountD1[3]))
+                    .multiples(new BigDecimal(buyAmountD1[4]))
+                    .build());
+
+            String[] buyAmountD3 = vo.getBuyAmountD3().split("/");
+            vo.setBuyAmountD3Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(buyAmountD3[0]))
+                    .rechargeUserCount(Long.valueOf(buyAmountD3[1]))
+                    .increase(new BigDecimal(buyAmountD3[2]))
+                    .back(new BigDecimal(buyAmountD3[3]))
+                    .multiples(new BigDecimal(buyAmountD3[4]))
+                    .build());
+
+            String[] buyAmountD5 = vo.getBuyAmountD5().split("/");
+            vo.setBuyAmountD5Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(buyAmountD5[0]))
+                    .rechargeUserCount(Long.valueOf(buyAmountD5[1]))
+                    .increase(new BigDecimal(buyAmountD5[2]))
+                    .back(new BigDecimal(buyAmountD5[3]))
+                    .multiples(new BigDecimal(buyAmountD5[4]))
+                    .build());
+
+            String[] buyAmountD7 = vo.getBuyAmountD7().split("/");
+            vo.setBuyAmountD7Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(buyAmountD7[0]))
+                    .rechargeUserCount(Long.valueOf(buyAmountD7[1]))
+                    .increase(new BigDecimal(buyAmountD7[2]))
+                    .back(new BigDecimal(buyAmountD7[3]))
+                    .multiples(new BigDecimal(buyAmountD7[4]))
+                    .build());
+
+            String[] buyAmountD15 = vo.getBuyAmountD15().split("/");
+            vo.setBuyAmountD15Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(buyAmountD15[0]))
+                    .rechargeUserCount(Long.valueOf(buyAmountD15[1]))
+                    .increase(new BigDecimal(buyAmountD15[2]))
+                    .back(new BigDecimal(buyAmountD15[3]))
+                    .multiples(new BigDecimal(buyAmountD15[4]))
+                    .build());
+
+            String[] buyAmountM1 = vo.getBuyAmountM1().split("/");
+            vo.setBuyAmountM1Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(buyAmountM1[0]))
+                    .rechargeUserCount(Long.valueOf(buyAmountM1[1]))
+                    .increase(new BigDecimal(buyAmountM1[2]))
+                    .back(new BigDecimal(buyAmountM1[3]))
+                    .multiples(new BigDecimal(buyAmountM1[4]))
+                    .build());
+
+            String[] buyAmountM2 = vo.getBuyAmountM2().split("/");
+            vo.setBuyAmountM2Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(buyAmountM2[0]))
+                    .rechargeUserCount(Long.valueOf(buyAmountM2[1]))
+                    .increase(new BigDecimal(buyAmountM2[2]))
+                    .back(new BigDecimal(buyAmountM2[3]))
+                    .multiples(new BigDecimal(buyAmountM2[4]))
+                    .build());
+
+            String[] buyAmountM3 = vo.getBuyAmountM3().split("/");
+            vo.setBuyAmountM3Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(buyAmountM3[0]))
+                    .rechargeUserCount(Long.valueOf(buyAmountM3[1]))
+                    .increase(new BigDecimal(buyAmountM3[2]))
+                    .back(new BigDecimal(buyAmountM3[3]))
+                    .multiples(new BigDecimal(buyAmountM3[4]))
+                    .build());
+
+            String[] buyAmountM6 = vo.getBuyAmountM6().split("/");
+            vo.setBuyAmountM6Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(buyAmountM6[0]))
+                    .rechargeUserCount(Long.valueOf(buyAmountM6[1]))
+                    .increase(new BigDecimal(buyAmountM6[2]))
+                    .back(new BigDecimal(buyAmountM6[3]))
+                    .multiples(new BigDecimal(buyAmountM6[4]))
+                    .build());
+
+            String[] buyAmountSum = vo.getBuyAmountSum().split("/");
+            vo.setBuyAmountSumTrend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(buyAmountSum[0]))
+                    .rechargeUserCount(Long.valueOf(buyAmountSum[1]))
+                    .increase(new BigDecimal(buyAmountSum[2]))
+                    .back(new BigDecimal(buyAmountSum[3]))
+                    .multiples(new BigDecimal(buyAmountSum[4]))
+                    .build());
+
+            //自然量数据
+            String[] natureAmountD1 = vo.getNatureAmountD1().split("/");
+            vo.setNatureAmountD1Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(natureAmountD1[0]))
+                    .rechargeUserCount(Long.valueOf(natureAmountD1[1]))
+                    .increase(new BigDecimal(natureAmountD1[2]))
+                    .back(new BigDecimal(natureAmountD1[3]))
+                    .multiples(new BigDecimal(natureAmountD1[4]))
+                    .build());
+
+            String[] natureAmountD3 = vo.getNatureAmountD3().split("/");
+            vo.setNatureAmountD3Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(natureAmountD3[0]))
+                    .rechargeUserCount(Long.valueOf(natureAmountD3[1]))
+                    .increase(new BigDecimal(natureAmountD3[2]))
+                    .back(new BigDecimal(natureAmountD3[3]))
+                    .multiples(new BigDecimal(natureAmountD3[4]))
+                    .build());
+
+            String[] natureAmountD5 = vo.getNatureAmountD5().split("/");
+            vo.setNatureAmountD5Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(natureAmountD5[0]))
+                    .rechargeUserCount(Long.valueOf(natureAmountD5[1]))
+                    .increase(new BigDecimal(natureAmountD5[2]))
+                    .back(new BigDecimal(natureAmountD5[3]))
+                    .multiples(new BigDecimal(natureAmountD5[4]))
+                    .build());
+
+            String[] natureAmountD7 = vo.getNatureAmountD7().split("/");
+            vo.setNatureAmountD7Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(natureAmountD7[0]))
+                    .rechargeUserCount(Long.valueOf(natureAmountD7[1]))
+                    .increase(new BigDecimal(natureAmountD7[2]))
+                    .back(new BigDecimal(natureAmountD7[3]))
+                    .multiples(new BigDecimal(natureAmountD7[4]))
+                    .build());
+
+            String[] natureAmountD15 = vo.getNatureAmountD15().split("/");
+            vo.setNatureAmountD15Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(natureAmountD15[0]))
+                    .rechargeUserCount(Long.valueOf(natureAmountD15[1]))
+                    .increase(new BigDecimal(natureAmountD15[2]))
+                    .back(new BigDecimal(natureAmountD15[3]))
+                    .multiples(new BigDecimal(natureAmountD15[4]))
+                    .build());
+
+            String[] natureAmountM1 = vo.getNatureAmountM1().split("/");
+            vo.setNatureAmountM1Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(natureAmountM1[0]))
+                    .rechargeUserCount(Long.valueOf(natureAmountM1[1]))
+                    .increase(new BigDecimal(natureAmountM1[2]))
+                    .back(new BigDecimal(natureAmountM1[3]))
+                    .multiples(new BigDecimal(natureAmountM1[4]))
+                    .build());
+
+            String[] natureAmountM2 = vo.getNatureAmountM2().split("/");
+            vo.setNatureAmountM2Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(natureAmountM2[0]))
+                    .rechargeUserCount(Long.valueOf(natureAmountM2[1]))
+                    .increase(new BigDecimal(natureAmountM2[2]))
+                    .back(new BigDecimal(natureAmountM2[3]))
+                    .multiples(new BigDecimal(natureAmountM2[4]))
+                    .build());
+
+            String[] natureAmountM3 = vo.getNatureAmountM3().split("/");
+            vo.setNatureAmountM3Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(natureAmountM3[0]))
+                    .rechargeUserCount(Long.valueOf(natureAmountM3[1]))
+                    .increase(new BigDecimal(natureAmountM3[2]))
+                    .back(new BigDecimal(natureAmountM3[3]))
+                    .multiples(new BigDecimal(natureAmountM3[4]))
+                    .build());
+
+            String[] natureAmountM6 = vo.getNatureAmountM6().split("/");
+            vo.setNatureAmountM6Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(natureAmountM6[0]))
+                    .rechargeUserCount(Long.valueOf(natureAmountM6[1]))
+                    .increase(new BigDecimal(natureAmountM6[2]))
+                    .back(new BigDecimal(natureAmountM6[3]))
+                    .multiples(new BigDecimal(natureAmountM6[4]))
+                    .build());
+
+            String[] natureAmountSum = vo.getNatureAmountSum().split("/");
+            vo.setNatureAmountSumTrend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(natureAmountSum[0]))
+                    .rechargeUserCount(Long.valueOf(natureAmountSum[1]))
+                    .increase(new BigDecimal(natureAmountSum[2]))
+                    .back(new BigDecimal(natureAmountSum[3]))
+                    .multiples(new BigDecimal(natureAmountSum[4]))
+                    .build());
+
+            //总量数据
+            String[] amountD1 = vo.getAmountD1().split("/");
+            vo.setAmountD1Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(amountD1[0]))
+                    .rechargeUserCount(Long.valueOf(amountD1[1]))
+                    .increase(new BigDecimal(amountD1[2]))
+                    .back(new BigDecimal(amountD1[3]))
+                    .multiples(new BigDecimal(amountD1[4]))
+                    .build());
+
+            String[] amountD3 = vo.getAmountD3().split("/");
+            vo.setAmountD3Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(amountD3[0]))
+                    .rechargeUserCount(Long.valueOf(amountD3[1]))
+                    .increase(new BigDecimal(amountD3[2]))
+                    .back(new BigDecimal(amountD3[3]))
+                    .multiples(new BigDecimal(amountD3[4]))
+                    .build());
+
+            String[] amountD5 = vo.getAmountD5().split("/");
+            vo.setAmountD5Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(amountD5[0]))
+                    .rechargeUserCount(Long.valueOf(amountD5[1]))
+                    .increase(new BigDecimal(amountD5[2]))
+                    .back(new BigDecimal(amountD5[3]))
+                    .multiples(new BigDecimal(amountD5[4]))
+                    .build());
+
+            String[] amountD7 = vo.getAmountD7().split("/");
+            vo.setAmountD7Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(amountD7[0]))
+                    .rechargeUserCount(Long.valueOf(amountD7[1]))
+                    .increase(new BigDecimal(amountD7[2]))
+                    .back(new BigDecimal(amountD7[3]))
+                    .multiples(new BigDecimal(amountD7[4]))
+                    .build());
+
+            String[] amountD15 = vo.getAmountD15().split("/");
+            vo.setAmountD15Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(amountD15[0]))
+                    .rechargeUserCount(Long.valueOf(amountD15[1]))
+                    .increase(new BigDecimal(amountD15[2]))
+                    .back(new BigDecimal(amountD15[3]))
+                    .multiples(new BigDecimal(amountD15[4]))
+                    .build());
+
+            String[] amountM1 = vo.getAmountM1().split("/");
+            vo.setAmountM1Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(amountM1[0]))
+                    .rechargeUserCount(Long.valueOf(amountM1[1]))
+                    .increase(new BigDecimal(amountM1[2]))
+                    .back(new BigDecimal(amountM1[3]))
+                    .multiples(new BigDecimal(amountM1[4]))
+                    .build());
+
+            String[] amountM2 = vo.getAmountM2().split("/");
+            vo.setAmountM2Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(amountM2[0]))
+                    .rechargeUserCount(Long.valueOf(amountM2[1]))
+                    .increase(new BigDecimal(amountM2[2]))
+                    .back(new BigDecimal(amountM2[3]))
+                    .multiples(new BigDecimal(amountM2[4]))
+                    .build());
+
+            String[] amountM3 = vo.getAmountM3().split("/");
+            vo.setAmountM3Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(amountM3[0]))
+                    .rechargeUserCount(Long.valueOf(amountM3[1]))
+                    .increase(new BigDecimal(amountM3[2]))
+                    .back(new BigDecimal(amountM3[3]))
+                    .multiples(new BigDecimal(amountM3[4]))
+                    .build());
+
+            String[] amountM6 = vo.getAmountM6().split("/");
+            vo.setAmountM6Trend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(amountM6[0]))
+                    .rechargeUserCount(Long.valueOf(amountM6[1]))
+                    .increase(new BigDecimal(amountM6[2]))
+                    .back(new BigDecimal(amountM6[3]))
+                    .multiples(new BigDecimal(amountM6[4]))
+                    .build());
+
+            String[] amountSum = vo.getAmountSum().split("/");
+            vo.setAmountSumTrend(RechargeTrendVO.builder()
+                    .rechargeMoney(new BigDecimal(amountSum[0]))
+                    .rechargeUserCount(Long.valueOf(amountSum[1]))
+                    .increase(new BigDecimal(amountSum[2]))
+                    .back(new BigDecimal(amountSum[3]))
+                    .multiples(new BigDecimal(amountSum[4]))
+                    .build());
+
+            return vo;
+        }).collect(Collectors.toList());
+
         //返回list结果 封装到page对象里
-        return new Page<>(list, pager);
+        return new Page<>(gameDataDayVOList, pager);
     }
 
+    /**
+     * 游戏总数据
+     * @param dto 前端传递的查询参数
+     * @return 返回给前端的数据
+     */
     @Override
     public Page<GameDataTotalVO> getGameDataTotal(GameDataTotalDTO dto) {
         //如果注册时间参数为空,默认设置查询当天数据
@@ -584,5 +877,121 @@ public class GameDataServiceImpl implements IGameDataService {
         private BigInteger rechargeAgainNum;
     }
 
+    @Override
+    public Page<GameDataWaterVO> getGameDataWater(GameDataWaterDTO dto) {
+        if (null == dto.getRechargeDate()) {
+            dto.setRechargeDate(LocalDate.now());
+        }
+        if (StringUtils.isBlank(dto.getSortFiled())) {
+            dto.setSortFiled("amount");
+        }
+        if (StringUtils.isBlank(dto.getSortType())) {
+            dto.setSortType(OrderByEnum.DESC.getOrderType());
+        }
+        Pager pager = dao.createPager(dto.getPageNum(), dto.getPageSize());
+        // 创建一个 Criteria 接口实例
+        SimpleCriteria cri = Cnd.cri();
+        if (StringUtils.isNotBlank(dto.getGameName())) {
+            cri.where().andLike("game_name", dto.getGameName());
+        }
+        if (StringUtils.isNotBlank(dto.getGameClassify())) {
+            cri.where().andEquals("game_classify", dto.getGameClassify());
+        }
+        cri.where().and("dt", "=", dto.getRechargeDate());
+        cri.groupBy("game_id");
+        cri.orderBy(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, dto.getSortFiled()), dto.getSortType());
+        Sql sql = Sqls.queryEntity(waterSql() + "$condition");
+        sql.setPager(pager);
+        Entity<GameDataWaterVO> entity = dao.getEntity(GameDataWaterVO.class);
+        sql.setEntity(entity).setCondition(cri);
+        dao.execute(sql);
+
+        Sql sqlCount = Sqls.queryEntity("select count(*) from ads_everyday_water " + "$condition");
+        sqlCount.setCondition(cri);
+        pager.setRecordCount((int) Daos.queryCount(dao, sqlCount));
+
+        List<Long> gameIds = sql.getList(GameDataWaterVO.class).stream()
+                .map(GameDataWaterVO::getGameId)
+                .collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(gameIds)) {
+            return new Page<>();
+        }
+
+        SimpleCriteria templateCri = Cnd.cri();
+        templateCri.where().and("dt", "=", dto.getRechargeDate());
+        templateCri.where().andInList("game_id", gameIds);
+        Sql templateSql = Sqls.queryEntity(waterTemplateSql() + "$condition");
+        Entity<AdsEverydayWater> everydayWaterEntity = dao.getEntity(AdsEverydayWater.class);
+        templateSql.setEntity(everydayWaterEntity).setCondition(templateCri);
+        dao.execute(templateSql);
+
+        Map<Long, List<AdsEverydayWater>> collect = templateSql.getList(AdsEverydayWater.class).stream().collect(Collectors.groupingBy(AdsEverydayWater::getGameId));
+        List<GameDataWaterVO> result = sql.getList(GameDataWaterVO.class).stream()
+                .map(item -> {
+                    List<AdsEverydayWater> adsEverydayWaters = collect.get(item.getGameId());
+                    if (!CollectionUtils.isEmpty(adsEverydayWaters)) {
+                        List<RechargeTemplateVO> rechargeTemplateVOList = new ArrayList<>(10);
+
+                        List<PlayerTemplateVO> playerTemplateVOS = new ArrayList<>(10);
+                        adsEverydayWaters.forEach(adsEverydayWater -> {
+                            if (StringUtils.isNotBlank(adsEverydayWater.getAmountOrderBy())) {
+                                rechargeTemplateVOList.add(RechargeTemplateVO.builder()
+                                        .amountCount(adsEverydayWater.getAmountCount())
+                                        .amountNum(adsEverydayWater.getAmountNum())
+                                        .amountOrderBy(adsEverydayWater.getAmountOrderBy())
+                                        .amountPost(adsEverydayWater.getAmountPost())
+                                        .build());
+                            }
+                            if (StringUtils.isNotBlank(adsEverydayWater.getUserOrderBy())) {
+                                playerTemplateVOS.add(PlayerTemplateVO.builder()
+                                        .userId(adsEverydayWater.getUserId())
+                                        .userAmount(adsEverydayWater.getUserAmount())
+                                        .userOrderBy(adsEverydayWater.getUserOrderBy())
+                                        .userName(adsEverydayWater.getUserName())
+                                        .proportion(
+                                                item.getAmount().compareTo(BigDecimal.ZERO) == 0 ?
+                                                        BigDecimal.ZERO :
+                                                        adsEverydayWater.getUserAmount().divide(item.getAmount(), 4, RoundingMode.DOWN)
+                                        )
+                                        .build());
+                            }
+                        });
+                        item.setRechargeTemplateVOList(rechargeTemplateVOList);
+                        item.setPlayerTemplateVOS(playerTemplateVOS);
+                    }
+                    return item;
+                }).collect(Collectors.toList());
+
+        return new Page<>(result, pager);
+    }
+
+    private String waterSql() {
+        return """
+                select
+                game_id as id,
+                game_id,
+                max(game_name) as game_name,
+                max(game_classify) as game_classify,
+                max(amount) as amount,
+                max(buy_amount) as buy_amount,
+                max(nature_amount) as nature_amount
+                from ads_everyday_water
+                """;
+    }
 
+    private String waterTemplateSql() {
+        return """
+                select
+                game_id,
+                user_order_by,
+                user_id,
+                user_name,
+                user_amount,
+                amount_order_by,
+                amount_post,
+                amount_count,
+                amount_num
+                from ads_everyday_water
+                """;
+    }
 }

+ 3 - 5
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/RankingServiceImpl.java

@@ -2,6 +2,7 @@ package com.zanxiang.game.data.serve.service.impl;
 
 import com.google.common.base.CaseFormat;
 import com.zanxiang.game.data.serve.pojo.dto.RechargeRankingDTO;
+import com.zanxiang.game.data.serve.pojo.enums.OrderByEnum;
 import com.zanxiang.game.data.serve.pojo.vo.GameRechargeRankingVO;
 import com.zanxiang.game.data.serve.pojo.vo.PlayerRechargeRankingVO;
 import com.zanxiang.game.data.serve.service.IRankingService;
@@ -25,16 +26,13 @@ public class RankingServiceImpl implements IRankingService {
     @Autowired
     private Dao dao;
 
-    private static final String ASC = "asc";
-    private static final String DESC = "desc";
-
     @Override
     public Page<GameRechargeRankingVO> gameRanking(RechargeRankingDTO dto) {
         if (StringUtils.isBlank(dto.getSortFiled())){
             dto.setSortFiled("totalAmount");
         }
         if (StringUtils.isBlank(dto.getSortType())){
-            dto.setSortType(DESC);
+            dto.setSortType(OrderByEnum.DESC.getOrderType());
         }
         Pager pager = dao.createPager(dto.getPageNum(), dto.getPageSize());
         // 创建一个 Criteria 接口实例
@@ -85,7 +83,7 @@ public class RankingServiceImpl implements IRankingService {
             dto.setSortFiled("totalAmount");
         }
         if (StringUtils.isBlank(dto.getSortType())){
-            dto.setSortType(DESC);
+            dto.setSortType(OrderByEnum.DESC.getOrderType());
         }
         Pager pager = dao.createPager(dto.getPageNum(), dto.getPageSize());
         // 创建一个 Criteria 接口实例

+ 34 - 4
game-module/game-module-base/src/main/java/com/zanxiang/game/module/base/pojo/enums/PayWayEnum.java

@@ -52,15 +52,45 @@ public enum PayWayEnum {
      * @param payWayId : 支付类型
      * @return : 支付类型枚举
      */
-    public static String getByPayWayId(Long payWayId) {
+    public static String getNameByPayWayId(Long payWayId) {
         if (payWayId == null) {
             return Strings.EMPTY;
         }
+        PayWayEnum payWayEnum = PayWayEnum.getByPayWayId(payWayId.intValue());
+        //获取支付名称
+        return payWayEnum == null ? Strings.EMPTY : payWayEnum.getPayWayName();
+    }
+
+    /**
+     * 根据支付类型id获取名称
+     *
+     * @param payWayId : 支付类型
+     * @return : 支付类型枚举
+     */
+    public static String getKeyByPayWayId(Integer payWayId) {
+        if (payWayId == null) {
+            return Strings.EMPTY;
+        }
+        PayWayEnum payWayEnum = PayWayEnum.getByPayWayId(payWayId);
+        //获取支付名称
+        return payWayEnum == null ? Strings.EMPTY : payWayEnum.getPayWayKey();
+    }
+
+    /**
+     * 根据支付类型id获取名称
+     *
+     * @param payWayId : 支付类型
+     * @return : 支付类型枚举
+     */
+    public static PayWayEnum getByPayWayId(Integer payWayId) {
+        if (payWayId == null) {
+            return null;
+        }
         for (PayWayEnum payWayEnum : PayWayEnum.values()) {
-            if (Objects.equals(payWayId.intValue(), payWayEnum.getPayWayId())) {
-                return payWayEnum.getPayWayName();
+            if (Objects.equals(payWayId, payWayEnum.getPayWayId())) {
+                return payWayEnum;
             }
         }
-        return Strings.EMPTY;
+        return null;
     }
 }

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

@@ -70,7 +70,7 @@ public class GamePayWayServiceImpl extends ServiceImpl<GamePayWayMapper, GamePay
                 .gameId(param.getGameId())
                 .payWayId(param.getPayWayId())
                 .payDeviceId(param.getPayDeviceId())
-                .payName(PayWayEnum.getByPayWayId(param.getPayWayId()) + PayDeviceEnum.getByPayWayId(param.getPayDeviceId()))
+                .payName(PayWayEnum.getNameByPayWayId(param.getPayWayId()) + PayDeviceEnum.getByPayWayId(param.getPayDeviceId()))
                 .remark(param.getRemark())
                 .status(StatusEnum.YES.getCode())
                 .isDelete(DeleteEnum.NO.getCode())

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

@@ -188,7 +188,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             orderVO.setGameCategoryName(gameCategoryEnum == null ? null : gameCategoryEnum.getName());
         }
         //支付渠道, 场景
-        orderVO.setPayWayName(PayWayEnum.getByPayWayId(orderVO.getPayWayId()));
+        orderVO.setPayWayName(PayWayEnum.getNameByPayWayId(orderVO.getPayWayId()));
         orderVO.setPayDeviceName(PayDeviceEnum.getByPayWayId(orderVO.getPayDeviceId()));
     }
 

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

@@ -170,7 +170,7 @@ public class PayMerchantServiceImpl extends ServiceImpl<PayMerchantMapper, PayMe
             }
         }
         //支付渠道
-        payMerchantListVO.setPayWayName(PayWayEnum.getByPayWayId(payMerchantListVO.getPayWayId()));
+        payMerchantListVO.setPayWayName(PayWayEnum.getNameByPayWayId(payMerchantListVO.getPayWayId()));
         //支付方式
         String payDeviceIds = payMerchant.getPayDeviceIds();
         if (Strings.isBlank(payDeviceIds)) {

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

@@ -0,0 +1,76 @@
+package com.zanxiang.game.module.mybatis.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-07-17
+ * @description : 游戏提现记录
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString
+@Builder
+@TableName("t_game_remit_log")
+public class GameRemitLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 游戏id
+     */
+    private Long gameId;
+
+    /**
+     * 交易订单号
+     */
+    private String merchantOrderNo;
+
+    /**
+     * 金额(单位 : 分)
+     */
+    private Long amount;
+
+    /**
+     * 提现平台
+     */
+    private String payPlatform;
+
+    /**
+     * 提现账号
+     */
+    private String payAccount;
+
+    /**
+     * 提现时间
+     */
+    private LocalDateTime createdTime;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+}

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

@@ -0,0 +1,12 @@
+package com.zanxiang.game.module.mybatis.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zanxiang.game.module.mybatis.entity.GameRemitLog;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-07-17
+ * @description : ${description}
+ */
+public interface GameRemitLogMapper extends BaseMapper<GameRemitLog> {
+}

+ 36 - 0
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/controller/RemitController.java

@@ -0,0 +1,36 @@
+package com.zanxiang.game.module.sdk.controller;
+
+import com.zanxiang.game.module.sdk.pojo.param.GameRemitLogParam;
+import com.zanxiang.game.module.sdk.service.IGameRemitLogService;
+import com.zanxiang.module.util.pojo.ResultVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-07-17
+ * @description : 提现
+ */
+@Api(tags = "注册登录接口")
+@RestController
+@RequestMapping(value = "/api/remit")
+public class RemitController {
+
+    @Autowired
+    private IGameRemitLogService gameRemitLogService;
+
+    @ApiOperation(value = "游戏提现记录日志推送")
+    @PostMapping("/log/push")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
+    public ResultVO<Boolean> addOrUpdate(@Validated @RequestBody GameRemitLogParam param) {
+        return ResultVO.ok(gameRemitLogService.addOrUpdate(param));
+    }
+}

+ 63 - 0
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/pojo/param/GameRemitLogParam.java

@@ -0,0 +1,63 @@
+package com.zanxiang.game.module.sdk.pojo.param;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-07-17
+ * @description : 游戏提现参数
+ */
+@Data
+public class GameRemitLogParam {
+
+    /**
+     * 用户id
+     */
+    @NotNull(message = "用户id不可为空")
+    private Long userId;
+
+    /**
+     * 游戏id
+     */
+    @NotBlank(message = "游戏应用id不可为空")
+    private String appId;
+
+    /**
+     * 交易订单号
+     */
+    @NotBlank(message = "交易订单号不可为空")
+    private String merchantOrderNo;
+
+    /**
+     * 金额(单位 : 分)
+     */
+    @NotNull(message = "金额不可为空")
+    private Long amount;
+
+    /**
+     * 提现平台,  1 : 支付宝, 2 : 微信
+     */
+    @NotNull(message = "提现平台不可为空")
+    private Integer payPlatform;
+
+    /**
+     * 提现账号
+     */
+    @NotBlank(message = "提现账号不可为空")
+    private String payAccount;
+
+    /**
+     * 提现时间
+     */
+    @NotNull(message = "提现时间不可为空")
+    private Long createdTime;
+
+    /**
+     * 加密标识
+     */
+    @NotBlank(message = "加密标识不可为空")
+    private String sign;
+}

+ 21 - 0
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/IGameRemitLogService.java

@@ -0,0 +1,21 @@
+package com.zanxiang.game.module.sdk.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.game.module.mybatis.entity.GameRemitLog;
+import com.zanxiang.game.module.sdk.pojo.param.GameRemitLogParam;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-07-17
+ * @description : 游戏提现记录
+ */
+public interface IGameRemitLogService extends IService<GameRemitLog> {
+
+    /**
+     * 添加或更新
+     *
+     * @param param 参数
+     * @return boolean
+     */
+    boolean addOrUpdate(GameRemitLogParam param);
+}

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

@@ -0,0 +1,88 @@
+package com.zanxiang.game.module.sdk.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.game.module.base.pojo.enums.PayWayEnum;
+import com.zanxiang.game.module.mybatis.entity.GameExt;
+import com.zanxiang.game.module.mybatis.entity.GameRemitLog;
+import com.zanxiang.game.module.mybatis.mapper.GameRemitLogMapper;
+import com.zanxiang.game.module.sdk.pojo.param.GameRemitLogParam;
+import com.zanxiang.game.module.sdk.service.IGameExtService;
+import com.zanxiang.game.module.sdk.service.IGameRemitLogService;
+import com.zanxiang.game.module.sdk.util.SignUtil;
+import com.zanxiang.module.util.DateUtil;
+import com.zanxiang.module.util.exception.BaseException;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.Objects;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-07-17
+ * @description : 游戏提现记录
+ */
+@Slf4j
+@Service
+public class GameRemitLogServiceImpl extends ServiceImpl<GameRemitLogMapper, GameRemitLog> implements IGameRemitLogService {
+
+    @Autowired
+    private IGameExtService gameExtService;
+
+    @Override
+    public boolean addOrUpdate(GameRemitLogParam param) {
+        GameExt gameExt = gameExtService.getByGameAppId(param.getAppId());
+        StringBuilder sb = new StringBuilder();
+        sb.append("payKey=").append(gameExt.getPayKey());
+        sb.append("&appId=").append(param.getAppId());
+        sb.append("&userId=").append(param.getUserId());
+        sb.append("&merchantOrderNo=").append(param.getMerchantOrderNo());
+        sb.append("&createdTime=").append(param.getCreatedTime());
+
+        log.error("加密签名字符串, str : {}", sb.toString());
+
+        String mySign;
+        try {
+            mySign = SignUtil.MD5(sb.toString());
+        } catch (Exception e) {
+            log.error("md5工具类加密异常, str : {}, e : {}", sb.toString(), e.getMessage());
+            throw new BaseException("MD5加密异常");
+        }
+        //签名错误
+        if (!Objects.equals(mySign, param.getSign())) {
+            log.error("游戏提现签名验证失败, mySign : {}, sign : {}", mySign, param.getSign());
+            throw new BaseException("签名验证失败");
+        }
+        GameRemitLog gameRemitLog = super.getOne(new LambdaQueryWrapper<GameRemitLog>()
+                .eq(GameRemitLog::getMerchantOrderNo, param.getMerchantOrderNo()));
+        if (gameRemitLog == null) {
+            gameRemitLog = this.transform(param, gameExt.getGameId());
+        } else {
+            gameRemitLog.setUserId(param.getUserId());
+            gameRemitLog.setGameId(gameExt.getGameId());
+            gameRemitLog.setAmount(param.getAmount());
+            gameRemitLog.setPayPlatform(PayWayEnum.getKeyByPayWayId(param.getPayPlatform()));
+            gameRemitLog.setPayAccount(param.getPayAccount());
+            gameRemitLog.setCreatedTime(DateUtil.milliToLocalDateTime(param.getCreatedTime()));
+            gameRemitLog.setUpdateTime(LocalDateTime.now());
+        }
+        return super.saveOrUpdate(gameRemitLog);
+    }
+
+    private GameRemitLog transform(GameRemitLogParam param, Long gameId) {
+        return GameRemitLog.builder()
+                .userId(param.getUserId())
+                .gameId(gameId)
+                .merchantOrderNo(param.getMerchantOrderNo())
+                .amount(param.getAmount())
+                .payPlatform(PayWayEnum.getKeyByPayWayId(param.getPayPlatform()))
+                .payAccount(param.getPayAccount())
+                .createdTime(DateUtil.milliToLocalDateTime(param.getCreatedTime()))
+                .createTime(LocalDateTime.now())
+                .updateTime(LocalDateTime.now())
+                .build();
+    }
+
+}