Переглянути джерело

Merge branch 'package' of GameCenter/game-center into dev

zhangxianyu 1 місяць тому
батько
коміт
e205410b53

+ 22 - 107
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/RoleManageServiceImpl.java

@@ -989,6 +989,12 @@ public class RoleManageServiceImpl implements IRoleManageService {
         if (StringUtils.isBlank(dto.getSortFiled())) {
             criA.getOrderBy().orderBy("a.create_time", dto.getSortType());
         } else {
+            if(dto.getSortFiled().equals("ip_role_count_filter")){
+                dto.setSortFiled("role_count_group_filters_count");
+            }
+            if(dto.getSortFiled().equals("role_user_ip_count_filter")){
+                dto.setSortFiled("role_user_group_filters_count");
+            }
             criA.getOrderBy().orderBy(dto.getSortFiled(), dto.getSortType());
         }
         //列表sql
@@ -1386,57 +1392,13 @@ public class RoleManageServiceImpl implements IRoleManageService {
 
     private String getIpInfoListSql(Criteria criA) {
         return """
-                    WITH
-                login_data AS (
-                  SELECT
-                    role_id, game_id, user_id, ip
-                  FROM dm_game_order.t_user_login_log
-                  WHERE
-                    game_id IN (35,36,10035)
-                    AND role_id != 'null'
-                    AND ip IS NOT NULL AND ip != 'null' AND ip != ''
-                ),
-                user_role_counts AS (
-                  SELECT user_id, COUNT(DISTINCT role_id) AS user_role_count
-                  FROM login_data
-                  GROUP BY user_id
-                ),
-                ip_relationships AS (
-                  SELECT
-                    a.role_id,
-                    COUNT(DISTINCT b.user_id) AS user_count,
-                    COUNT(DISTINCT b.role_id) AS role_count
-                  FROM login_data a
-                  LEFT JOIN login_data b ON a.ip = b.ip
-                  GROUP BY a.role_id
-                ),
-                role_ip_roles AS (
-                  SELECT
-                    r.role_id,
-                    COUNT(DISTINCT all_roles.role_id) AS role_count
-                  FROM login_data r
-                  JOIN login_data all_roles ON r.ip = all_roles.ip
-                  GROUP BY r.role_id
-                )
-                                
-                                
-                                
-                SELECT
-                  a.*,
-                  GREATEST(e.role_count - urc.user_role_count, 0) AS ip_role_count_filter,
-                  GREATEST(f.role_count - urc.user_role_count, 0) AS role_user_ip_count_filter,
-                  game.game_name
-                FROM game_ads.role_ip_monitor a
-                LEFT JOIN (
-                  SELECT role_id, game_id, user_id, COUNT(DISTINCT ip) AS ip_count
-                  FROM login_data
-                  GROUP BY role_id, game_id, user_id
-                ) c ON a.role_id = c.role_id AND a.game_id = c.game_id AND a.user_id = c.user_id
-                LEFT JOIN ip_relationships d ON a.role_id = d.role_id
-                LEFT JOIN ip_relationships e ON a.role_id = e.role_id
-                LEFT JOIN role_ip_roles f ON a.role_id = f.role_id
-                LEFT JOIN user_role_counts urc ON a.user_id = urc.user_id
-                LEFT JOIN dm_game_order.t_game game ON a.game_id = game.id AND game.source_system = 'ZX_ONE'
+                               SELECT
+                                 a.*,
+                                 a.role_count_group_filters_count as ip_role_count_filter,
+                                 a.role_user_group_filters_count as role_user_ip_count_filter,
+                                 game.game_name
+                               FROM game_ads.role_ip_monitor a
+                               LEFT JOIN dm_game_order.t_game game ON a.game_id = game.id AND game.source_system = 'ZX_ONE'
                 """ + criA;
     }
 
@@ -1497,62 +1459,15 @@ public class RoleManageServiceImpl implements IRoleManageService {
 
     private String getIpInfoListCountSql(Criteria criA) {
         return """
-                SELECT COUNT(1) FROM (
-                WITH
-                login_data AS (
-                  SELECT
-                    role_id, game_id, user_id, ip
-                  FROM dm_game_order.t_user_login_log
-                  WHERE
-                    game_id IN (35,36,10035)
-                    AND role_id != 'null'
-                    AND ip IS NOT NULL AND ip != 'null' AND ip != ''
-                ),
-                user_role_counts AS (
-                  SELECT user_id, COUNT(DISTINCT role_id) AS user_role_count
-                  FROM login_data
-                  GROUP BY user_id
-                ),
-                ip_relationships AS (
-                  SELECT
-                    a.role_id,
-                    COUNT(DISTINCT b.user_id) AS user_count,
-                    COUNT(DISTINCT b.role_id) AS role_count
-                  FROM login_data a
-                  LEFT JOIN login_data b ON a.ip = b.ip
-                  GROUP BY a.role_id
-                ),
-                role_ip_roles AS (
-                  SELECT
-                    r.role_id,
-                    COUNT(DISTINCT all_roles.role_id) AS role_count
-                  FROM login_data r
-                  JOIN login_data all_roles ON r.ip = all_roles.ip
-                  GROUP BY r.role_id
-                )
-                                
-                                
-                                
-                SELECT
-                  a.*,
-                  GREATEST(e.role_count - urc.user_role_count, 0) AS ip_role_count_filter,
-                  GREATEST(f.role_count - urc.user_role_count, 0) AS role_user_ip_count_filter,
-                  game.game_name
-                FROM game_ads.role_ip_monitor a
-                LEFT JOIN (
-                  SELECT role_id, game_id, user_id, COUNT(DISTINCT ip) AS ip_count
-                  FROM login_data
-                  GROUP BY role_id, game_id, user_id
-                ) c ON a.role_id = c.role_id AND a.game_id = c.game_id AND a.user_id = c.user_id
-                LEFT JOIN ip_relationships d ON a.role_id = d.role_id
-                LEFT JOIN ip_relationships e ON a.role_id = e.role_id
-                LEFT JOIN role_ip_roles f ON a.role_id = f.role_id
-                LEFT JOIN user_role_counts urc ON a.user_id = urc.user_id
-                LEFT JOIN dm_game_order.t_game game ON a.game_id = game.id AND game.source_system = 'ZX_ONE'
-                """ +
-                criA
-                + """
-                ) a
+                                                   select count(1) from ( SELECT
+                                               a.*,
+                                               a.role_count_group_filters_count as ip_role_count_filter,
+                                               a.role_user_group_filters_count as role_user_ip_count_filter,
+                                               game.game_name
+                                             FROM game_ads.role_ip_monitor a
+                                             LEFT JOIN dm_game_order.t_game game ON a.game_id = game.id AND game.source_system = 'ZX_ONE'
+                                             """+criA+"""
+                                             ) a
                 """;
     }