Преглед изворни кода

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

bilingfeng пре 1 месец
родитељ
комит
2560ffe9da

+ 5 - 12
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/RoleManageController.java

@@ -67,7 +67,7 @@ public class RoleManageController {
         return ResultVO.ok(roleManageService.ipInfoListOfPage(dto));
     }
 
-    @ApiOperation(value = "角色ip登录详情列表")
+    @ApiOperation(value = "角色ip登录数量列表")
     @PreAuthorize(permissionKey = "roleManage:ipInfo:list")
     @PostMapping("/roleIpDetail/list")
     public ResultVO<List<Map>> roleIpDetailListOfPage(@RequestBody RoleIpInfoParamDTO dto) {
@@ -75,17 +75,10 @@ public class RoleManageController {
     }
 
     @ApiOperation(value = "查询角色详情列表")
-    @PreAuthorize(permissionKey = "roleManage:ipRoleDetail:listOfPage")
-    @PostMapping("/roleDetail/listOfPage")
-    public ResultVO<Page<Map>> roleDetailListOfPage(@RequestBody RoleIpInfoParamDTO dto) {
-        return ResultVO.ok(roleManageService.roleDetailListOfPage(dto));
-    }
-
-//    @ApiOperation(value = "查询玩家详情列表")
-    @PreAuthorize(permissionKey = "roleManage:userDetail:listOfPage")
-    @PostMapping("/userDetail/listOfPage")
-    public ResultVO<Page<Map>> userDetailListOfPage(@RequestBody RoleIpInfoParamDTO dto) {
-        return ResultVO.ok(roleManageService.userDetailListOfPage(dto));
+    @PreAuthorize(permissionKey = "roleManage:ipRoleDetail:list")
+    @PostMapping("/roleDetailList")
+    public ResultVO<List<Map>> roleDetailList(@RequestBody RoleIpInfoParamDTO dto) {
+        return ResultVO.ok(roleManageService.roleDetailList(dto));
     }
 
     @ApiOperation(value = "查询玩家详情列表")

+ 2 - 2
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/RoleIpInfoParamDTO.java

@@ -19,8 +19,8 @@ public class RoleIpInfoParamDTO extends BasePage {
    @ApiModelProperty(value = "玩家id")
    private Long userId;
 
-   @ApiModelProperty(value = "排除玩家id")
-   private Long excludeUserId;
+   @ApiModelProperty(value = "排除玩家 (0 不排除  1排除)")
+   private Integer excludeUserType = 0;
 
    @ApiModelProperty(value = "玩家名称")
    private String userName;

+ 7 - 15
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IRoleManageService.java

@@ -92,26 +92,11 @@ public interface IRoleManageService {
 
     List<Map> ipCountList(List<String> ip);
 
-
-    /**
-     * 根据ip查询角色详情列表
-     * @param dto
-     * @return
-     */
-    Page<Map> roleDetailListOfPage(RoleIpInfoParamDTO dto);
-
     /**
      * 查询玩家详情列表
      * @param dto
      * @return
      */
-    Page<Map> userDetailListOfPage(RoleIpInfoParamDTO dto);
-
-    /**
-     * 查询玩家详情列表2
-     * @param dto
-     * @return
-     */
     List<Map> userDetailList(RoleIpInfoParamDTO dto);
 
 
@@ -119,5 +104,12 @@ public interface IRoleManageService {
     List<Map> userDetailList(List<Long> userIds,RoleIpInfoParamDTO dto);
 
 
+    /**
+     * 查询角色详情列表2
+     * @param dto
+     * @return
+     */
+    List<Map> roleDetailList(RoleIpInfoParamDTO dto);
 
+    List<Map> roleDetailList(List<Long> roleId,RoleIpInfoParamDTO roleIpInfoParamDTO);
 }

+ 84 - 243
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
@@ -1037,7 +1043,7 @@ public class RoleManageServiceImpl implements IRoleManageService {
             dto.setSortType(OrderByEnum.DESC.getOrderType());
         }
         if (StringUtils.isBlank(dto.getSortFiled())) {
-            criA.getOrderBy().orderBy("role_total_amount", dto.getSortType());
+            criA.getOrderBy().orderBy("roleTotalAmount", dto.getSortType());
         } else {
             criA.getOrderBy().orderBy(dto.getSortFiled(), dto.getSortType());
         }
@@ -1076,12 +1082,12 @@ public class RoleManageServiceImpl implements IRoleManageService {
         }
         List<Map> maps = baseService.ipDetailList(dto);
         if (CollectionUtils.isEmpty(maps)) {
-            return null;
+            return new ArrayList<>();
         }
         Map map = maps.get(0);
         String ipCountIp = String.valueOf(map.get("ip_count_ip"));
         if (StringUtils.isEmpty(ipCountIp)) {
-            return null;
+            return new ArrayList<>();
         }
         return baseService.ipCountList(Arrays.stream(ipCountIp.split(",")).map(String::trim).collect(Collectors.toList()));
     }
@@ -1090,6 +1096,9 @@ public class RoleManageServiceImpl implements IRoleManageService {
     public List<Map> ipDetailList(RoleIpInfoParamDTO dto) {
         Criteria criteria = Cnd.cri();
         criteria.where().andEquals("role_id", dto.getRoleId());
+        if(CollectionUtils.isNotEmpty(dto.getGameId())){
+            criteria.where().andInList("game_id", dto.getGameId());
+        }
         String ipDetailListSql = getIpDetailListSql(criteria);
         Sql sql = Sqls.create(ipDetailListSql);
         sql.setCallback(Sqls.callback.maps());
@@ -1101,6 +1110,12 @@ public class RoleManageServiceImpl implements IRoleManageService {
     public List<Map> ipCountList(List<String> ip) {
         Criteria criteria = Cnd.cri();
         criteria.where().andInStrList("ip", ip);
+        criteria.where().andNotIsNull("ip");
+        criteria.where().andNotEquals("ip","null");
+        criteria.where().andNotEquals("ip","");
+        criteria.where().andNotIsNull("role_id");
+        criteria.where().andNotEquals("role_id","null");
+        criteria.where().andNotEquals("role_id","");
         String ipCountList = getIpCountList(criteria);
         Sql sql = Sqls.create(ipCountList);
         sql.setCallback(Sqls.callback.maps());
@@ -1117,74 +1132,70 @@ public class RoleManageServiceImpl implements IRoleManageService {
     }
 
     @Override
-    public Page<Map> roleDetailListOfPage(RoleIpInfoParamDTO dto) {
-        Criteria criteria = getRoleDetailSqlByQuery(dto);
-        //分页对象
-        Pager pager = dao.createPager(dto.getPageNum(), dto.getPageSize());
-        //查询总记录数
-        Sql countSql = Sqls.create(getRoleDetailCountSql(criteria));
-        countSql.setCallback(Sqls.callback.integer());
-        dao.execute(countSql);
-        pager.setRecordCount(countSql.getInt());
-        String roleIpDetailListSql = getRoleDetailList(criteria);
-        Sql sql = Sqls.create(roleIpDetailListSql);
-        sql.setCallback(Sqls.callback.maps());
-        sql.setPager(pager);
-        dao.execute(sql);
-        //查询结果
-        List<Map> list = sql.getList(Map.class);
-        return new Page<>(list, pager);
+    public List<Map> userDetailList(RoleIpInfoParamDTO dto) {
+        if (dto.getRoleId() == null) {
+            throw new BaseException("角色id不能为空");
+        }
+        List<Map> maps = baseService.ipDetailList(dto);
+        if (CollectionUtils.isEmpty(maps)) {
+            return new ArrayList<>();
+        }
+        Map map = maps.get(0);
+        String userCountGroup = String.valueOf(map.get("user_count_group"));
+        if (StringUtils.isEmpty(userCountGroup)) {
+            return new ArrayList<>();
+        }
+        return baseService.userDetailList(Arrays.stream(userCountGroup.split(",")).map(String::trim).map(Long::valueOf).collect(Collectors.toList()), dto);
     }
 
     @Override
-    public Page<Map> userDetailListOfPage(RoleIpInfoParamDTO dto) {
-        Criteria criteria = getUserDetailSqlByQuery(dto);
-        //分页对象
-        Pager pager = dao.createPager(dto.getPageNum(), dto.getPageSize());
-        //查询总记录数
-        Sql countSql = Sqls.create(getUserDetailCountSql(criteria));
-        countSql.setCallback(Sqls.callback.integer());
-        dao.execute(countSql);
-        pager.setRecordCount(countSql.getInt());
+    public List<Map> userDetailList(List<Long> userIds, RoleIpInfoParamDTO dto) {
+        Criteria criteria = Cnd.cri();
+        criteria.where().andInList("user_id", userIds);
         Criteria orderCriteria = getUserDetailOrderSql(dto);
         String userDetailListSql = getUserDetailListSql(criteria, orderCriteria);
         Sql sql = Sqls.create(userDetailListSql);
         sql.setCallback(Sqls.callback.maps());
-        sql.setPager(pager);
         dao.execute(sql);
         //查询结果
-        List<Map> list = sql.getList(Map.class);
-        return new Page<>(list, pager);
+        return sql.getList(Map.class);
     }
 
     @Override
-    public List<Map> userDetailList(RoleIpInfoParamDTO dto) {
+    public List<Map> roleDetailList(RoleIpInfoParamDTO dto) {
         if (dto.getRoleId() == null) {
             throw new BaseException("角色id不能为空");
         }
         List<Map> maps = baseService.ipDetailList(dto);
         if (CollectionUtils.isEmpty(maps)) {
-            return null;
+            return new ArrayList<>();
         }
         Map map = maps.get(0);
-        String userCountGroup = String.valueOf(map.get("user_count_group"));
-        if (StringUtils.isEmpty(userCountGroup)) {
-            return null;
+        String filedRoleId = "role_count_group";
+        if (dto.getExcludeUserType() == 1) {
+            filedRoleId = "role_count_group_filters";
         }
-        return baseService.userDetailList(Arrays.stream(userCountGroup.split(",")).map(String::trim).map(Long::valueOf).collect(Collectors.toList()), dto);
+        String roleIdStr = String.valueOf(map.get(filedRoleId));
+        if (StringUtils.isEmpty(roleIdStr) || roleIdStr.equals("[]")) {
+            return new ArrayList<>();
+        }
+        if (dto.getExcludeUserType() == 1) {
+            roleIdStr = roleIdStr.replaceAll("[\\[\\]\"]", "");
+        }
+        return baseService.roleDetailList(Arrays.stream(roleIdStr.split(",")).map(String::trim).map(Long::valueOf).collect(Collectors.toList()), dto);
     }
 
     @Override
-    public List<Map> userDetailList(List<Long> userIds, RoleIpInfoParamDTO dto) {
+    public List<Map> roleDetailList(List<Long> roleId, RoleIpInfoParamDTO roleIpInfoParamDTO) {
         Criteria criteria = Cnd.cri();
-        criteria.where().andInList("user_id", userIds);
-        Criteria orderCriteria = getUserDetailOrderSql(dto);
-        String userDetailListSql = getUserDetailListSql(criteria, orderCriteria);
-        Sql sql = Sqls.create(userDetailListSql);
+        criteria.where().andInList("role_id", roleId);
+        String roleDetailListSql = getRoleDetailList(criteria);
+        Sql sql = Sqls.create(roleDetailListSql);
         sql.setCallback(Sqls.callback.maps());
         dao.execute(sql);
         //查询结果
-        return sql.getList(Map.class);
+        List<Map> list = sql.getList(Map.class);
+        return list;
     }
 
     private Criteria getUserDetailOrderSql(RoleIpInfoParamDTO dto) {
@@ -1253,75 +1264,6 @@ public class RoleManageServiceImpl implements IRoleManageService {
                 """ + orderCriteria;
     }
 
-    private String getUserDetailCountSql(Criteria criteria) {
-        return """
-                  select count(1) from (select a.user_id  userId,
-                                       any_value(a.user_name) userName,
-                                       any_value(b.agent_id) agentId ,
-                                       any_value(IF(b.agent_id = 0, '自然量', pa.agent_name)) agentGame,
-                                       any_value(b.create_time) createTime,
-                                       any_value(b.game_id) gameId,
-                                       any_value(d.game_name) gameName,
-                                       any_value(b.ip) ip,
-                                       any_value(IFNULL(c.total_amount,0)) totalAmount,
-                                       any_value((select count(1) from dm_game_order.t_game_user_role where user_id = b.id)) as userRoleCount,
-                                       MAX(ab.game_id) as lastLoginGameId,
-                                       MAX(ab.game_name) as lastLoginGame,
-                                       MAX(ab.last_login_time) as lastLoginTime,
-                                       any_value(ab.last_order_time) as lastOrderTime
-                                from game_ads.role_ip_monitor a
-                                         left join dm_game_order.t_game_user b on a.user_id = b.id and source_system = 'ZX_ONE'
-                                    left join dm_game_order.t_pitcher_agent pa on pa.id = b.agent_id and pa.source_system = 'ZX_ONE'
-                                         left join game_ads.ads_player_recharge_ranking c on b.id = c.pitcher_id and c.source_system = 'ZX_ONE'
-                                    left join (
-                                          SELECT
-                                              a.user_id,
-                    a.game_id,
-                    b.game_name,
-                    a.create_time AS last_login_time,
-                    latest_order.last_order_time
-                FROM
-                    dm_game_order.t_user_login_log a
-                LEFT JOIN
-                    dm_game_order.t_game b
-                    ON a.game_id = b.id
-                    AND b.source_system = 'ZX_ONE'
-                LEFT JOIN
-                    (SELECT
-                         user_id,
-                         MAX(create_time) AS last_order_time
-                     FROM
-                         dm_game_order.t_game_order
-                     WHERE
-                         source_system = 'ZX_ONE'
-                     GROUP BY
-                         user_id) latest_order
-                    ON a.user_id = latest_order.user_id
-                ORDER BY
-                    a.create_time DESC
-                                ) ab on ab.user_id = b.id
-                                left join dm_game_order.t_game d on b.game_id = d.id and d.source_system = 'ZX_ONE'
-                                """ + criteria + """
-                                group by a.user_id) a
-                """;
-    }
-
-    private Criteria getUserDetailSqlByQuery(RoleIpInfoParamDTO dto) {
-        Criteria criteria = Cnd.cri();
-        if (dto.getRegIp() != null) {
-            criteria.where().andEquals("a.ip", dto.getRegIp());
-        }
-        return criteria;
-    }
-
-    private String getRoleDetailCountSql(Criteria criteria) {
-        return """
-                select count(1) from ( select role_id  roleId ,any_value(role_name) roleNmae,game_id  gameId,any_value(game_name) gameName,ip,server_id serverId,any_value(server_name) serverName,user_id userId,any_value(user_name) userName from game_ads.role_ip_monitor
-                """ + criteria + """
-                   group by role_id,game_id,ip,server_id,user_id)a
-                """;
-    }
-
     private String getRoleDetailList(Criteria criteria) {
         return """
                 select role_id  roleId ,any_value(role_name) roleName,game_id  gameId,any_value(game_name) gameName,ip,server_id serverId,any_value(server_name) serverName,user_id userId,any_value(user_name) userName from game_ads.role_ip_monitor
@@ -1330,25 +1272,15 @@ public class RoleManageServiceImpl implements IRoleManageService {
                 """;
     }
 
-    private Criteria getRoleDetailSqlByQuery(RoleIpInfoParamDTO dto) {
-        Criteria criteria = Cnd.cri();
-        if (StringUtils.isNotEmpty(dto.getRegIp())) {
-            criteria.where().andEquals("ip", dto.getRegIp());
-        }
-        if (dto.getExcludeUserId() != null) {
-            criteria.where().andNotEquals("user_id", dto.getExcludeUserId());
-        }
-        return criteria;
-    }
-
-
     /**
      * ipRoleCount 同ip的角色数量
      */
     private String getIpDetailListSql(Criteria criteria) {
         return """
                  select * from game_ads.role_ip_monitor
-                """ + criteria;
+                """ + criteria + """
+                order by role_level desc
+                """;
     }
 
 
@@ -1360,19 +1292,19 @@ public class RoleManageServiceImpl implements IRoleManageService {
 
     private String getGameCountryRoleListSql(Criteria criA) {
         return """
-                select a.country as country,a.role_id as roleId,user_id as userId ,role_name as roleName ,role_level as roleLevel ,combat_num as combatNum,
-                server_id as serverId ,server_name as serverName ,create_time as createTime,IFNULL(b.role_total_amount,0) as roleTotalAmount
-                from dm_game_order.t_game_user_role a
-                left join game_ads.ads_role_amount b on a.role_id = b.role_id
+                select a.country as country,a.role_id as roleId,a.user_id as userId ,a.role_name as roleName ,a.role_level as roleLevel ,combat_num as combatNum,
+                                                                                             a.server_id as serverId ,a.server_name as serverName ,create_time as createTime,IFNULL(b.amount,0) as roleTotalAmount
+                                                                                             from dm_game_order.t_game_user_role a
+                                                                                             left join game_dw.dw_order_day_amount b on a.role_id = b.role_id
                 """ + criA;
     }
 
     private String getGameCountryRoleCountSql(Criteria criA) {
         return """
-                select count(1) from ( select a.country as country,a.role_id as roleId,user_id as userId ,role_name as roleName ,role_level as roleLevel ,combat_num as combatNum,
-                              server_id as serverId ,server_name as serverName ,create_time as createTime,IFNULL(b.role_total_amount,0) as roleTotalAmount
+                select count(1) from ( select a.country as country,a.role_id as roleId,a.user_id as userId ,a.role_name as roleName ,a.role_level as roleLevel ,a.combat_num as combatNum,
+                              a.server_id as serverId ,a.server_name as serverName ,a.create_time as createTime,IFNULL(b.amount,0) as roleTotalAmount
                               from dm_game_order.t_game_user_role a
-                              left join game_ads.ads_role_amount b on a.role_id = b.role_id
+                              left join game_dw.dw_order_day_amount b on a.role_id = b.role_id
                               """ + criA + """
                                 ) a
                 """;
@@ -1381,17 +1313,17 @@ public class RoleManageServiceImpl implements IRoleManageService {
     private Criteria getSqlByQuery(RoleGameCountryParamDTO dto) {
         Criteria cri = Cnd.cri();
         if (StringUtils.isNotEmpty(dto.getCountry())) {
-            cri.where().andEquals("country", dto.getCountry());
+            cri.where().andEquals("a.country", dto.getCountry());
         }
         if (StringUtils.isNotEmpty(dto.getServerId())) {
-            cri.where().andEquals("server_id", dto.getServerId());
+            cri.where().andEquals("a.server_id", dto.getServerId());
         }
-        cri.where().andInList("game_id", Arrays.asList(35L, 36L, 10035L));
+        cri.where().andInList("a.game_id", Arrays.asList(35L, 36L, 10035L));
         if (dto.getCountryLevel() != null && dto.getCountryLevel() == 0) {
-            cri.where().andLTE("role_level", 13);
+            cri.where().andLTE("a.role_level", 13);
         }
         if (dto.getCountryLevel() != null && dto.getCountryLevel() == 1) {
-            cri.where().andGT("role_level", 13);
+            cri.where().andGT("a.role_level", 13);
         }
         return cri;
     }
@@ -1434,14 +1366,14 @@ public class RoleManageServiceImpl implements IRoleManageService {
                 from (select a.country,
                                       a.game_id,
                                       a.server_name,
-                                      IFNULL(c.role_total_amount, 0) as role_total_amount,
+                                      IFNULL(c.amount, 0) as role_total_amount,
                                       if(b.role_level <= 13, 0, 1)      as country_level,
                                       if(d.role_id is not null, 1, 0) as active,
                                       a.server_id,
                                       concat(a.country,',',a.server_id) as cs
                                from dm_game_order.t_server_country a
                                         left join dm_game_order.t_game_user_role b on a.country = b.country and a.server_id = b.server_id
-                                        left join game_ads.ads_role_amount c on c.role_id = b.role_id
+                                        left join game_dw.dw_order_day_amount c on c.role_id = b.role_id
                                	left join (
                 	select role_id,ROW_NUMBER()over(partition by role_id) as num from game_dw.dw_active_log
                 	where game_id in (35,36,10035)
@@ -1474,57 +1406,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;
     }
 
@@ -1585,62 +1473,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
+                      select count(1) from ( 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,
+                  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 (
-                  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
+                """ + criA + """
+                                             ) a
                 """;
     }