Quellcode durchsuchen

修改内容:角色战力排行榜

lth vor 1 Jahr
Ursprung
Commit
86292bc785

+ 187 - 179
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/RoleManageServiceImpl.java

@@ -650,7 +650,7 @@ public class RoleManageServiceImpl implements IRoleManageService {
             cri.getOrderBy().orderBy(dto.getSortFiled(), dto.getSortType());
         } else {
             //默认排序
-            cri.getOrderBy().orderBy("merge_time", dto.getSortType());
+            cri.getOrderBy().orderBy("dt", dto.getSortType());
             cri.getOrderBy().orderBy("server_combat_num", dto.getSortType());
         }
         //查询出区服相关数据
@@ -2096,22 +2096,22 @@ public class RoleManageServiceImpl implements IRoleManageService {
                     COUNT(1)
                 FROM(
                     SELECT
-                    	-- 查询每个超父游戏-原始区服维度的信息
-                    	source_system,
-                    	super_game_id , -- 超父游戏ID
-                    	MAX(super_game_name) as super_game_name , -- 超父游戏名
-                    	server_id, -- 区服ID
-                    	MAX(server_name) as server_name, -- 区服名
-                    	MAX(dt) as dt, -- 开服日期
-                    	TIMESTAMPDIFF(DAY, MAX(dt), NOW()) start_day, -- 开服天数
-                    	boss_server_id, -- 合服ID
-                    	MAX(boss_server_name) as boss_server_name, -- 合服名
-                    	MAX(merge_time) as merge_time , -- 合服时间
-                    	MAX(sum_server_count) as sum_server_count, -- 合服次数
-                    	MAX(h.is_merge) as is_merge, -- 是否参与过合服
-                    	SUM(server_combat_num) as server_combat_num, -- 区服战力
-                    	MAX(c.new_user_count) as new_user_count, -- 新用户人数
-                    	MAX(d.create_role_count) as create_role_count , -- 创角人数
+                        -- 查询每个超父游戏-原始区服维度的信息
+                        source_system,
+                        super_game_id , -- 超父游戏ID
+                        MAX(super_game_name) as super_game_name , -- 超父游戏名
+                        server_id, -- 区服ID
+                        MAX(server_name) as server_name, -- 区服名
+                        MAX(dt) as dt, -- 开服日期
+                        TIMESTAMPDIFF(DAY, MAX(dt), NOW()) start_day, -- 开服天数
+                        boss_server_id, -- 合服ID
+                        MAX(boss_server_name) as boss_server_name, -- 合服名
+                        MAX(merge_time) as merge_time , -- 合服时间
+                        MAX(sum_server_count) as sum_server_count, -- 合服次数
+                        MAX(h.is_merge) as is_merge, -- 是否参与过合服
+                        SUM(server_combat_num) as server_combat_num, -- 区服战力
+                        MAX(c.new_user_count) as new_user_count, -- 新用户人数
+                        MAX(d.create_role_count) as create_role_count , -- 创角人数
                         MAX(b.role_num) as role_count , -- 角色数量
                         MAX(e.total_num) as total_num, -- 总付费人数
                         SUM(total_amount) as total_amount, -- 总付费金额
@@ -2130,179 +2130,187 @@ public class RoleManageServiceImpl implements IRoleManageService {
                         SUM(ba3_count) as ba3_count, -- 前天付费次数
                         MAX(f.ba3_active_num) as ba3_active_num -- 前天活跃人数
                     FROM (
-                    	SELECT
-                    		-- 子查询,查询每个父游戏-原始区服维度的信息
-                    		source_system,
-                    		parent_game_id, -- 父游戏ID
-                    		MAX(parent_game_name) as parent_game_name, -- 父游戏名
-                    		super_game_id , -- 超父游戏ID
-                    		MAX(super_game_name) as super_game_name , -- 超父游戏名
-                    		server_id, -- 区服ID
-                    		MAX(server_name) as server_name, -- 区服名
-                    		MAX(dt) as dt, -- 开服日期
-                    		boss_server_id, -- 合服ID
-                    		MAX(boss_server_name) as boss_server_name, -- 合服名
-                    		MAX(merge_time) as merge_time , -- 合服时间
-                    		MAX(sum_server_count) as sum_server_count, -- 合服次数
-                    		SUM(server_combat_num) as server_combat_num, -- 区服战力
-                    	    SUM(total_amount) as total_amount, -- 总付费金额
-                    	    SUM(ba1) as ba1, -- 今日付费金额
-                    	    SUM(ba1_count) as ba1_count, -- 今日付费次数
-                    	    SUM(ba2) as ba2, -- 昨日付费金额
-                    	    SUM(ba2_count) as ba2_count, -- 昨日付费次数
-                    	    SUM(ba3) as ba3, -- 前天付费金额
-                    	    SUM(ba3_count) as ba3_count -- 前天付费次数
-                    	FROM (
-                    		-- 子查询,查询每个子游戏-原始区服维度的信息
-                    		SELECT
-                    			source_system,
-                    			game_id, -- 子游戏ID
-                    			MAX(game_name) as game_name, -- 子游戏名
-                    			parent_game_id, -- 父游戏ID
-                    			MAX(parent_game_name) as parent_game_name, -- 父游戏名
-                    			super_game_id , -- 超父游戏ID
-                    			MAX(super_game_name) as super_game_name , -- 超父游戏名
-                    			server_id, -- 区服ID
-                    			MAX(server_name) as server_name, -- 区服名
-                    			MAX(`date`) as dt, -- 开服日期
-                    			boss_server_id, -- 合服ID
-                    			MAX(boss_server_name) as boss_server_name, -- 合服名
-                    			MAX(merge_time) as merge_time , -- 合服时间
-                    			MAX(sum_server_count) as sum_server_count, -- 合服次数
-                    			MAX(server_combat_num) as server_combat_num, -- 区服战力
-                    			MAX(total_amount) as total_amount, -- 总付费金额
-                    			MAX(ba1) as ba1, -- 今日付费金额
-                    			MAX(ba1_count) as ba1_count, -- 今日付费次数
-                    			MAX(ba2) as ba2, -- 昨日付费金额
-                    			MAX(ba2_count) as ba2_count, -- 昨日付费次数
-                    			MAX(ba3) as ba3, -- 前天付费金额
-                    			MAX(ba3_count) as ba3_count -- 前天付费次数
-                    		FROM game_ads.ads_role_combat_num_ranking
-                    		GROUP BY game_id ,parent_game_id ,super_game_id ,server_id ,boss_server_id ,source_system
-                    	) a GROUP BY parent_game_id ,super_game_id ,server_id ,boss_server_id ,source_system
+                        SELECT
+                            -- 子查询,查询每个父游戏-原始区服维度的信息
+                            source_system,
+                            parent_game_id, -- 父游戏ID
+                            MAX(parent_game_name) as parent_game_name, -- 父游戏名
+                            super_game_id , -- 超父游戏ID
+                            MAX(super_game_name) as super_game_name , -- 超父游戏名
+                            server_id, -- 区服ID
+                            MAX(server_name) as server_name, -- 区服名
+                            MAX(dt) as dt, -- 开服日期
+                            boss_server_id, -- 合服ID
+                            MAX(boss_server_name) as boss_server_name, -- 合服名
+                            MAX(merge_time) as merge_time , -- 合服时间
+                            MAX(sum_server_count) as sum_server_count, -- 合服次数
+                            SUM(server_combat_num) as server_combat_num, -- 区服战力
+                            SUM(total_amount) as total_amount, -- 总付费金额
+                            SUM(ba1) as ba1, -- 今日付费金额
+                            SUM(ba1_count) as ba1_count, -- 今日付费次数
+                            SUM(ba2) as ba2, -- 昨日付费金额
+                            SUM(ba2_count) as ba2_count, -- 昨日付费次数
+                            SUM(ba3) as ba3, -- 前天付费金额
+                            SUM(ba3_count) as ba3_count -- 前天付费次数
+                        FROM (
+                            -- 子查询,查询每个子游戏-原始区服维度的信息
+                            SELECT
+                                source_system,
+                                game_id, -- 子游戏ID
+                                MAX(game_name) as game_name, -- 子游戏名
+                                parent_game_id, -- 父游戏ID
+                                MAX(parent_game_name) as parent_game_name, -- 父游戏名
+                                super_game_id , -- 超父游戏ID
+                                MAX(super_game_name) as super_game_name , -- 超父游戏名
+                                server_id, -- 区服ID
+                                MAX(server_name) as server_name, -- 区服名
+                                MAX(`date`) as dt, -- 开服日期
+                                boss_server_id, -- 合服ID
+                                MAX(boss_server_name) as boss_server_name, -- 合服名
+                                MAX(merge_time) as merge_time , -- 合服时间
+                                MAX(sum_server_count) as sum_server_count, -- 合服次数
+                                MAX(server_combat_num) as server_combat_num, -- 区服战力
+                                MAX(total_amount) as total_amount, -- 总付费金额
+                                MAX(ba1) as ba1, -- 今日付费金额
+                                MAX(ba1_count) as ba1_count, -- 今日付费次数
+                                MAX(ba2) as ba2, -- 昨日付费金额
+                                MAX(ba2_count) as ba2_count, -- 昨日付费次数
+                                MAX(ba3) as ba3, -- 前天付费金额
+                                MAX(ba3_count) as ba3_count -- 前天付费次数
+                            FROM game_ads.ads_role_combat_num_ranking
+                            GROUP BY game_id ,parent_game_id ,super_game_id ,server_id ,boss_server_id ,source_system
+                        ) a GROUP BY parent_game_id ,super_game_id ,server_id ,boss_server_id ,source_system
                     ) a
                     LEFT JOIN (
-                    	SELECT
-                    		-- 超父-原始区服维度
-                    		source_system as b_source_system,
-                    		super_game_id as b_super_game_id,
-                    		server_id as b_server_id,
-                    		boss_server_id as b_boss_server_id,
-                    		COUNT(DISTINCT role_id) as role_num -- 角色数量
-                    	FROM game_ads.ads_role_combat_num_ranking
-                    	GROUP BY super_game_id, source_system, server_id , boss_server_id
+                        SELECT
+                            -- 超父-原始区服维度
+                            source_system as b_source_system,
+                            super_game_id as b_super_game_id,
+                            server_id as b_server_id,
+                            boss_server_id as b_boss_server_id,
+                            COUNT(DISTINCT role_id) as role_num -- 角色数量
+                        FROM game_ads.ads_role_combat_num_ranking
+                        GROUP BY super_game_id, source_system, server_id , boss_server_id
                     ) b on a.source_system = b.b_source_system AND a.server_id = b.b_server_id AND a.super_game_id = b.b_super_game_id AND a.boss_server_id = b.b_boss_server_id
                     LEFT JOIN (
-                    	SELECT
-                    		-- 超父-原始区服维度
-                    		a.source_system as c_source_system,
-                    		a.super_game_id as c_super_game_id,
-                    		a.server_id as c_server_id,
-                    		b.boss_server_id as c_boss_server_id,
-                    		COUNT(a.association_user_id) as new_user_count -- 新用户人数
-                    	FROM (
-                    		SELECT
-                    			a.source_system ,
-                    			b.id,
-                    			a.game_id ,
-                    			a.server_id,
-                    			a.role_id ,
-                    			a.role_name ,
-                    			b.association_user_id ,
-                    			a.create_time ,
-                    			IFNULL(c.super_game_id , a.game_id) as super_game_id,
-                    			ROW_NUMBER()over(partition by b.association_user_id , a.source_system order by a.create_time asc, a.user_id asc) as num
-                    		FROM dm_game_order.t_game_user_role a
-                    		LEFT JOIN dm_game_order.t_game_user b on a.source_system = b.source_system AND a.user_id = b.id
-                    		LEFT JOIN dm_game_order.t_game c on a.source_system = c.source_system AND a.game_id = c.id
-                    	) a
-                    	LEFT JOIN (
-                    		SELECT
-                    			source_system,
-                    			server_id,
-                    			boss_server_id,
-                    			super_game_id
-                    		FROM game_ads.ads_role_combat_num_ranking
-                    		GROUP BY source_system, super_game_id, server_id, boss_server_id
-                    	) b on a.source_system = b.source_system AND a.server_id = b.server_id AND a.super_game_id = b.super_game_id
-                    	WHERE num = 1
-                    	GROUP BY a.super_game_id, a.server_id, b.boss_server_id, a.source_system
+                        SELECT
+                            -- 超父-原始区服维度
+                            a.source_system as c_source_system,
+                            a.super_game_id as c_super_game_id,
+                            a.server_id as c_server_id,
+                            b.boss_server_id as c_boss_server_id,
+                            COUNT(a.association_user_id) as new_user_count -- 新用户人数
+                        FROM (
+                            SELECT
+                                a.source_system ,
+                                b.id,
+                                a.game_id ,
+                                a.server_id,
+                                a.role_id ,
+                                a.role_name ,
+                                b.association_user_id ,
+                                a.create_time ,
+                                IFNULL(c.super_game_id , a.game_id) as super_game_id,
+                                ROW_NUMBER()over(partition by b.association_user_id , a.source_system order by a.create_time asc, a.user_id asc) as num
+                            FROM dm_game_order.t_game_user_role a
+                            LEFT JOIN dm_game_order.t_game_user b on a.source_system = b.source_system AND a.user_id = b.id
+                            LEFT JOIN dm_game_order.t_game c on a.source_system = c.source_system AND a.game_id = c.id
+                        ) a
+                        LEFT JOIN (
+                            SELECT
+                                source_system,
+                                server_id,
+                                boss_server_id,
+                                super_game_id
+                            FROM game_ads.ads_role_combat_num_ranking
+                            GROUP BY source_system, super_game_id, server_id, boss_server_id
+                        ) b on a.source_system = b.source_system AND a.server_id = b.server_id AND a.super_game_id = b.super_game_id
+                        WHERE num = 1
+                        GROUP BY a.super_game_id, a.server_id, b.boss_server_id, a.source_system
                     ) c on a.source_system = c.c_source_system AND a.super_game_id = c.c_super_game_id AND a.server_id = c.c_server_id AND a.boss_server_id = c.c_boss_server_id
                     LEFT JOIN (
-                    	SELECT
-                    		-- 超父-原始区服维度
-                    		source_system as d_source_system,
-                    		super_game_id as d_super_game_id,
-                    		server_id as d_server_id,
-                    		boss_server_id as d_boss_server_id,
-                    		COUNT(DISTINCT user_id) as create_role_count -- 创角人数
-                    	FROM game_ads.ads_role_combat_num_ranking
-                    	GROUP BY super_game_id, source_system, server_id , boss_server_id
+                        SELECT
+                            -- 超父-原始区服维度
+                            source_system as d_source_system,
+                            super_game_id as d_super_game_id,
+                            server_id as d_server_id,
+                            boss_server_id as d_boss_server_id,
+                            COUNT(DISTINCT user_id) as create_role_count -- 创角人数
+                        FROM game_ads.ads_role_combat_num_ranking
+                        GROUP BY super_game_id, source_system, server_id , boss_server_id
                     ) d on a.source_system = d.d_source_system AND a.server_id = d.d_server_id AND a.super_game_id = d.d_super_game_id AND a.boss_server_id = d.d_boss_server_id
                     LEFT JOIN (
-                    	SELECT
-                    		-- 超父-原始区服维度
-                    		a.source_system as e_source_system,
-                    		a.server_id as e_server_id,
-                    		c.super_game_id as e_super_game_id,
-                    		d.boss_server_id as e_boss_server_id,
-                    		count(DISTINCT IF(Date(NOW()) = day,user_id,NULL)) as ba1_num, -- 今日充值人数
-                    		count(DISTINCT IF(date_add(Date(NOW()),-1)=day,user_id,NULL)) as ba2_num, -- 昨日充值人数
-                    		count(DISTINCT IF(date_add(Date(NOW()),-2)=day,user_id,NULL)) as ba3_num, -- 前天充值人数
-                    		count(DISTINCT user_id) as total_num -- 总充值人数
-                    	FROM dm_game_order.t_game_server a
-                    	LEFT JOIN game_dw.dw_order_day_amount b
-                    	on a.source_system = b.source_system and a.server_id =b.server_id and a.game_id =b.game_id
-                    	LEFT JOIN (
-                    		SELECT
-                    			source_system ,
-                    			id,
-                    			IFNULL(parent_id, id) as parent_id,
-                    			IFNULL(super_game_id, id) as super_game_id
-                    		FROM dm_game_order.t_game
-                    	) c on a.source_system = c.source_system AND a.game_id = c.id
-                    	LEFT JOIN (
-                    		SELECT
-                    			source_system,
-                    			server_id,
-                    			boss_server_id,
-                    			super_game_id
-                    		FROM game_ads.ads_role_combat_num_ranking
-                    		GROUP BY source_system, super_game_id, server_id, boss_server_id
-                    	) d on a.source_system = d.source_system AND a.server_id = d.server_id AND c.super_game_id = d.super_game_id
-                    	group by a.source_system ,a.server_id ,d.boss_server_id, c.super_game_id
+                        SELECT
+                            -- 超父-原始区服维度
+                            a.source_system as e_source_system,
+                            a.server_id as e_server_id,
+                            c.super_game_id as e_super_game_id,
+                            d.boss_server_id as e_boss_server_id,
+                            count(DISTINCT IF(Date(NOW()) = day,user_id,NULL)) as ba1_num, -- 今日充值人数
+                            count(DISTINCT IF(date_add(Date(NOW()),-1)=day,user_id,NULL)) as ba2_num, -- 昨日充值人数
+                            count(DISTINCT IF(date_add(Date(NOW()),-2)=day,user_id,NULL)) as ba3_num, -- 前天充值人数
+                            count(DISTINCT user_id) as total_num -- 总充值人数
+                        FROM dm_game_order.t_game_server a
+                        LEFT JOIN game_dw.dw_order_day_amount b
+                        on a.source_system = b.source_system and a.server_id =b.server_id and a.game_id =b.game_id
+                        LEFT JOIN (
+                            SELECT
+                                source_system ,
+                                id,
+                                IFNULL(parent_id, id) as parent_id,
+                                IFNULL(super_game_id, id) as super_game_id
+                            FROM dm_game_order.t_game
+                        ) c on a.source_system = c.source_system AND a.game_id = c.id
+                        LEFT JOIN (
+                            SELECT
+                                source_system,
+                                server_id,
+                                boss_server_id,
+                                super_game_id
+                            FROM game_ads.ads_role_combat_num_ranking
+                            GROUP BY source_system, super_game_id, server_id, boss_server_id
+                        ) d on a.source_system = d.source_system AND a.server_id = d.server_id AND c.super_game_id = d.super_game_id
+                        group by a.source_system ,a.server_id ,d.boss_server_id, c.super_game_id
                     ) e on a.source_system = e.e_source_system AND a.server_id = e.e_server_id AND a.super_game_id = e.e_super_game_id AND a.boss_server_id = e.e_boss_server_id
                     LEFT JOIN (
-                    	select
-                    		-- 超父-原始区服维度
-                    		a.source_system as f_source_system,
-                    		a.server_id as f_server_id,
-                    		d.boss_server_id as f_boss_server_id,
-                    		c.super_game_id as f_super_game_id,
-                    		count(distinct IF(Date(NOW()) = dt,user_id,NULL)) as ba1_active_num, -- 今日活跃人数
-                    		count(distinct IF(date_add(Date(NOW()),-1)=dt,user_id,NULL)) as ba2_active_num, -- 昨日活跃人数
-                    		count(distinct IF(date_add(Date(NOW()),-2)=dt,user_id,NULL)) as ba3_active_num -- 前日活跃人数
-                    	from dm_game_order.t_game_server a
-                    	left join game_dw.dw_active_log b on a.source_system = b.source_system and a.server_id = b.server_id and a.game_id = b.game_id
-                    	LEFT JOIN (
-                    		SELECT
-                    			source_system ,
-                    			id,
-                    			IFNULL(parent_id, id) as parent_id,
-                    			IFNULL(super_game_id, id) as super_game_id
-                    		FROM dm_game_order.t_game
-                    	) c on a.source_system = c.source_system AND a.game_id = c.id
-                    	LEFT JOIN (
-                    		SELECT
-                    			source_system,
-                    			server_id,
-                    			boss_server_id,
-                    			super_game_id
-                    		FROM game_ads.ads_role_combat_num_ranking
-                    		GROUP BY source_system, super_game_id, server_id, boss_server_id
-                    	) d on a.source_system = d.source_system AND a.server_id = d.server_id AND c.super_game_id = d.super_game_id
-                    	group by a.source_system ,a.server_id ,d.boss_server_id, c.super_game_id
+                        select
+                            -- 超父-原始区服维度
+                            a.source_system as f_source_system,
+                            a.server_id as f_server_id,
+                            d.boss_server_id as f_boss_server_id,
+                            c.super_game_id as f_super_game_id,
+                            count(distinct IF(Date(NOW()) = dt,user_id,NULL)) as ba1_active_num, -- 今日活跃人数
+                            count(distinct IF(date_add(Date(NOW()),-1)=dt,user_id,NULL)) as ba2_active_num, -- 昨日活跃人数
+                            count(distinct IF(date_add(Date(NOW()),-2)=dt,user_id,NULL)) as ba3_active_num -- 前日活跃人数
+                        from dm_game_order.t_game_server a
+                        left join game_dw.dw_active_log b on a.source_system = b.source_system and a.server_id = b.server_id and a.game_id = b.game_id
+                        LEFT JOIN (
+                            SELECT
+                                source_system ,
+                                id,
+                                IFNULL(parent_id, id) as parent_id,
+                                IFNULL(super_game_id, id) as super_game_id
+                            FROM dm_game_order.t_game
+                        ) c on a.source_system = c.source_system AND a.game_id = c.id
+                        LEFT JOIN (
+                            SELECT
+                                source_system,
+                                server_id,
+                                boss_server_id,
+                                super_game_id
+                            FROM game_ads.ads_role_combat_num_ranking
+                            GROUP BY source_system, super_game_id, server_id, boss_server_id
+                        ) d on a.source_system = d.source_system AND a.server_id = d.server_id AND c.super_game_id = d.super_game_id
+                        group by a.source_system ,a.server_id ,d.boss_server_id, c.super_game_id
                     ) f on a.source_system = f.f_source_system AND a.server_id = f.f_server_id AND a.super_game_id = f.f_super_game_id AND a.boss_server_id = f.f_boss_server_id
+                    LEFT JOIN (
+                        SELECT
+                            source_system as h_source_system,
+                            game_id as h_game_id,
+                            server_id as h_server_id,
+                            is_merge -- 是否参与过合服
+                        FROM dm_game_order.t_game_server_merge
+                    ) h on a.source_system = h.h_source_system AND a.boss_server_id = h.h_server_id AND a.super_game_id = h.h_game_id
                 """ + cri+
                 """
                 ) a