Bläddra i källkod

修改内容:游戏每日复充趋势

lth 1 år sedan
förälder
incheckning
f64e869939

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

@@ -36,7 +36,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) {
@@ -50,7 +50,7 @@ public class GameDataController {
         return ResultVO.ok(gameDataService.getH5Recharge(dto));
     }
     @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) {
@@ -65,7 +65,7 @@ public class GameDataController {
     }
 
     @ApiOperation(value = "游戏每日复充数据")
-    //@PreAuthorize(permissionKey = "gameData:adsGameDay:again")
+    @PreAuthorize(permissionKey = "gameData:adsGameDay:again")
     @PostMapping("/again")
     public ResultVO<Map<LocalDate, List<GameDataAgainDayVO>>> getGameDataAgainDay(@RequestBody GameDataAgainDayDTO dto) throws Exception {
         return ResultVO.ok(gameDataService.getGameDataAgainDay(dto));

+ 71 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsOverallSummaryAgent.java

@@ -0,0 +1,71 @@
+package com.zanxiang.game.data.serve.pojo.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.nutz.dao.entity.annotation.Column;
+import org.nutz.dao.entity.annotation.PK;
+import org.nutz.dao.entity.annotation.Table;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+/**
+ * <p>
+ * 整体概况(渠道)
+ * </p>
+ *
+ * @author tianhua
+ * @time 2023/7/11
+ * @Description
+ **/
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Table(AdsGameDayAgainNature.TABLE_NAME)
+@PK({"dt", "agentId", "accountId", "sourceSystem"})
+public class AdsOverallSummaryAgent implements Serializable {
+    private static final long serialVersionUID = 1L;
+    public static final String TABLE_NAME = "ads_overall_summary_agent";
+
+    /**
+     * 日期(投放日期)
+     */
+    private LocalDate dt;
+
+    /**
+     * 渠道ID
+     */
+    private Long agentId;
+
+    /**
+     * 广告账号
+     */
+    private Long accountId;
+
+    /**
+     * SDK来源
+     */
+    private String sourceSystem;
+
+    /**
+     * 投手ID
+     */
+    @Column
+    private Long pitcherId;
+
+    /**
+     * 游戏ID
+     */
+    @Column
+    private Long gameId;
+
+    /**
+     * 新增渠道
+     */
+    @Column
+    private Long todayAgentCount;
+
+}

+ 84 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsOverallSummaryAmount.java

@@ -0,0 +1,84 @@
+package com.zanxiang.game.data.serve.pojo.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.nutz.dao.entity.annotation.Column;
+import org.nutz.dao.entity.annotation.PK;
+import org.nutz.dao.entity.annotation.Table;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+/**
+ * <p>
+ * 整体概况(充值)
+ * </p>
+ *
+ * @author tianhua
+ * @time 2023/7/11
+ * @Description
+ **/
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Table(AdsGameDayAgainNature.TABLE_NAME)
+@PK({"dt", "agentId", "accountId", "sourceSystem"})
+public class AdsOverallSummaryAmount implements Serializable {
+    private static final long serialVersionUID = 1L;
+    public static final String TABLE_NAME = "ads_overall_summary_amount";
+
+    /**
+     * 日期(投放日期)
+     */
+    private LocalDate dt;
+
+    /**
+     * 渠道ID
+     */
+    private Long agentId;
+
+    /**
+     * 广告账号
+     */
+    private Long accountId;
+
+    /**
+     * SDK来源
+     */
+    private String sourceSystem;
+
+    /**
+     * 投手ID
+     */
+    @Column
+    private Long pitcherId;
+
+    /**
+     * 游戏ID
+     */
+    @Column
+    private Long gameId;
+
+    /**
+     * 账面充值
+     */
+    @Column
+    private BigDecimal todayAmount;
+
+    /**
+     * 新用户充值
+     */
+    @Column
+    private BigDecimal todayNewUserAmount;
+
+    /**
+     * 首日新用户充值
+     */
+    @Column
+    private BigDecimal todayFirstNewUserAmount;
+
+}

+ 72 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsOverallSummaryCost.java

@@ -0,0 +1,72 @@
+package com.zanxiang.game.data.serve.pojo.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.nutz.dao.entity.annotation.Column;
+import org.nutz.dao.entity.annotation.PK;
+import org.nutz.dao.entity.annotation.Table;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+/**
+ * <p>
+ * 整体概况(消耗)
+ * </p>
+ *
+ * @author tianhua
+ * @time 2023/7/11
+ * @Description
+ **/
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Table(AdsGameDayAgainNature.TABLE_NAME)
+@PK({"dt", "agentId", "accountId", "sourceSystem"})
+public class AdsOverallSummaryCost implements Serializable {
+    private static final long serialVersionUID = 1L;
+    public static final String TABLE_NAME = "ads_overall_summary_cost";
+
+    /**
+     * 日期(投放日期)
+     */
+    private LocalDate dt;
+
+    /**
+     * 渠道ID
+     */
+    private Long agentId;
+
+    /**
+     * 广告账号
+     */
+    private Long accountId;
+
+    /**
+     * SDK来源
+     */
+    private String sourceSystem;
+
+    /**
+     * 投手ID
+     */
+    @Column
+    private Long pitcherId;
+
+    /**
+     * 游戏ID
+     */
+    @Column
+    private Long gameId;
+
+    /**
+     * 消耗
+     */
+    @Column
+    private BigDecimal todayCost;
+
+}

+ 2 - 2
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsGamePushNum.java → game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsOverallSummaryGame.java

@@ -26,9 +26,9 @@ import java.time.LocalDate;
 @Builder
 @Table(AdsGameDayAgainNature.TABLE_NAME)
 @PK({"dt", "agentId", "pitcherId", "accountId", "sourceSystem"})
-public class AdsGamePushNum implements Serializable {
+public class AdsOverallSummaryGame implements Serializable {
     private static final long serialVersionUID = 1L;
-    public static final String TABLE_NAME = "ads_game_push_num";
+    public static final String TABLE_NAME = "ads_overall_summary_game";
 
     /**
      * 日期(投放日期)

+ 71 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsOverallSummaryUser.java

@@ -0,0 +1,71 @@
+package com.zanxiang.game.data.serve.pojo.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.nutz.dao.entity.annotation.Column;
+import org.nutz.dao.entity.annotation.PK;
+import org.nutz.dao.entity.annotation.Table;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+/**
+ * <p>
+ * 整体概况(玩家)
+ * </p>
+ *
+ * @author tianhua
+ * @time 2023/7/11
+ * @Description
+ **/
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Table(AdsGameDayAgainNature.TABLE_NAME)
+@PK({"dt", "agentId", "accountId", "sourceSystem"})
+public class AdsOverallSummaryUser implements Serializable {
+    private static final long serialVersionUID = 1L;
+    public static final String TABLE_NAME = "ads_overall_summary_user";
+
+    /**
+     * 日期(投放日期)
+     */
+    private LocalDate dt;
+
+    /**
+     * 渠道ID
+     */
+    private Long agentId;
+
+    /**
+     * 广告账号
+     */
+    private Long accountId;
+
+    /**
+     * SDK来源
+     */
+    private String sourceSystem;
+
+    /**
+     * 投手ID
+     */
+    @Column
+    private Long pitcherId;
+
+    /**
+     * 游戏ID
+     */
+    @Column
+    private Long gameId;
+
+    /**
+     * 新增玩家数量
+     */
+    @Column
+    private Long todayUserCount;
+
+}

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

@@ -39,6 +39,12 @@ public class GameDataDayVO {
     @ApiModelProperty(value = "游戏类型")
     private Long gameClassify;
 
+    /**
+     * SDK来源
+     */
+    @ApiModelProperty(value = "SDK来源")
+    private String sourceSystem;
+
     /**
      * 注册时间
      */

+ 94 - 7
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameDataServiceImpl.java

@@ -741,12 +741,12 @@ public class GameDataServiceImpl implements IGameDataService {
 
         //获取三张表的查询结果
         List<AdsGameDayAgain> list = getListByTableType("total", cri);
-        List<AdsGameDayAgainBuy> listBuy = getListByTableType("buy", cri);
-        List<AdsGameDayAgainNature> listNature = getListByTableType("nature", cri);
+        List<AdsGameDayAgainBuy> listBuySql = getListByTableType("buy", cri);
+        List<AdsGameDayAgainNature> listNatureSql = getListByTableType("nature", cri);
 
         log.info("list长度:" + list.size());
-        log.info("listBuy长度:" + listBuy.size());
-        log.info("listNature长度:" + listNature.size());
+        log.info("listBuy长度:" + listBuySql.size());
+        log.info("listNature长度:" + listNatureSql.size());
 
         //创建Map记录数据
         Map<LocalDate, List<GameDataAgainDayVO>> map = new TreeMap<>(
@@ -755,12 +755,16 @@ public class GameDataServiceImpl implements IGameDataService {
         List<List<GameDataAgainDayVO>> tempList = new ArrayList<>();
         //记录查询出的记录条数
         int count = list.size();
-        //如果长度为0返回空结果
+        //如果总复充list长度为0返回空结果
         if (count == 0){
             return map;
         }
-        //初始化list
+        //初始化tempList
         initList(tempList, count);
+        //补全缺少的数据
+        List resList = findMissDateAgainData(list, listBuySql, listNatureSql);
+        List<AdsGameDayAgainBuy> listBuy = (List<AdsGameDayAgainBuy>) resList.get(0);
+        List<AdsGameDayAgainNature> listNature = (List<AdsGameDayAgainNature>) resList.get(1);
 
         //外层循环8次 表示不同复充次数的数据
         for (int i = 0; i < 8; i++) {
@@ -846,6 +850,10 @@ public class GameDataServiceImpl implements IGameDataService {
             map.put(list.get(i).getDdf(), tempList.get(i));
         }
 
+        log.info("list长度:" + list.size());
+        log.info("listBuy长度:" + listBuy.size());
+        log.info("listNature长度:" + listNature.size());
+
         //返回数据
         return map;
     }
@@ -932,7 +940,7 @@ public class GameDataServiceImpl implements IGameDataService {
      * @return DayN数据
      */
     private DayN getDayNByTableName(Map<String, Object> dayNMap, String tableName) {
-        Sql dayNSql = null;
+        Sql dayNSql;
         if (dayNMap.get("sourceSystem") != null) {
             //构架SQL语句,查询相关DayN表获取相关充值数据
             dayNSql = Sqls.create(
@@ -1083,6 +1091,84 @@ public class GameDataServiceImpl implements IGameDataService {
         }
     }
 
+    /**
+     * 补全缺少的日期数据
+     * @param list 查询到的复充趋势总量原始数据
+     * @param listBuy 查询到的复充趋势买量量原始数据
+     * @param listNature 查询到的复充趋势自然量原始数据
+     * @return 返回处理好的结果list
+     */
+    private List findMissDateAgainData(List<AdsGameDayAgain> list,List<AdsGameDayAgainBuy> listBuy, List<AdsGameDayAgainNature> listNature){
+        //初始化买量和自然量复充数据list
+        int count = list.size();
+        List<AdsGameDayAgainBuy> listBuyFinal = new ArrayList<>();
+        List<AdsGameDayAgainNature> listNatureFinal = new ArrayList<>();
+
+        //先判断三个list的数据量是否相同
+        if (count == listBuy.size() && count == listNature.size()){
+            //不少数据
+            List resList = new ArrayList();
+            resList.add(listBuy);
+            resList.add(listNature);
+            return resList;
+        }
+
+        //循环赋初值
+        for (int i = 0; i< count ; i++){
+            listBuyFinal.add(i, AdsGameDayAgainBuy.builder()
+                    .dt(list.get(i).getDt())
+                    .ddf(list.get(i).getDdf())
+                    .gameId(list.get(i).getGameId())
+                    .gameName(list.get(i).getGameName())
+                    .sourceSystem(list.get(i).getSourceSystem())
+                    .buyC1(0L)
+                    .buyC2(0L)
+                    .buyC3(0L)
+                    .buyC4(0L)
+                    .buyC5(0L)
+                    .buyC6(0L)
+                    .buyC7(0L)
+                    .buyC8(0L)
+                    .buyC9(0L)
+                    .build());
+            listNatureFinal.add(i, AdsGameDayAgainNature.builder()
+                    .dt(list.get(i).getDt())
+                    .ddf(list.get(i).getDdf())
+                    .gameId(list.get(i).getGameId())
+                    .gameName(list.get(i).getGameName())
+                    .sourceSystem(list.get(i).getSourceSystem())
+                    .natureC1(0L)
+                    .natureC2(0L)
+                    .natureC3(0L)
+                    .natureC4(0L)
+                    .natureC5(0L)
+                    .natureC6(0L)
+                    .natureC7(0L)
+                    .natureC8(0L)
+                    .natureC9(0L)
+                    .build());
+        }
+
+        //替换已经查询到的数据
+        int tempBuy = 0;
+        int tempNature = 0;
+        for (int i = 0; i < count; i++) {
+            if (tempBuy < listBuy.size() && listBuyFinal.get(i).getDdf().equals(listBuy.get(tempBuy).getDdf())){
+                listBuyFinal.set(i, listBuy.get(tempBuy));
+                tempBuy++;
+            }
+            if (tempNature < listNature.size() && listNatureFinal.get(i).getDdf().equals(listNature.get(tempNature).getDdf())){
+                listNatureFinal.set(i, listNature.get(tempNature));
+                tempNature++;
+            }
+        }
+        List resList = new ArrayList();
+        resList.add(listBuyFinal);
+        resList.add(listNatureFinal);
+
+        return resList;
+    }
+
     /**
      * 不同表获取不同的list结果
      *
@@ -1140,6 +1226,7 @@ public class GameDataServiceImpl implements IGameDataService {
                     game_name,
                     game_id,
                     game_classify,
+                    source_system,
                                     
                     buy_reg_num,
                     nature_reg_num,