Bläddra i källkod

修改内容:游戏数据

shishaosong 1 år sedan
förälder
incheckning
35290fd271
18 ändrade filer med 542 tillägg och 35 borttagningar
  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. 9 0
      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. 6 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsEverydayWater.java
  9. 12 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/enums/OrderByEnum.java
  10. 65 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameDataWaterVO.java
  11. 33 9
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GamePromoteDayVO.java
  12. 52 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/PlayerTemplateVO.java
  13. 45 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/RechargeTemplateVO.java
  14. 30 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/RechargeTrendVO.java
  15. 4 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IGameDataService.java
  16. 104 13
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/AccountAgentDayServiceImpl.java
  17. 116 2
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameDataServiceImpl.java
  18. 3 5
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/RankingServiceImpl.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));

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

@@ -3,8 +3,10 @@ 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;
@@ -50,5 +52,12 @@ public class GameDataController {
         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;
 }

+ 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;
+
     /**
      * 用户充值金额
      */

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

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

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

@@ -228,35 +228,59 @@ 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 = "不展示--付费趋势: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 = "不展示--付费趋势:总")
+    private String trendTotal;
+
     @ApiModelProperty(notes = "付费趋势:1天")
-    private String rechargeTrendDay1;
+    private RechargeTrendVO rechargeTrendDay1;
 
     @ApiModelProperty(notes = "付费趋势:3天")
-    private String rechargeTrendDay3;
+    private RechargeTrendVO rechargeTrendDay3;
 
     @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 = "付费趋势:总")
-    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);
 }

+ 104 - 13
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/AccountAgentDayServiceImpl.java

@@ -1,5 +1,6 @@
 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;
@@ -7,9 +8,11 @@ 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;
@@ -51,6 +54,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 +92,88 @@ 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[] 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[] 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 +220,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 +263,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 +447,14 @@ 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_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_sum AS trend_total,
                 	hundred_user_num,
                 	hundred_user_num_cost
                 from
@@ -499,9 +590,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,

+ 116 - 2
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;
@@ -584,5 +590,113 @@ 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(cri);
+        dao.execute(templateSql);
+
+        Map<Long, List<AdsEverydayWater>> collect = templateSql.getList(AdsEverydayWater.class).stream().collect(Collectors.groupingBy(AdsEverydayWater::getGameId));
+//        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 -> {
+//                            rechargeTemplateVOList.add(RechargeTemplateVO.builder()
+//                                .amountCount(adsEverydayWater.getAmountCount())
+//                                .amountNum(adsEverydayWater.getAmountNum())
+//                                .amountOrderBy(adsEverydayWater.getAmountOrderBy())
+//                                .amountPost(adsEverydayWater.getAmountPost())
+//                                    .build());
+//                            playerTemplateVOS.add(PlayerTemplateVO.builder()
+//                                            .userId(adsEverydayWater.getUserId())
+//                                            .userAmount(adsEverydayWater.getUserAmount())
+//                                            .userOrderBy(adsEverydayWater.getUserOrderBy())
+//                                            .userName(adsEverydayWater.getUserName())
+//                                            .proportion(adsEverydayWater.getUserAmount()/adsEverydayWater.getAmount())
+//                                    .build())
+//                        });
+//
+//                    }
+//                })
+//                .collect(Collectors.toList());
+
+        return new Page<>(sql.getList(GameDataWaterVO.class),pager);
+    }
+
+    private String waterSql() {
+        return """
+                select
+                game_id as id,
+                game_id,
+                max(game_name) as game_name,
+                max(game_classify) as game_name,
+                max(amount) as game_name,
+                max(buy_amount) as game_name,
+                max(nature_amount) as game_name
+                from ads_everyday_water
+                """;
+    }
+
+    private String waterTemplateSql() {
+        return """
+                select
+                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 接口实例