Browse Source

整体概况修改;角色战力排行榜更新角色名;角色充值排行版更新最新角色名

Letianhua 1 year ago
parent
commit
f3b24dd506

+ 1 - 1
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameServerSumDayVO.java

@@ -30,7 +30,7 @@ public class GameServerSumDayVO {
      * 区服ID
      */
     @ApiModelProperty(value = "区服ID")
-    private Long serverId;
+    private String serverId;
 
     /**
      * 区服名称

+ 19 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/OverallSummaryVO.java

@@ -85,6 +85,25 @@ public class OverallSummaryVO {
     @ApiModelProperty(value = "昨日账面充值")
     private BigDecimal yesterdayAmount;
 
+    /**
+     * 自然量累计充值(布谷用)
+     */
+    @ApiModelProperty(value = "自然量累计充值(布谷用)")
+    private BigDecimal totalAmountForBG;
+
+    /**
+     * 自然量今日账面充值(布谷用)
+     */
+    @ApiModelProperty(value = "自然量今日账面充值(布谷用)")
+    private BigDecimal todayAmountForBG;
+
+    /**
+     * 自然量昨日账面充值(布谷用)
+     */
+    @ApiModelProperty(value = "自然量昨日账面充值(布谷用)")
+    private BigDecimal yesterdayAmountForBG;
+
+
     /**
      * 总渠道数
      */

+ 71 - 25
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/OverallSummaryServiceImpl.java

@@ -54,6 +54,11 @@ public class OverallSummaryServiceImpl implements IOverallSummaryService {
         //创建返回给前端的对象
         OverallSummaryVO overallSummaryVO = new OverallSummaryVO();
 
+        //默认查询‘ZX_ONE’数据
+        if (StringUtils.isBlank(dto.getSourceSystem())) {
+            dto.setSourceSystem("ZX_ONE");
+        }
+
         //计算总计条件
         Condition totalCri = myCondition(userIds, gameIds, dto, true, false, -1);
         //计算今日数据条件
@@ -90,16 +95,37 @@ public class OverallSummaryServiceImpl implements IOverallSummaryService {
         overallSummaryVO.setYesterdayAgentCount(getResultBySql(1, "today_agent_count-ads_overall_summary_agent", yesterdayCri));
 
         //计算充值相关数据
-        //查询充值总计
-        overallSummaryVO.setTotalAmount(getResultBySql("today_amount-ads_overall_summary_amount", totalCri));
-        //查询今日账面
-        overallSummaryVO.setTodayAmount(getResultBySql("today_amount-ads_overall_summary_amount", todayCri));
-        //查询昨日账面
-        overallSummaryVO.setYesterdayAmount(getResultBySql("today_amount-ads_overall_summary_amount", yesterdayCri));
-        //查询今日新用户充值
-        overallSummaryVO.setTodayNewPlayerAmount(getResultBySql("today_new_user_amount-ads_overall_summary_amount", todayCri));
-        //查询昨日新用户充值(昨日的首日新用户充值)
-        overallSummaryVO.setYesterdayNewPlayerAmount(getResultBySql("today_first_new_user_amount-ads_overall_summary_amount", yesterdayCri));
+        //分source_system判断
+        if (dto.getSourceSystem().startsWith("BG_")) {
+            //查询充值总计(买量)
+            overallSummaryVO.setTotalAmount(getResultBySql("today_buy_amount-ads_overall_summary_amount", totalCri));
+            //查询今日账面(买量)
+            overallSummaryVO.setTodayAmount(getResultBySql("today_buy_amount-ads_overall_summary_amount", todayCri));
+            //查询昨日账面(买量)
+            overallSummaryVO.setYesterdayAmount(getResultBySql("today_buy_amount-ads_overall_summary_amount", yesterdayCri));
+            //查询今日新用户充值
+            overallSummaryVO.setTodayNewPlayerAmount(getResultBySql("today_new_user_amount-ads_overall_summary_amount", todayCri));
+            //查询昨日新用户充值(昨日的首日新用户充值)
+            overallSummaryVO.setYesterdayNewPlayerAmount(getResultBySql("today_first_new_user_amount-ads_overall_summary_amount", yesterdayCri));
+
+            //查询充值总计(自然量)
+            overallSummaryVO.setTotalAmountForBG(getResultBySql("today_nature_amount-ads_overall_summary_amount", totalCri));
+            //查询今日账面(自然量)
+            overallSummaryVO.setTodayAmount(getResultBySql("today_nature_amount-ads_overall_summary_amount", todayCri));
+            //查询昨日账面(自然量)
+            overallSummaryVO.setYesterdayAmount(getResultBySql("today_nature_amount-ads_overall_summary_amount", yesterdayCri));
+        } else {
+            //查询充值总计
+            overallSummaryVO.setTotalAmount(getResultBySql("today_amount-ads_overall_summary_amount", totalCri));
+            //查询今日账面
+            overallSummaryVO.setTodayAmount(getResultBySql("today_amount-ads_overall_summary_amount", todayCri));
+            //查询昨日账面
+            overallSummaryVO.setYesterdayAmount(getResultBySql("today_amount-ads_overall_summary_amount", yesterdayCri));
+            //查询今日新用户充值
+            overallSummaryVO.setTodayNewPlayerAmount(getResultBySql("today_new_user_amount-ads_overall_summary_amount", todayCri));
+            //查询昨日新用户充值(昨日的首日新用户充值)
+            overallSummaryVO.setYesterdayNewPlayerAmount(getResultBySql("today_first_new_user_amount-ads_overall_summary_amount", yesterdayCri));
+        }
 
         //计算消耗相关数据
         //查询消耗总计
@@ -110,9 +136,6 @@ public class OverallSummaryServiceImpl implements IOverallSummaryService {
         overallSummaryVO.setYesterdayTotalCost(getResultBySql("today_cost-ads_overall_summary_cost", yesterdayCri));
 
         //计算Roi相关数据
-        //计算总回本数据
-        overallSummaryVO.setTotalRoi(overallSummaryVO.getTotalCost().compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO :
-                overallSummaryVO.getTotalAmount().divide(overallSummaryVO.getTotalCost(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
         //计算总数据的首日Roi
         //计算所有的首日新用户充值
         BigDecimal totalFirstNewUserAmount = getResultBySql("today_first_new_user_amount-ads_overall_summary_amount", totalCri);
@@ -123,18 +146,41 @@ public class OverallSummaryServiceImpl implements IOverallSummaryService {
         BigDecimal todayFirstNewUserAmount = getResultBySql("today_first_new_user_amount-ads_overall_summary_amount", todayCri);
         overallSummaryVO.setFirstRoi(overallSummaryVO.getTodayTotalCost().compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO :
                 todayFirstNewUserAmount.divide(overallSummaryVO.getTodayTotalCost(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
-        //计算7日Roi
-        //计算7日账面充值和消耗
-        BigDecimal d7Amount = getResultBySql("today_amount-ads_overall_summary_amount", d7Cri);
-        BigDecimal d7Cost = getResultBySql("today_cost-ads_overall_summary_cost", d7Cri);
-        overallSummaryVO.setD7TotalRoi(d7Cost.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO :
-                d7Amount.divide(d7Cost, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
-        //计算30日Roi
-        //计算7日账面充值和消耗
-        BigDecimal d30Amount = getResultBySql("today_amount-ads_overall_summary_amount", d30Cri);
-        BigDecimal d30Cost = getResultBySql("today_cost-ads_overall_summary_cost", d30Cri);
-        overallSummaryVO.setD30TotalRoi(d30Cost.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO :
-                d30Amount.divide(d30Cost, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
+
+        //布谷数据不同处理
+        if (dto.getSourceSystem().startsWith("BG_")) {
+            //计算总回本数据
+            overallSummaryVO.setTotalRoi(overallSummaryVO.getTotalCost().compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO :
+                    (overallSummaryVO.getTotalAmount().add(overallSummaryVO.getTotalAmountForBG())).divide(overallSummaryVO.getTotalCost(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
+            //计算7日Roi
+            //计算7日账面充值和消耗(布谷只算买量)
+            BigDecimal d7Amount = getResultBySql("today_buy_amount-ads_overall_summary_amount", d7Cri);
+            BigDecimal d7Cost = getResultBySql("today_cost-ads_overall_summary_cost", d7Cri);
+            overallSummaryVO.setD7TotalRoi(d7Cost.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO :
+                    d7Amount.divide(d7Cost, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
+            //计算30日Roi
+            //计算7日账面充值和消耗(布谷只算买量)
+            BigDecimal d30Amount = getResultBySql("today_buy_amount-ads_overall_summary_amount", d30Cri);
+            BigDecimal d30Cost = getResultBySql("today_cost-ads_overall_summary_cost", d30Cri);
+            overallSummaryVO.setD30TotalRoi(d30Cost.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO :
+                    d30Amount.divide(d30Cost, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
+        } else {
+            //计算总回本数据
+            overallSummaryVO.setTotalRoi(overallSummaryVO.getTotalCost().compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO :
+                    overallSummaryVO.getTotalAmount().divide(overallSummaryVO.getTotalCost(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
+            //计算7日Roi
+            //计算7日账面充值和消耗
+            BigDecimal d7Amount = getResultBySql("today_amount-ads_overall_summary_amount", d7Cri);
+            BigDecimal d7Cost = getResultBySql("today_cost-ads_overall_summary_cost", d7Cri);
+            overallSummaryVO.setD7TotalRoi(d7Cost.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO :
+                    d7Amount.divide(d7Cost, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
+            //计算30日Roi
+            //计算7日账面充值和消耗
+            BigDecimal d30Amount = getResultBySql("today_amount-ads_overall_summary_amount", d30Cri);
+            BigDecimal d30Cost = getResultBySql("today_cost-ads_overall_summary_cost", d30Cri);
+            overallSummaryVO.setD30TotalRoi(d30Cost.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO :
+                    d30Amount.divide(d30Cost, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
+        }
 
         return overallSummaryVO;
     }

+ 110 - 28
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/RoleManageServiceImpl.java

@@ -789,7 +789,7 @@ public class RoleManageServiceImpl implements IRoleManageService {
                 		a.association_user_id as association_user_id, -- 来源的用户id
                 		a.source_system as source_system, -- sdk来源
                 		a.role_id as role_id, -- 角色id
-                		a.role_name as role_name, -- 角色名
+                		u.role_name as role_name, -- 角色名
                 		a.create_time as role_create_time, -- 角色创建时间
                 		a.os as os, -- 角色操作系统
                 		b.role_level as role_level, -- 角色等级
@@ -1144,6 +1144,27 @@ public class RoleManageServiceImpl implements IRoleManageService {
                         FROM dm_game_order.t_game_server_merge
                         WHERE is_delete = 0
                     ) t on a.source_system = t.source_system AND a.server_id = t.server_id AND d.super_game_id = t.game_id
+                    LEFT JOIN(
+                		SELECT
+                			a.source_system,
+                			a.role_id,
+                			a.role_name,
+                			a.role_level,
+                			a.combat_num ,
+                			a.game_id ,
+                			b.parent_game_id,
+                			b.super_game_id ,
+                			ROW_NUMBER()over(partition by a.source_system , a.role_id, b.parent_game_id order by a.role_level desc,a.combat_num desc) as num
+                		FROM dm_game_order.t_game_user_role a
+                		LEFT JOIN (
+                			SELECT
+                				source_system,
+                				id,
+                				IFNULL(parent_id, id) as parent_game_id,
+                				IFNULL(super_game_id, id) as super_game_id
+                			FROM dm_game_order.t_game
+                		) b on a.source_system = b.source_system AND a.game_id = b.id
+                	) u on a.source_system = u.source_system AND a.role_id = u.role_id AND d.super_game_id = u.super_game_id AND u.num =1
                 ) a
                 """ + criA;
     }
@@ -1163,7 +1184,7 @@ public class RoleManageServiceImpl implements IRoleManageService {
                         a.association_user_id as association_user_id, -- 来源的用户id
                         a.source_system as source_system, -- sdk来源
                         a.role_id as role_id, -- 角色id
-                        a.role_name as role_name, -- 角色名
+                        u.role_name as role_name, -- 角色名
                         a.create_time as role_create_time, -- 角色创建时间
                         a.os as os, -- 角色操作系统
                         b.role_level as role_level, -- 角色等级
@@ -1227,7 +1248,7 @@ public class RoleManageServiceImpl implements IRoleManageService {
                         j.user_wechat as user_wechat, -- 客户微信号
                         j.user_phone as user_phone, -- 客户手机号
                         IF(TIMESTAMPDIFF(HOUR, g.update_time, NOW()) > 72,
-                        				IF(TIMESTAMPDIFF(HOUR, f.pay_time, NOW()) < 72 , 0, 1) , 0) as is_remove_game_for_system, -- 是否退游 1-是;0-否(系统判定)
+                                        IF(TIMESTAMPDIFF(HOUR, f.pay_time, NOW()) < 72 , 0, 1) , 0) as is_remove_game_for_system, -- 是否退游 1-是;0-否(系统判定)
                         j.is_remove_game as is_remove_game, -- 是否退游 1-是;0-否;null-代表未操作数据
                         j.is_wake_up as is_wake_up, -- 是否唤醒 1-是;0-否
                         j.remark as remark, -- 备注
@@ -1518,6 +1539,27 @@ public class RoleManageServiceImpl implements IRoleManageService {
                         FROM dm_game_order.t_game_server_merge
                         WHERE is_delete = 0
                     ) t on a.source_system = t.source_system AND a.server_id = t.server_id AND d.super_game_id = t.game_id
+                    LEFT JOIN(
+                        SELECT
+                            a.source_system,
+                            a.role_id,
+                            a.role_name,
+                            a.role_level,
+                            a.combat_num ,
+                            a.game_id ,
+                            b.parent_game_id,
+                            b.super_game_id ,
+                            ROW_NUMBER()over(partition by a.source_system , a.role_id, b.parent_game_id order by a.role_level desc,a.combat_num desc) as num
+                        FROM dm_game_order.t_game_user_role a
+                        LEFT JOIN (
+                            SELECT
+                                source_system,
+                                id,
+                                IFNULL(parent_id, id) as parent_game_id,
+                                IFNULL(super_game_id, id) as super_game_id
+                            FROM dm_game_order.t_game
+                        ) b on a.source_system = b.source_system AND a.game_id = b.id
+                    ) u on a.source_system = u.source_system AND a.role_id = u.role_id AND d.super_game_id = u.super_game_id AND u.num =1
                 ) a
                 """ + criA;
     }
@@ -3147,18 +3189,18 @@ public class RoleManageServiceImpl implements IRoleManageService {
                 	*
                 FROM (
                 	SELECT
-                		source_system ,
-                		server_id ,
-                		super_game_id ,
-                		dt,
-                		merge_time,
-                		role_id ,
-                		role_name,
-                		role_level ,
-                		role_vip ,
-                		total_amount ,
-                		combat_num ,
-                		ROW_NUMBER()over(partition by source_system ,server_id ,super_game_id order by combat_num desc) as rank_num
+                		a.source_system ,
+                		a.server_id ,
+                		a.super_game_id ,
+                		a.dt,
+                		a.merge_time,
+                		a.role_id ,
+                		b.role_name,
+                		a.role_level ,
+                		a.role_vip ,
+                		a.total_amount ,
+                		a.combat_num ,
+                		ROW_NUMBER()over(partition by a.source_system ,a.server_id ,a.super_game_id order by a.combat_num desc) as rank_num
                 	FROM (
                 		SELECT
                 			source_system ,
@@ -3184,7 +3226,27 @@ public class RoleManageServiceImpl implements IRoleManageService {
                 		) b on a.source_system = b.b_source_system AND a.boss_server_id = b.b_server_id AND a.super_game_id = b.b_game_id
                 		WHERE b_is_merge = 0
                 		GROUP BY role_id , source_system ,super_game_id, server_id , boss_server_id
-                	) a
+                	) a LEFT JOIN(
+                		SELECT
+                			a.source_system,
+                			a.role_id,
+                			a.role_name,
+                			a.role_level,
+                			a.combat_num ,
+                			a.game_id ,
+                			b.parent_game_id,
+                			b.super_game_id ,
+                			ROW_NUMBER()over(partition by a.source_system , a.role_id, b.parent_game_id order by a.role_level desc,a.combat_num desc) as num
+                		FROM dm_game_order.t_game_user_role a
+                		LEFT JOIN (
+                			SELECT
+                				source_system,
+                				id,
+                				IFNULL(parent_id, id) as parent_game_id,
+                				IFNULL(super_game_id, id) as super_game_id
+                			FROM dm_game_order.t_game
+                		) b on a.source_system = b.source_system AND a.game_id = b.id
+                	) b on a.source_system = b.source_system AND a.role_id = b.role_id AND a.super_game_id = b.super_game_id AND b.num =1
                 ) a
                 """;
     }
@@ -3199,17 +3261,17 @@ public class RoleManageServiceImpl implements IRoleManageService {
                 	*
                 FROM (
                 	SELECT
-                		source_system ,
-                		boss_server_id ,
-                		super_game_id ,
-                		merge_time,
-                		role_id ,
-                		role_name,
-                		role_level ,
-                		role_vip ,
-                		total_amount ,
-                		combat_num ,
-                		ROW_NUMBER()over(partition by source_system ,boss_server_id ,super_game_id order by combat_num desc) as rank_num
+                		a.source_system ,
+                		a.boss_server_id ,
+                		a.super_game_id ,
+                		a.merge_time,
+                		a.role_id ,
+                		b.role_name,
+                		a.role_level ,
+                		a.role_vip ,
+                		a.total_amount ,
+                		a.combat_num ,
+                		ROW_NUMBER()over(partition by a.source_system ,a.boss_server_id ,a.super_game_id order by a.combat_num desc) as rank_num
                 	FROM (
                 		SELECT
                 			source_system ,
@@ -3224,7 +3286,27 @@ public class RoleManageServiceImpl implements IRoleManageService {
                 			MAX(combat_num) as combat_num
                 		FROM game_ads.ads_role_combat_num_ranking
                 		GROUP BY role_id , source_system ,super_game_id, boss_server_id
-                	) a
+                	) a LEFT JOIN(
+                		SELECT
+                			a.source_system,
+                			a.role_id,
+                			a.role_name,
+                			a.role_level,
+                			a.combat_num ,
+                			a.game_id ,
+                			b.parent_game_id,
+                			b.super_game_id ,
+                			ROW_NUMBER()over(partition by a.source_system , a.role_id, b.parent_game_id order by a.role_level desc,a.combat_num desc) as num
+                		FROM dm_game_order.t_game_user_role a
+                		LEFT JOIN (
+                			SELECT
+                				source_system,
+                				id,
+                				IFNULL(parent_id, id) as parent_game_id,
+                				IFNULL(super_game_id, id) as super_game_id
+                			FROM dm_game_order.t_game
+                		) b on a.source_system = b.source_system AND a.game_id = b.id
+                	) b on a.source_system = b.source_system AND a.role_id = b.role_id AND a.super_game_id = b.super_game_id AND b.num =1
                 ) a
                 """;
     }