|
@@ -1070,6 +1070,9 @@ public class RoleManageServiceImpl implements IRoleManageService {
|
|
|
}
|
|
|
Criteria criteria = Cnd.cri();
|
|
|
criteria.where().andEquals("role_id", dto.getRoleId());
|
|
|
+ if (dto.getExcludeUserId() != null) {
|
|
|
+ criteria.where().andNotEquals("user_id", dto.getExcludeUserId());
|
|
|
+ }
|
|
|
|
|
|
//分页对象
|
|
|
Pager pager = dao.createPager(dto.getPageNum(), dto.getPageSize());
|
|
@@ -1108,6 +1111,155 @@ public class RoleManageServiceImpl implements IRoleManageService {
|
|
|
return new Page<>(list, pager);
|
|
|
}
|
|
|
|
|
|
+ @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());
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+
|
|
|
+ private Criteria getUserDetailOrderSql(RoleIpInfoParamDTO dto) {
|
|
|
+ Criteria criteria = Cnd.cri();
|
|
|
+ //主表添加排序条件
|
|
|
+ if (StringUtils.isBlank(dto.getSortType())) {
|
|
|
+ dto.setSortType(OrderByEnum.DESC.getOrderType());
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(dto.getSortFiled())) {
|
|
|
+ criteria.getOrderBy().orderBy("createTime", dto.getSortType());
|
|
|
+ } else {
|
|
|
+ criteria.getOrderBy().orderBy(dto.getSortFiled(), dto.getSortType());
|
|
|
+ }
|
|
|
+ return criteria;
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getUserDetailListSql(Criteria criteria, Criteria orderCriteria) {
|
|
|
+ return """
|
|
|
+ select * 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
|
|
|
+ """ + 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
|
|
@@ -1118,7 +1270,7 @@ public class RoleManageServiceImpl implements IRoleManageService {
|
|
|
|
|
|
private String getRoleDetailList(Criteria criteria) {
|
|
|
return """
|
|
|
- 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
|
|
|
+ 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
|
|
|
""" + criteria + """
|
|
|
group by role_id,game_id,ip,server_id,user_id
|
|
|
""";
|
|
@@ -1129,6 +1281,9 @@ public class RoleManageServiceImpl implements IRoleManageService {
|
|
|
if (StringUtils.isNotEmpty(dto.getRegIp())) {
|
|
|
criteria.where().andEquals("ip", dto.getRegIp());
|
|
|
}
|
|
|
+ if (dto.getExcludeUserId() != null) {
|
|
|
+ criteria.where().andNotEquals("user_id", dto.getExcludeUserId());
|
|
|
+ }
|
|
|
return criteria;
|
|
|
}
|
|
|
|
|
@@ -1168,10 +1323,12 @@ public class RoleManageServiceImpl implements IRoleManageService {
|
|
|
|
|
|
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
|
|
|
- from dm_game_order.t_game_user_role a
|
|
|
- left join game_ads.ads_role_amount b on a.role_id = b.role_id) a
|
|
|
+ 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
|
|
|
+ from dm_game_order.t_game_user_role a
|
|
|
+ left join game_ads.ads_role_amount b on a.role_id = b.role_id
|
|
|
+ """ + criA + """
|
|
|
+ ) a
|
|
|
""";
|
|
|
}
|
|
|
|
|
@@ -1184,6 +1341,12 @@ public class RoleManageServiceImpl implements IRoleManageService {
|
|
|
cri.where().andEquals("server_id", dto.getServerId());
|
|
|
}
|
|
|
cri.where().andInList("game_id", Arrays.asList(35L, 36L, 10035L));
|
|
|
+ if(dto.getCountryLevel()!=null&&dto.getCountryLevel()==0){
|
|
|
+ cri.where().andLTE("role_level",13);
|
|
|
+ }
|
|
|
+ if(dto.getCountryLevel()!=null&&dto.getCountryLevel()==1){
|
|
|
+ cri.where().andGT("role_level",13);
|
|
|
+ }
|
|
|
return cri;
|
|
|
}
|
|
|
|
|
@@ -1226,7 +1389,7 @@ public class RoleManageServiceImpl implements IRoleManageService {
|
|
|
a.game_id,
|
|
|
a.server_name,
|
|
|
IFNULL(c.role_total_amount, 0) as role_total_amount,
|
|
|
- if(b.role_level <= 13, 1, 0) as country_level,
|
|
|
+ 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
|