فهرست منبع

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

bilingfeng 1 سال پیش
والد
کامیت
0642a52181

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

@@ -1,5 +1,6 @@
 package com.zanxiang.game.data.serve.controller;
 
+import com.zanxiang.erp.security.annotation.PreAuthorize;
 import com.zanxiang.game.data.serve.pojo.dto.RoleCombatRankingDTO;
 import com.zanxiang.game.data.serve.pojo.dto.RoleRechargeRankingDTO;
 import com.zanxiang.game.data.serve.service.IRoleManageService;
@@ -31,14 +32,14 @@ public class RoleManageController {
     private IRoleManageService roleManageService;
 
     @ApiOperation(value = "角色充值排行榜")
-    //@PreAuthorize(permissionKey = "roleManage:recharge:role")
+    @PreAuthorize(permissionKey = "roleManage:recharge:role")
     @PostMapping("/rechargeRanking")
     public ResultVO<Page<Map>> getRoleRechargeRanking(@RequestBody RoleRechargeRankingDTO dto) {
         return ResultVO.ok(roleManageService.getRoleRechargeRanking(dto));
     }
 
     @ApiOperation(value = "角色战力排行榜")
-    //@PreAuthorize(permissionKey = "roleManage:combat:role")
+    @PreAuthorize(permissionKey = "roleManage:combat:role")
     @PostMapping("/combatRanking")
     public ResultVO<Page<Map>> getRoleCombatRanking(@RequestBody RoleCombatRankingDTO dto) {
         return ResultVO.ok(roleManageService.getRoleCombatRanking(dto));

+ 825 - 62
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/RoleManageServiceImpl.java

@@ -19,6 +19,7 @@ import org.nutz.dao.sql.Sql;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -60,6 +61,10 @@ public class RoleManageServiceImpl implements IRoleManageService {
         if (StringUtils.isNotBlank(dto.getRoleName())) {
             criA.where().andLike("role_name", dto.getRoleName());
         }
+        if (dto.getServerIds() != null) {
+            //区服列表查询
+            criA.where().andInList("server_id", dto.getServerIds());
+        }
         if (dto.getCreateRoleBeginDate() != null && dto.getCreateRoleEndDate() != null) {
             //角色创建时间
             criA.where().andBetween("role_create_time", dto.getCreateRoleBeginDate(), dto.getCreateRoleEndDate());
@@ -136,30 +141,39 @@ public class RoleManageServiceImpl implements IRoleManageService {
      */
     @Override
     public Page<Map> getRoleCombatRanking(RoleCombatRankingDTO dto) {
-        //查询条件
-        Criteria cri = Cnd.cri();
+
+        //是否查询合服数据(默认查询合服数据)
+        Boolean isQueryMerge = true;
+        //是否查询父游戏数据(根据是否传递子游戏ID判断,默认查询父游戏ID)
+        Boolean isQueryParentGame = true;
+        //判断查询的条件
         if (dto.getGameId() != null) {
-            //父游戏ID
-            cri.where().andEquals("parent_game_id", dto.getGameId());
-        }
-        if (dto.getBeginDate() != null && dto.getEndDate() != null) {
-            //拼接区服开服时间
+            //子游戏ID
+            isQueryParentGame = false;
         }
         if (dto.getServerIds() != null) {
-            cri.where().andInList("server_id", dto.getServerIds());
+            isQueryMerge = false;
         }
-        if (dto.getRankingNum() != null) {
-            //排名的个数
-            cri.where().andEquals("rank_num", dto.getRankingNum());
+        //查询区服相关数据
+        if (isQueryMerge) {
+            //查询合服
+            if (isQueryParentGame) {
+                //查询父游戏
+                return getMergeParentData(dto);
+            } else {
+                //查询子游戏
+                return getMergeSonData(dto);
+            }
+        } else {
+            //查询原始服
+            if (isQueryParentGame) {
+                //查询父游戏
+                return getOriginParentData(dto);
+            } else {
+                //查询子游戏
+                return getOriginSonData(dto);
+            }
         }
-        Sql serverDataSql = Sqls.create(getRoleCombatRankServerDataSql());
-        serverDataSql.setCallback(Sqls.callback.maps());
-        dao.execute(serverDataSql);
-        //执行结果
-        serverDataSql.getList(HashMap.class);
-
-
-        return null;
     }
 
     /**
@@ -193,6 +207,394 @@ public class RoleManageServiceImpl implements IRoleManageService {
         return dataMap;
     }
 
+    /**
+     * 合服-父游戏
+     * @param dto RoleCombatRankingDTO
+     * @return Page<Map>
+     */
+    private Page<Map> getMergeParentData(RoleCombatRankingDTO dto) {
+        //查询条件
+        Criteria cri = Cnd.cri();
+        if (dto.getParentGameId() != null) {
+            //父游戏ID
+            cri.where().andEquals("parent_game_id", dto.getParentGameId());
+        }
+        if (dto.getBeginDate() != null && dto.getEndDate() != null) {
+            //合服开服时间
+            cri.where().andBetween("DATE(merge_time)", dto.getBeginDate(), dto.getEndDate());
+        }
+        if (dto.getServerIds() != null) {
+            //合服区服列表
+            cri.where().andInList("boss_server_id", dto.getServerIds());
+        }
+        if (StringUtils.isNotBlank(dto.getSourceSystem())) {
+            cri.where().andEquals("source_system", dto.getSourceSystem());
+        }
+        //分页
+        Pager pager = dao.createPager(dto.getPageNum(), dto.getPageSize());
+        //拼接分组条件
+        cri.getGroupBy().groupBy("source_system" , "boss_server_id" , "parent_game_id");
+        Sql sql = Sqls.create(getRoleCombatRankServerDataSqlD() + cri);
+        sql.setCallback(Sqls.callback.maps());
+        sql.setPager(pager);
+        dao.execute(sql);
+
+        //获取角色信息
+        //查询条件
+        Criteria criRole = Cnd.cri();
+        if (dto.getParentGameId() != null) {
+            //父游戏ID
+            criRole.where().andEquals("parent_game_id", dto.getParentGameId());
+        }
+        if (dto.getBeginDate() != null && dto.getEndDate() != null) {
+            //开服时间
+            criRole.where().andBetween("DATE(merge_time)", dto.getBeginDate(), dto.getEndDate());
+        }
+        if (dto.getServerIds() != null) {
+            //合服区服列表
+            criRole.where().andInList("boss_server_id", dto.getServerIds());
+        }
+        if (StringUtils.isNotBlank(dto.getSourceSystem())) {
+            criRole.where().andEquals("source_system", dto.getSourceSystem());
+        }
+        if (dto.getRankingNum() != null) {
+            //排名的个数
+            criRole.where().andLTE("rank_num", dto.getRankingNum());
+        } else {
+            //排名的个数
+            criRole.where().andLTE("rank_num", 5);
+        }
+        Sql sqlRole = Sqls.create(getRoleCombatRankRoleDataSqlD() + criRole);
+        sqlRole.setCallback(Sqls.callback.maps());
+        dao.execute(sqlRole);
+        //得到数据Map   (合服ID-父游戏ID)- (角色信息)
+        Map<String, List<Map<String, Object>>> roleDataMap = new HashMap<>();
+        //得到结果
+        List<Map> listRole = sqlRole.getList(Map.class).stream().map(map -> {
+            StringBuilder sb = new StringBuilder(StringUtils.EMPTY);
+            sb.append((String)map.get("boss_server_id"))
+                    .append("-")
+                    .append((String)map.get("parent_game_id"));
+            if (roleDataMap.get(sb.toString()) != null) {
+                //含有改主键 添加数据
+                roleDataMap.get(sb.toString()).add(map);
+            } else {
+                //不含有该主键
+                List<Map<String, Object>> tempList = new ArrayList<>();
+                tempList.add(map);
+                roleDataMap.put(String.valueOf(sb), tempList);
+            }
+            return map;
+        }).collect(Collectors.toList());
+
+        List<Map> list = sql.getList(Map.class).stream().map(map -> {
+            StringBuilder sb = new StringBuilder(StringUtils.EMPTY);
+            sb.append((String)map.get("boss_server_id"))
+                    .append("-")
+                    .append((String)map.get("parent_game_id"));
+
+            if (roleDataMap.get(sb.toString()) != null) {
+                //将排名信息添加
+                map.put("role_rank_date", roleDataMap.get(sb.toString()));
+            }
+            return map;
+
+        }).collect(Collectors.toList());
+
+        return new Page<>(list, pager);
+    }
+
+    /**
+     * 合服-子游戏
+     * @param dto RoleCombatRankingDTO
+     * @return Page<Map>
+     */
+    private Page<Map> getMergeSonData(RoleCombatRankingDTO dto) {
+        //查询条件
+        Criteria cri = Cnd.cri();
+        if (dto.getGameId() != null) {
+            //子游戏ID
+            cri.where().andEquals("game_id", dto.getGameId());
+        }
+        if (dto.getBeginDate() != null && dto.getEndDate() != null) {
+            //合服开服时间
+            cri.where().andBetween("DATE(merge_time)", dto.getBeginDate(), dto.getEndDate());
+        }
+        if (dto.getServerIds() != null) {
+            //合服区服列表
+            cri.where().andInList("boss_server_id", dto.getServerIds());
+        }
+        if (StringUtils.isNotBlank(dto.getSourceSystem())) {
+            cri.where().andEquals("source_system", dto.getSourceSystem());
+        }
+        //分页
+        Pager pager = dao.createPager(dto.getPageNum(), dto.getPageSize());
+        //拼接分组条件
+        cri.getGroupBy().groupBy("source_system" , "boss_server_id" , "game_id");
+        Sql sql = Sqls.create(getRoleCombatRankServerDataSqlC() + cri);
+        sql.setCallback(Sqls.callback.maps());
+        sql.setPager(pager);
+        dao.execute(sql);
+
+        //获取角色信息
+        //查询条件
+        Criteria criRole = Cnd.cri();
+        if (dto.getGameId() != null) {
+            //子游戏ID
+            criRole.where().andEquals("game_id", dto.getGameId());
+        }
+        if (dto.getBeginDate() != null && dto.getEndDate() != null) {
+            //合服开服时间
+            criRole.where().andBetween("DATE(merge_time)", dto.getBeginDate(), dto.getEndDate());
+        }
+        if (dto.getServerIds() != null) {
+            //合服区服列表
+            criRole.where().andInList("boss_server_id", dto.getServerIds());
+        }
+        if (StringUtils.isNotBlank(dto.getSourceSystem())) {
+            criRole.where().andEquals("source_system", dto.getSourceSystem());
+        }
+        if (dto.getRankingNum() != null) {
+            //排名的个数
+            criRole.where().andLTE("rank_num", dto.getRankingNum());
+        } else {
+            //排名的个数
+            criRole.where().andLTE("rank_num", 5);
+        }
+        Sql sqlRole = Sqls.create(getRoleCombatRankRoleDataSqlC() + criRole);
+        sqlRole.setCallback(Sqls.callback.maps());
+        dao.execute(sqlRole);
+        //得到数据Map   (合服ID-子游戏ID)- (角色信息)
+        Map<String, List<Map<String, Object>>> roleDataMap = new HashMap<>();
+        //得到结果
+        List<Map> listRole = sqlRole.getList(Map.class).stream().map(map -> {
+            StringBuilder sb = new StringBuilder(StringUtils.EMPTY);
+            sb.append((String)map.get("boss_server_id"))
+                    .append("-")
+                    .append(map.get("game_id"));
+            if (roleDataMap.get(sb.toString()) != null) {
+                //含有改主键 添加数据
+                roleDataMap.get(sb.toString()).add(map);
+            } else {
+                //不含有该主键
+                List<Map<String, Object>> tempList = new ArrayList<>();
+                tempList.add(map);
+                roleDataMap.put(String.valueOf(sb), tempList);
+            }
+            return map;
+        }).collect(Collectors.toList());
+
+        List<Map> list = sql.getList(Map.class).stream().map(map -> {
+            StringBuilder sb = new StringBuilder(StringUtils.EMPTY);
+            sb.append((String)map.get("boss_server_id"))
+                    .append("-")
+                    .append(map.get("game_id"));
+
+            if (roleDataMap.get(sb.toString()) != null) {
+                //将排名信息添加
+                map.put("role_rank_date", roleDataMap.get(sb.toString()));
+            }
+            return map;
+
+        }).collect(Collectors.toList());
+
+        return new Page<>(list, pager);
+    }
+
+    /**
+     * 原始服-父游戏
+     * @param dto
+     * @return
+     */
+    private Page<Map> getOriginParentData(RoleCombatRankingDTO dto) {
+        //查询条件
+        Criteria cri = Cnd.cri();
+        if (dto.getParentGameId() != null) {
+            //父游戏ID
+            cri.where().andEquals("parent_game_id", dto.getParentGameId());
+        }
+        if (dto.getBeginDate() != null && dto.getEndDate() != null) {
+            //原始服开服时间
+            cri.where().andBetween("dt", dto.getBeginDate(), dto.getEndDate());
+        }
+        if (dto.getServerIds() != null) {
+            //原始区服列表
+            cri.where().andInList("server_id", dto.getServerIds());
+        }
+        if (StringUtils.isNotBlank(dto.getSourceSystem())) {
+            cri.where().andEquals("source_system", dto.getSourceSystem());
+        }
+        //分页
+        Pager pager = dao.createPager(dto.getPageNum(), dto.getPageSize());
+        //拼接分组条件
+        cri.getGroupBy().groupBy("source_system" , "server_id" , "parent_game_id");
+        Sql sql = Sqls.create(getRoleCombatRankServerDataSqlB() + cri);
+        sql.setCallback(Sqls.callback.maps());
+        sql.setPager(pager);
+        dao.execute(sql);
+
+        //获取角色信息
+        //查询条件
+        Criteria criRole = Cnd.cri();
+        if (dto.getParentGameId() != null) {
+            //父游戏ID
+            criRole.where().andEquals("parent_game_id", dto.getParentGameId());
+        }
+        if (dto.getBeginDate() != null && dto.getEndDate() != null) {
+            //原始服开服时间
+            criRole.where().andBetween("dt", dto.getBeginDate(), dto.getEndDate());
+        }
+        if (dto.getServerIds() != null) {
+            //原始服区服列表
+            criRole.where().andInList("server_id", dto.getServerIds());
+        }
+        if (StringUtils.isNotBlank(dto.getSourceSystem())) {
+            criRole.where().andEquals("source_system", dto.getSourceSystem());
+        }
+        if (dto.getRankingNum() != null) {
+            //排名的个数
+            criRole.where().andLTE("rank_num", dto.getRankingNum());
+        } else {
+            //排名的个数
+            criRole.where().andLTE("rank_num", 5);
+        }
+        Sql sqlRole = Sqls.create(getRoleCombatRankRoleDataSqlB() + criRole);
+        sqlRole.setCallback(Sqls.callback.maps());
+        dao.execute(sqlRole);
+        //得到数据Map   (原始服ID-父游戏ID)- (角色信息)
+        Map<String, List<Map<String, Object>>> roleDataMap = new HashMap<>();
+        //得到结果
+        List<Map> listRole = sqlRole.getList(Map.class).stream().map(map -> {
+            StringBuilder sb = new StringBuilder(StringUtils.EMPTY);
+            sb.append(map.get("server_id"))
+                    .append("-")
+                    .append((String)map.get("parent_game_id"));
+            if (roleDataMap.get(sb.toString()) != null) {
+                //含有改主键 添加数据
+                roleDataMap.get(sb.toString()).add(map);
+            } else {
+                //不含有该主键
+                List<Map<String, Object>> tempList = new ArrayList<>();
+                tempList.add(map);
+                roleDataMap.put(String.valueOf(sb), tempList);
+            }
+            return map;
+        }).collect(Collectors.toList());
+
+        List<Map> list = sql.getList(Map.class).stream().map(map -> {
+            StringBuilder sb = new StringBuilder(StringUtils.EMPTY);
+            sb.append(map.get("server_id"))
+                    .append("-")
+                    .append((String)map.get("parent_game_id"));
+
+            if (roleDataMap.get(sb.toString()) != null) {
+                //将排名信息添加
+                map.put("role_rank_date", roleDataMap.get(sb.toString()));
+            }
+            return map;
+
+        }).collect(Collectors.toList());
+
+        return new Page<>(list, pager);
+    }
+
+    /**
+     * 原始服-子游戏
+     * @param dto
+     * @return
+     */
+    private Page<Map> getOriginSonData(RoleCombatRankingDTO dto) {
+        //查询条件
+        Criteria cri = Cnd.cri();
+        if (dto.getGameId() != null) {
+            //子游戏ID
+            cri.where().andEquals("game_id", dto.getGameId());
+        }
+        if (dto.getBeginDate() != null && dto.getEndDate() != null) {
+            //原始服开服时间
+            cri.where().andBetween("dt", dto.getBeginDate(), dto.getEndDate());
+        }
+        if (dto.getServerIds() != null) {
+            //原始区服列表
+            cri.where().andInList("server_id", dto.getServerIds());
+        }
+        if (StringUtils.isNotBlank(dto.getSourceSystem())) {
+            cri.where().andEquals("source_system", dto.getSourceSystem());
+        }
+        //分页
+        Pager pager = dao.createPager(dto.getPageNum(), dto.getPageSize());
+        //拼接分组条件
+        cri.getGroupBy().groupBy("source_system" , "server_id" , "game_id");
+        Sql sql = Sqls.create(getRoleCombatRankServerDataSqlA() + cri);
+        sql.setCallback(Sqls.callback.maps());
+        sql.setPager(pager);
+        dao.execute(sql);
+
+        //获取角色信息
+        //查询条件
+        Criteria criRole = Cnd.cri();
+        if (dto.getGameId() != null) {
+            //子游戏ID
+            criRole.where().andEquals("game_id", dto.getGameId());
+        }
+        if (dto.getBeginDate() != null && dto.getEndDate() != null) {
+            //原始服开服时间
+            criRole.where().andBetween("dt", dto.getBeginDate(), dto.getEndDate());
+        }
+        if (dto.getServerIds() != null) {
+            //原始服区服列表
+            criRole.where().andInList("server_id", dto.getServerIds());
+        }
+        if (StringUtils.isNotBlank(dto.getSourceSystem())) {
+            criRole.where().andEquals("source_system", dto.getSourceSystem());
+        }
+        if (dto.getRankingNum() != null) {
+            //排名的个数
+            criRole.where().andLTE("rank_num", dto.getRankingNum());
+        } else {
+            //排名的个数
+            criRole.where().andLTE("rank_num", 5);
+        }
+        Sql sqlRole = Sqls.create(getRoleCombatRankRoleDataSqlA() + criRole);
+        sqlRole.setCallback(Sqls.callback.maps());
+        dao.execute(sqlRole);
+        //得到数据Map   (原始服ID-子游戏ID)- (角色信息)
+        Map<String, List<Map<String, Object>>> roleDataMap = new HashMap<>();
+        //得到结果
+        List<Map> listRole = sqlRole.getList(Map.class).stream().map(map -> {
+            StringBuilder sb = new StringBuilder(StringUtils.EMPTY);
+            sb.append(map.get("server_id"))
+                    .append("-")
+                    .append(map.get("game_id"));
+            if (roleDataMap.get(sb.toString()) != null) {
+                //含有改主键 添加数据
+                roleDataMap.get(sb.toString()).add(map);
+            } else {
+                //不含有该主键
+                List<Map<String, Object>> tempList = new ArrayList<>();
+                tempList.add(map);
+                roleDataMap.put(String.valueOf(sb), tempList);
+            }
+            return map;
+        }).collect(Collectors.toList());
+
+        List<Map> list = sql.getList(Map.class).stream().map(map -> {
+            StringBuilder sb = new StringBuilder(StringUtils.EMPTY);
+            sb.append(map.get("server_id"))
+                    .append("-")
+                    .append(map.get("game_id"));
+
+            if (roleDataMap.get(sb.toString()) != null) {
+                //将排名信息添加
+                map.put("role_rank_date", roleDataMap.get(sb.toString()));
+            }
+            return map;
+
+        }).collect(Collectors.toList());
+
+        return new Page<>(list, pager);
+    }
+
     /**
      * 查询角色充值排行榜sql
      * @param criA 主表查询条件
@@ -772,7 +1174,7 @@ public class RoleManageServiceImpl implements IRoleManageService {
                             j.pitcher_id as put_user_id,
                             l.active_time as user_active_time,
                             m.user_last_recharge_game_id as user_last_recharge_game_id,
-                            n.game_name as user_last_recharge_game_name,\s
+                            n.game_name as user_last_recharge_game_name,
                             m.pay_time as user_pay_time -- 玩家最近充值时间
                         FROM
                         (
@@ -897,53 +1299,414 @@ public class RoleManageServiceImpl implements IRoleManageService {
                 """ + criA;
     }
 
-    private String getRoleCombatRankServerDataSql() {
+    /**
+     * 原始服-子游戏维度(区服相关信息)
+     * @return String
+     */
+    private String getRoleCombatRankServerDataSqlA() {
         return """
-                SUM(server_combat_num) as server_combat_num, -- 区服战力
-                SUM(new_user_count) as new_user_count, -- 新用户人数
-                SUM(create_role_count) as create_role_count, -- 创角人数
-                SUM(role_count) as role_count, -- 角色数量
-                SUM(total_num) as total_num, -- 总付费人数
-                SUM(total_amount) as total_amount, -- 总付费金额
-                SUM(ba1) as ba1, -- 今日付费金额
-                SUM(ba1_num) as ba1_num, -- 今日付费人数
-                SUM(ba1_count) as ba1_count, -- 今日付费次数
-                SUM(ba1_active_num) as ba1_active_num, -- 今日活跃人数
-                SUM(ba2) as ba2, -- 昨日付费金额
-                SUM(ba2_num) as ba2_num, -- 昨日付费人数
-                SUM(ba2_count) as ba2_count, -- 昨日付费次数
-                SUM(ba2_active_num) as ba2_active_num, -- 昨日活跃人数
-                SUM(ba3) as ba3, -- 前天付费金额
-                SUM(ba3_num) as ba3_num, -- 前天付费人数
-                SUM(ba3_count) as ba3_count, -- 前天付费次数
-                SUM(ba3_active_num) as ba3_active_num -- 前天活跃人数
+                SELECT
+                	source_system,
+                	server_id, -- 区服ID
+                	MAX(`date`) as dt, -- 开服日期
+                	MAX(start_day) as start_day, -- 开服天数
+                	game_id, -- 子游戏ID
+                	MAX(game_name) as game_name, -- 子游戏名
+                	MAX(parent_game_id) as parent_game_id,
+                	MAX(parent_game_name) as parent_game_name,
+                	MAX(server_name) as server_name, -- 区服名
+                	MAX(boss_server_id) as boss_server_id, -- 合服ID
+                	MAX(boss_server_name) as boss_server_name, -- 合服名
+                	MAX(server_combat_num) as server_combat_num, -- 区服战力
+                	MAX(new_user_count) as new_user_count, -- 新用户人数
+                	MAX(create_role_count) as create_role_count, -- 创角人数
+                	MAX(role_count) as role_count, -- 角色数量
+                	MAX(total_num) as total_num, -- 总付费人数
+                	MAX(total_amount) as total_amount, -- 总付费金额
+                	MAX(ba1) as ba1, -- 今日付费金额
+                	MAX(ba1_num) as ba1_num, -- 今日付费人数
+                	MAX(ba1_count) as ba1_count, -- 今日付费次数
+                	MAX(ba1_active_num) as ba1_active_num, -- 今日活跃人数
+                	MAX(ba2) as ba2, -- 昨日付费金额
+                	MAX(ba2_num) as ba2_num, -- 昨日付费人数
+                	MAX(ba2_count) as ba2_count, -- 昨日付费次数
+                	MAX(ba2_active_num) as ba2_active_num, -- 昨日活跃人数
+                	MAX(ba3) as ba3, -- 前天付费金额
+                	MAX(ba3_num) as ba3_num, -- 前天付费人数
+                	MAX(ba3_count) as ba3_count, -- 前天付费次数
+                	MAX(ba3_active_num) as ba3_active_num -- 前天活跃人数
+                FROM game_ads.ads_role_combat_num_ranking
                 """;
     }
 
-    private String getRoleCombatRankRoleDataSql() {
+    /**
+     * 原始服-父游戏维度(区服相关信息)
+     * @return String
+     */
+    private String getRoleCombatRankServerDataSqlB() {
         return """
-                SUM(parent_game_name) as parent_game_name,
-                SUM(server_name) as server_name, -- 区服名
-                SUM(boss_server_id) as boss_server_id, -- 合服ID
-                SUM(boss_server_name) as boss_server_name, -- 合服名
-                SUM(server_combat_num) as server_combat_num, -- 区服战力
-                SUM(new_user_count) as new_user_count, -- 新用户人数
-                SUM(create_role_count) as create_role_count, -- 创角人数
-                SUM(role_count) as role_count, -- 角色数量
-                SUM(total_num) as total_num, -- 总付费人数
-                SUM(total_amount) as total_amount, -- 总付费金额
-                SUM(ba1) as ba1, -- 今日付费金额
-                SUM(ba1_num) as ba1_num, -- 今日付费人数
-                SUM(ba1_count) as ba1_count, -- 今日付费次数
-                SUM(ba1_active_num) as ba1_active_num, -- 今日活跃人数
-                SUM(ba2) as ba2, -- 昨日付费金额
-                SUM(ba2_num) as ba2_num, -- 昨日付费人数
-                SUM(ba2_count) as ba2_count, -- 昨日付费次数
-                SUM(ba2_active_num) as ba2_active_num, -- 昨日活跃人数
-                SUM(ba3) as ba3, -- 前天付费金额
-                SUM(ba3_num) as ba3_num, -- 前天付费人数
-                SUM(ba3_count) as ba3_count, -- 前天付费次数
-                SUM(ba3_active_num) as ba3_active_num -- 前天活跃人数
+                SELECT
+                	source_system,
+                	server_id, -- 区服ID
+                	parent_game_id, -- 父游戏
+                	MAX(parent_game_name) as parent_game_name, -- 合服名称
+                    MAX(server_name) as server_name, -- 区服名
+                    MAX(dt) as dt, -- 开服日期
+                	MAX(start_day) as start_day, -- 开服天数
+                    MAX(boss_server_id) as boss_server_id, -- 合服ID
+                    MAX(boss_server_name) as boss_server_name, -- 合服名
+                    SUM(server_combat_num) as server_combat_num, -- 区服战力
+                    SUM(new_user_count) as new_user_count, -- 新用户人数
+                    SUM(create_role_count) as create_role_count, -- 创角人数
+                    SUM(role_count) as role_count, -- 角色数量
+                    SUM(total_num) as total_num, -- 总付费人数
+                    SUM(total_amount) as total_amount, -- 总付费金额
+                    SUM(ba1) as ba1, -- 今日付费金额
+                    SUM(ba1_num) as ba1_num, -- 今日付费人数
+                    SUM(ba1_count) as ba1_count, -- 今日付费次数
+                    SUM(ba1_active_num) as ba1_active_num, -- 今日活跃人数
+                    SUM(ba2) as ba2, -- 昨日付费金额
+                    SUM(ba2_num) as ba2_num, -- 昨日付费人数
+                    SUM(ba2_count) as ba2_count, -- 昨日付费次数
+                    SUM(ba2_active_num) as ba2_active_num, -- 昨日活跃人数
+                    SUM(ba3) as ba3, -- 前天付费金额
+                    SUM(ba3_num) as ba3_num, -- 前天付费人数
+                    SUM(ba3_count) as ba3_count, -- 前天付费次数
+                    SUM(ba3_active_num) as ba3_active_num -- 前天活跃人数
+                FROM (
+                	-- 子查询,查询每个子游戏-区服的信息
+                	SELECT
+                		source_system,
+                		server_id, -- 区服ID
+                		MAX(`date`) as dt, -- 开服日期
+                		MAX(start_day) as start_day, -- 开服天数
+                		game_id, -- 子游戏ID
+                		MAX(game_name) as game_name, -- 子游戏名
+                		MAX(parent_game_id) as parent_game_id,
+                		MAX(parent_game_name) as parent_game_name,
+                		MAX(game_name) as game_name,
+                		MAX(server_name) as server_name, -- 区服名
+                		MAX(boss_server_id) as boss_server_id, -- 合服ID
+                		MAX(boss_server_name) as boss_server_name, -- 合服名
+                		MAX(server_combat_num) as server_combat_num, -- 区服战力
+                		MAX(new_user_count) as new_user_count, -- 新用户人数
+                		MAX(create_role_count) as create_role_count, -- 创角人数
+                		MAX(role_count) as role_count, -- 角色数量
+                		MAX(total_num) as total_num, -- 总付费人数
+                		MAX(total_amount) as total_amount, -- 总付费金额
+                		MAX(ba1) as ba1, -- 今日付费金额
+                		MAX(ba1_num) as ba1_num, -- 今日付费人数
+                		MAX(ba1_count) as ba1_count, -- 今日付费次数
+                		MAX(ba1_active_num) as ba1_active_num, -- 今日活跃人数
+                		MAX(ba2) as ba2, -- 昨日付费金额
+                		MAX(ba2_num) as ba2_num, -- 昨日付费人数
+                		MAX(ba2_count) as ba2_count, -- 昨日付费次数
+                		MAX(ba2_active_num) as ba2_active_num, -- 昨日活跃人数
+                		MAX(ba3) as ba3, -- 前天付费金额
+                		MAX(ba3_num) as ba3_num, -- 前天付费人数
+                		MAX(ba3_count) as ba3_count, -- 前天付费次数
+                		MAX(ba3_active_num) as ba3_active_num -- 前天活跃人数
+                	FROM game_ads.ads_role_combat_num_ranking
+                	GROUP BY server_id, source_system , game_id
+                ) a
+                """;
+    }
+
+    /**
+     * 合服-子游戏维度(区服相关信息)
+     * @return String
+     */
+    private String getRoleCombatRankServerDataSqlC() {
+        return """
+                SELECT
+                	source_system,
+                	boss_server_id ,
+                	game_id,
+                	MAX(game_name) as game_name,
+                	MAX(boss_server_name) as boss_server_name,
+                	MAX(merge_time) as merge_time , -- 合服时间
+                	SUM(server_combat_num) as server_combat_num, -- 区服战力
+                    SUM(new_user_count) as new_user_count, -- 新用户人数
+                    SUM(create_role_count) as create_role_count, -- 创角人数
+                    SUM(role_count) as role_count, -- 角色数量
+                    SUM(total_num) as total_num, -- 总付费人数
+                    SUM(total_amount) as total_amount, -- 总付费金额
+                    SUM(ba1) as ba1, -- 今日付费金额
+                    SUM(ba1_num) as ba1_num, -- 今日付费人数
+                    SUM(ba1_count) as ba1_count, -- 今日付费次数
+                    SUM(ba1_active_num) as ba1_active_num, -- 今日活跃人数
+                    SUM(ba2) as ba2, -- 昨日付费金额
+                    SUM(ba2_num) as ba2_num, -- 昨日付费人数
+                    SUM(ba2_count) as ba2_count, -- 昨日付费次数
+                    SUM(ba2_active_num) as ba2_active_num, -- 昨日活跃人数
+                    SUM(ba3) as ba3, -- 前天付费金额
+                    SUM(ba3_num) as ba3_num, -- 前天付费人数
+                    SUM(ba3_count) as ba3_count, -- 前天付费次数
+                    SUM(ba3_active_num) as ba3_active_num -- 前天活跃人数
+                FROM (
+                	-- 子查询,查询每个子游戏-区服维度的信息
+                	SELECT
+                		source_system,
+                		server_id, -- 区服ID
+                		game_id,
+                		MAX(game_name) as game_name,
+                		MAX(server_name) as server_name, -- 区服名
+                		MAX(boss_server_id) as boss_server_id, -- 合服ID
+                		MAX(boss_server_name) as boss_server_name, -- 合服名
+                		MAX(merge_time) as merge_time , -- 合服时间
+                		MAX(server_combat_num) as server_combat_num, -- 区服战力
+                		MAX(new_user_count) as new_user_count, -- 新用户人数
+                		MAX(create_role_count) as create_role_count, -- 创角人数
+                		MAX(role_count) as role_count, -- 角色数量
+                		MAX(total_num) as total_num, -- 总付费人数
+                		MAX(total_amount) as total_amount, -- 总付费金额
+                		MAX(ba1) as ba1, -- 今日付费金额
+                		MAX(ba1_num) as ba1_num, -- 今日付费人数
+                		MAX(ba1_count) as ba1_count, -- 今日付费次数
+                		MAX(ba1_active_num) as ba1_active_num, -- 今日活跃人数
+                		MAX(ba2) as ba2, -- 昨日付费金额
+                		MAX(ba2_num) as ba2_num, -- 昨日付费人数
+                		MAX(ba2_count) as ba2_count, -- 昨日付费次数
+                		MAX(ba2_active_num) as ba2_active_num, -- 昨日活跃人数
+                		MAX(ba3) as ba3, -- 前天付费金额
+                		MAX(ba3_num) as ba3_num, -- 前天付费人数
+                		MAX(ba3_count) as ba3_count, -- 前天付费次数
+                		MAX(ba3_active_num) as ba3_active_num -- 前天活跃人数
+                	FROM game_ads.ads_role_combat_num_ranking
+                	GROUP BY server_id, source_system , game_id
+                ) a
+                """;
+    }
+
+    /**
+     * 合服-父游戏维度(区服相关信息)
+     * @return String
+     */
+    private String getRoleCombatRankServerDataSqlD() {
+        return """
+                SELECT
+                	source_system,
+                	boss_server_id,
+                	parent_game_id,
+                	MAX(parent_game_name) as parent_game_name,
+                	MAX(boss_server_name) as boss_server_name,
+                	MAX(merge_time) as merge_time , -- 合服时间
+                	SUM(server_combat_num) as server_combat_num, -- 区服战力
+                    SUM(new_user_count) as new_user_count, -- 新用户人数
+                    SUM(create_role_count) as create_role_count, -- 创角人数
+                    SUM(role_count) as role_count, -- 角色数量
+                    SUM(total_num) as total_num, -- 总付费人数
+                    SUM(total_amount) as total_amount, -- 总付费金额
+                    SUM(ba1) as ba1, -- 今日付费金额
+                    SUM(ba1_num) as ba1_num, -- 今日付费人数
+                    SUM(ba1_count) as ba1_count, -- 今日付费次数
+                    SUM(ba1_active_num) as ba1_active_num, -- 今日活跃人数
+                    SUM(ba2) as ba2, -- 昨日付费金额
+                    SUM(ba2_num) as ba2_num, -- 昨日付费人数
+                    SUM(ba2_count) as ba2_count, -- 昨日付费次数
+                    SUM(ba2_active_num) as ba2_active_num, -- 昨日活跃人数
+                    SUM(ba3) as ba3, -- 前天付费金额
+                    SUM(ba3_num) as ba3_num, -- 前天付费人数
+                    SUM(ba3_count) as ba3_count, -- 前天付费次数
+                    SUM(ba3_active_num) as ba3_active_num -- 前天活跃人数
+                FROM (
+                	-- 子查询,查询每个父游戏-区服维度的信息
+                	SELECT
+                		source_system,
+                		server_id, -- 区服ID
+                		parent_game_id,
+                		MAX(parent_game_name) as parent_game_name,
+                        MAX(server_name) as server_name, -- 区服名
+                        MAX(boss_server_id) as boss_server_id, -- 合服ID
+                        MAX(boss_server_name) as boss_server_name, -- 合服名
+                        MAX(merge_time) as merge_time , -- 合服时间
+                        SUM(server_combat_num) as server_combat_num, -- 区服战力
+                        SUM(new_user_count) as new_user_count, -- 新用户人数
+                        SUM(create_role_count) as create_role_count, -- 创角人数
+                        SUM(role_count) as role_count, -- 角色数量
+                        SUM(total_num) as total_num, -- 总付费人数
+                        SUM(total_amount) as total_amount, -- 总付费金额
+                        SUM(ba1) as ba1, -- 今日付费金额
+                        SUM(ba1_num) as ba1_num, -- 今日付费人数
+                        SUM(ba1_count) as ba1_count, -- 今日付费次数
+                        SUM(ba1_active_num) as ba1_active_num, -- 今日活跃人数
+                        SUM(ba2) as ba2, -- 昨日付费金额
+                        SUM(ba2_num) as ba2_num, -- 昨日付费人数
+                        SUM(ba2_count) as ba2_count, -- 昨日付费次数
+                        SUM(ba2_active_num) as ba2_active_num, -- 昨日活跃人数
+                        SUM(ba3) as ba3, -- 前天付费金额
+                        SUM(ba3_num) as ba3_num, -- 前天付费人数
+                        SUM(ba3_count) as ba3_count, -- 前天付费次数
+                        SUM(ba3_active_num) as ba3_active_num -- 前天活跃人数
+                	FROM (
+                		-- 子查询,查询每个子游戏-区服维度的信息
+                		SELECT
+                			source_system,
+                			server_id, -- 区服ID
+                			game_id, -- 子游戏ID
+                			MAX(game_name) as game_name, -- 子游戏名
+                			MAX(parent_game_id) as parent_game_id,
+                			MAX(parent_game_name) as parent_game_name,
+                			MAX(game_name) as game_name,
+                			MAX(server_name) as server_name, -- 区服名
+                			MAX(boss_server_id) as boss_server_id, -- 合服ID
+                			MAX(boss_server_name) as boss_server_name, -- 合服名
+                			MAX(merge_time) as merge_time , -- 合服时间
+                			MAX(server_combat_num) as server_combat_num, -- 区服战力
+                			MAX(new_user_count) as new_user_count, -- 新用户人数
+                			MAX(create_role_count) as create_role_count, -- 创角人数
+                			MAX(role_count) as role_count, -- 角色数量
+                			MAX(total_num) as total_num, -- 总付费人数
+                			MAX(total_amount) as total_amount, -- 总付费金额
+                			MAX(ba1) as ba1, -- 今日付费金额
+                			MAX(ba1_num) as ba1_num, -- 今日付费人数
+                			MAX(ba1_count) as ba1_count, -- 今日付费次数
+                			MAX(ba1_active_num) as ba1_active_num, -- 今日活跃人数
+                			MAX(ba2) as ba2, -- 昨日付费金额
+                			MAX(ba2_num) as ba2_num, -- 昨日付费人数
+                			MAX(ba2_count) as ba2_count, -- 昨日付费次数
+                			MAX(ba2_active_num) as ba2_active_num, -- 昨日活跃人数
+                			MAX(ba3) as ba3, -- 前天付费金额
+                			MAX(ba3_num) as ba3_num, -- 前天付费人数
+                			MAX(ba3_count) as ba3_count, -- 前天付费次数
+                			MAX(ba3_active_num) as ba3_active_num -- 前天活跃人数
+                		FROM game_ads.ads_role_combat_num_ranking
+                		GROUP BY server_id, source_system , game_id
+                	) a
+                	GROUP BY server_id, source_system , parent_game_id
+                ) a
+                """;
+    }
+
+    /**
+     * 原始服-子游戏维度(角色排行相关信息)
+     * @return String
+     */
+    private String getRoleCombatRankRoleDataSqlA() {
+        return """
+                SELECT
+                	*
+                FROM (
+                	SELECT
+                		`date` as dt,
+                		source_system ,
+                		server_id ,
+                		server_name ,
+                		boss_server_id ,
+                		boss_server_name ,
+                		merge_time,
+                		game_id,
+                		game_name,
+                		parent_game_id,
+                		parent_game_name,
+                		super_game_id,
+                		super_game_name,
+                		role_id,
+                		role_name,
+                		role_level,
+                		combat_num,
+                		ROW_NUMBER()over(partition by source_system ,server_id ,game_id order by combat_num desc) as rank_num
+                	FROM game_ads.ads_role_combat_num_ranking
+                ) a
+                """;
+    }
+
+    /**
+     * 原始服-父游戏维度(角色排行相关信息)
+     * @return String
+     */
+    private String getRoleCombatRankRoleDataSqlB() {
+        return """
+                SELECT
+                *
+                FROM (
+                	SELECT
+                		`date` as dt,
+                		source_system ,
+                		server_id ,
+                		server_name ,
+                		boss_server_id ,
+                		boss_server_name ,
+                		merge_time,
+                		game_id,
+                		game_name,
+                		parent_game_id,
+                		parent_game_name,
+                		super_game_id,
+                		super_game_name,
+                		role_id,
+                		role_name,
+                		role_level,
+                		combat_num,
+                		ROW_NUMBER()over(partition by source_system ,server_id ,parent_game_id order by combat_num desc) as rank_num
+                	FROM game_ads.ads_role_combat_num_ranking
+                ) a
+                """;
+    }
+
+    /**
+     * 合服-子游戏维度(角色排行相关信息)
+     * @return String
+     */
+    private String getRoleCombatRankRoleDataSqlC() {
+        return """
+                SELECT
+                *
+                FROM (
+                	SELECT
+                		`date` as dt,
+                		source_system ,
+                		server_id ,
+                		server_name ,
+                		boss_server_id ,
+                		boss_server_name ,
+                		merge_time,
+                		game_id,
+                		game_name,
+                		parent_game_id,
+                		parent_game_name,
+                		super_game_id,
+                		super_game_name,
+                		role_id,
+                		role_name,
+                		role_level,
+                		combat_num,
+                		ROW_NUMBER()over(partition by source_system ,boss_server_id ,game_id order by combat_num desc) as rank_num
+                	FROM game_ads.ads_role_combat_num_ranking
+                ) a
+                """;
+    }
+
+    /**
+     * 合服-父游戏维度(角色排行相关信息)
+     * @return String
+     */
+    private String getRoleCombatRankRoleDataSqlD() {
+        return """
+                SELECT
+                 *
+                FROM (
+                 SELECT
+                     `date` as dt,
+                     source_system ,
+                     server_id ,
+                     server_name ,
+                     boss_server_id ,
+                     boss_server_name ,
+                     merge_time,
+                     game_id,
+                     game_name,
+                     parent_game_id,
+                     parent_game_name,
+                     super_game_id,
+                     super_game_name,
+                     role_id,
+                     role_name,
+                     role_level,
+                     combat_num,
+                     ROW_NUMBER()over(partition by source_system ,boss_server_id ,parent_game_id order by combat_num desc) as rank_num
+                 FROM game_ads.ads_role_combat_num_ranking
+                ) a
                 """;
     }