|  | @@ -1076,12 +1076,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()));
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -1115,76 +1115,71 @@ public class RoleManageServiceImpl implements IRoleManageService {
 | 
	
		
			
				|  |  |                   group by ip
 | 
	
		
			
				|  |  |                  """;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      @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) {
 | 
	
	
		
			
				|  | @@ -1252,76 +1247,6 @@ public class RoleManageServiceImpl implements IRoleManageService {
 | 
	
		
			
				|  |  |                                   group by b.id) a
 | 
	
		
			
				|  |  |                  """ + 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
 | 
	
	
		
			
				|  | @@ -1329,19 +1254,6 @@ public class RoleManageServiceImpl implements IRoleManageService {
 | 
	
		
			
				|  |  |                      group by role_id,game_id,ip,server_id,user_id
 | 
	
		
			
				|  |  |                  """;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    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的角色数量
 | 
	
		
			
				|  |  |       */
 |