فهرست منبع

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

zhangxianyu 1 ماه پیش
والد
کامیت
a01e27bd3d

+ 10 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/RoleManageController.java

@@ -60,6 +60,9 @@ public class RoleManageController {
         return ResultVO.ok(roleManageService.levelListOfPage(dto));
     }
 
+
+
+
     @ApiOperation(value = "角色IP监控信息列表")
     @PreAuthorize(permissionKey = "roleManage:ipInfo:listOfPage")
     @PostMapping("/ipInfo/listOfPage")
@@ -81,6 +84,13 @@ public class RoleManageController {
         return ResultVO.ok(roleManageService.roleDetailList(dto));
     }
 
+    @ApiOperation(value = "查询疑似同玩家角色详情列表")
+    @PreAuthorize(permissionKey = "roleManage:ipRoleDetail:list")
+    @PostMapping("/suspectedRoleDetailList")
+    public ResultVO<List<Map>> suspectedRoleDetailList(@RequestBody RoleIpInfoParamDTO dto) {
+        return ResultVO.ok(roleManageService.suspectedRoleDetailList(dto));
+    }
+
     @ApiOperation(value = "查询玩家详情列表")
     @PreAuthorize(permissionKey = "roleManage:userDetail:list")
     @PostMapping("/userDetail/list")

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

@@ -105,11 +105,25 @@ public interface IRoleManageService {
 
 
     /**
-     * 查询角色详情列表2
+     * 查询角色详情列表
      * @param dto
      * @return
      */
     List<Map> roleDetailList(RoleIpInfoParamDTO dto);
 
+    /**
+     * gameOrder 角色详情列表
+     * @param roleId
+     * @return
+     */
+    List<Map>  roleDetailList(List<String> roleId);
+
     List<Map> roleDetailList(List<String> roleId,RoleIpInfoParamDTO roleIpInfoParamDTO);
+
+    /**
+     * 查询疑似同玩家角色详情列表
+     * @param dto
+     * @return
+     */
+    List<Map> suspectedRoleDetailList(RoleIpInfoParamDTO dto);
 }

+ 148 - 48
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/RoleManageServiceImpl.java

@@ -1049,7 +1049,7 @@ public class RoleManageServiceImpl implements IRoleManageService {
             orderCri.getOrderBy().orderBy(dto.getSortFiled(), dto.getSortType());
         }
         //列表sql
-        String gameCountryRoleListSql = getGameCountryRoleListSql(criA,orderCri);
+        String gameCountryRoleListSql = getGameCountryRoleListSql(criA, orderCri);
         Sql sql = Sqls.create(gameCountryRoleListSql);
         sql.setCallback(Sqls.callback.maps());
         sql.setPager(pager);
@@ -1110,13 +1110,13 @@ public class RoleManageServiceImpl implements IRoleManageService {
     @Override
     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", "");
+        criteria.where().andInStrList("a.ip", ip);
+        criteria.where().andNotIsNull("a.ip");
+        criteria.where().andNotEquals("a.ip", "null");
+        criteria.where().andNotEquals("a.ip", "");
+        criteria.where().andNotIsNull("a.role_id");
+        criteria.where().andNotEquals("a.role_id", "null");
+        criteria.where().andNotEquals("a.role_id", "");
         String ipCountList = getIpCountList(criteria);
         Sql sql = Sqls.create(ipCountList);
         sql.setCallback(Sqls.callback.maps());
@@ -1126,9 +1126,16 @@ public class RoleManageServiceImpl implements IRoleManageService {
 
     private String getIpCountList(Criteria criteria) {
         return """
-                select ip,count(distinct role_id) as ipRoleCount  from  dm_game_order.t_user_login_log 
+                SELECT a.ip,
+                       COUNT(DISTINCT a.role_id) AS ipRoleCount,
+                       COUNT(distinct b.id) AS loginCount
+                FROM dm_game_order.t_user_login_log a
+                         LEFT JOIN
+                     dm_game_order.t_user_login_log b
+                     ON
+                         a.ip = b.ip AND b.role_id = a.role_id
                  """ + criteria + """
-                 group by ip
+                 group by a.ip
                 """;
     }
 
@@ -1143,7 +1150,7 @@ public class RoleManageServiceImpl implements IRoleManageService {
         }
         Map map = maps.get(0);
         String userCountGroup = String.valueOf(map.get("user_count_group"));
-        if (StringUtils.isEmpty(userCountGroup)) {
+        if (StringUtils.isEmpty(userCountGroup)|| "null".equals(userCountGroup)) {
             return new ArrayList<>();
         }
         return baseService.userDetailList(Arrays.stream(userCountGroup.split(",")).map(String::trim).map(Long::valueOf).collect(Collectors.toList()), dto);
@@ -1186,6 +1193,44 @@ public class RoleManageServiceImpl implements IRoleManageService {
         return baseService.roleDetailList(Arrays.stream(roleIdStr.split(",")).map(String::trim).collect(Collectors.toList()), dto);
     }
 
+    @Override
+    public List<Map> roleDetailList(List<String> roleId) {
+        Criteria criteria = Cnd.cri();
+        criteria.where().andInStrList("a.role_id", roleId);
+        criteria.where().andEquals("a.source_system","ZX_ONE");
+        criteria.where().andInList("a.game_id", Arrays.asList(35L, 36L, 10035L));
+        String roleDetailListSql = getRoleDetailListSql(criteria);
+        Sql sql = Sqls.create(roleDetailListSql);
+        sql.setCallback(Sqls.callback.maps());
+        dao.execute(sql);
+        //查询结果
+        List<Map> list = sql.getList(Map.class);
+        return list;
+    }
+
+    private String getRoleDetailListSql(Criteria criteria) {
+        return """
+                select any_value(a.role_name)   as roleName,
+                       a.role_id                as roleId,
+                       any_value(combat_num)    as combatNum,
+                       any_value(a.os) as os,
+                       SUM(IFNULL(b.amount, 0)) as roleTotalAmount,
+                       any_value(c.game_name) as gameName,
+                       any_value(a.server_id) as serverId,
+                       any_value(a.server_name) as serverName ,
+                       any_value(a.role_level) as roleLevel ,
+                       any_value(a.create_time) as createTime ,
+                       any_value(a.update_time) as updateTime ,
+                       any_value(a.last_login_time) as lastLoginTime ,
+                       any_value(a.last_recharge_time) as lastRechargeTime
+                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
+                left join dm_game_order.t_game c on a.game_id = c.id and c.source_system = 'ZX_ONE'
+                """+criteria+"""
+                GROUP BY a.country, a.role_id, a.user_id, a.server_id
+                """;
+    }
+
     @Override
     public List<Map> roleDetailList(List<String> roleId, RoleIpInfoParamDTO roleIpInfoParamDTO) {
         Criteria criteria = Cnd.cri();
@@ -1199,6 +1244,24 @@ public class RoleManageServiceImpl implements IRoleManageService {
         return list;
     }
 
+    @Override
+    public List<Map> suspectedRoleDetailList(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 suspectedRoleIds = String.valueOf(map.get("suspected_role_ids"));
+        if (StringUtils.isEmpty(suspectedRoleIds)|| "null".equals(suspectedRoleIds)) {
+            return new ArrayList<>();
+        }
+        return baseService.roleDetailList(Arrays.stream(suspectedRoleIds.split(",")).map(String::trim).collect(Collectors.toList()));
+
+    }
+
     private Criteria getUserDetailOrderSql(RoleIpInfoParamDTO dto) {
         Criteria criteria = Cnd.cri();
         //主表添加排序条件
@@ -1291,7 +1354,7 @@ public class RoleManageServiceImpl implements IRoleManageService {
                 """ + criteria;
     }
 
-    private String getGameCountryRoleListSql(Criteria criA,Criteria orderCri) {
+    private String getGameCountryRoleListSql(Criteria criA, Criteria orderCri) {
         return """
                 select a.country as country,a.role_id as roleId,a.user_id as userId ,any_value(a.role_name) as roleName ,any_value(a.role_level) as roleLevel ,any_value(combat_num) as combatNum,
                                                                                                             a.server_id as serverId ,any_value(a.server_name) as serverName ,any_value(create_time) as createTime,SUM(IFNULL(b.amount,0)) as roleTotalAmount
@@ -1299,7 +1362,7 @@ public class RoleManageServiceImpl implements IRoleManageService {
                                                                                                             left join game_dw.dw_order_day_amount b on a.role_id = b.role_id
                                                                                                             """ + criA + """
                  GROUP BY a.country, a.role_id, a.user_id, a.server_id
-                """+ orderCri;
+                """ + orderCri;
     }
 
     private String getGameCountryRoleCountSql(Criteria criA) {
@@ -1379,7 +1442,7 @@ public class RoleManageServiceImpl implements IRoleManageService {
                                                         left join dm_game_order.t_game_user_role b on a.country = b.country and a.server_id = b.server_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)
+                                	where game_id in (35,36,10035) and server_id != '999'
                                 	and dt = Date(NOW()) ) d  on b.role_id = d.role_id and d.num = 1
                                                ) a
                  """ + criA + """
@@ -1399,6 +1462,7 @@ public class RoleManageServiceImpl implements IRoleManageService {
         criA.where().andNotEquals("country", "");
         criA.where().andNotEquals("country", "null");
         criA.where().andInList("game_id", Arrays.asList(35L, 36L, 10035L));
+        criA.where().andNotEquals("server_id", "999");
         return """
                 select concat(country,',',server_id) 
                 from dm_game_order.t_game_user_role 
@@ -1559,45 +1623,81 @@ public class RoleManageServiceImpl implements IRoleManageService {
 
     private String getLevelListSql(Criteria criA) {
         return """
-                  select
-                     a.country as country,
-                     a.role_id as roleId,
-                     a.role_name as roleName,
-                     a.user_id as userId,
-                     a.user_name as userName,
-                     a.game_id as gameId,
-                     a.game_name as gameName,
-                     a.server_id as serverId,
-                     a.server_name as serverName,
-                     a.create_time as createTime,
-                     a.role_level as roleLevel,
-                     a.level_time as levelTime,
-                     a.agent_id as agentId,
-                     b.gs_id as gsId,
-                     b.customer_service_id as customerServiceId,
-                     b.oper_user_id as operUserId,
-                     c.pitcher_id as pitcherId
-                     from ads_role_level_log a
-                     left join dm_game_order.t_role_operate b on a.user_id = b.user_id
-                                                                     and a.role_id = b.role_id
-                                                                     and a.server_id = b.server_id
-                                                                     and a.game_id = b.game_id
-                     left join dm_game_order.t_pitcher_agent c on a.agent_id = c.id and c.source_system =  'ZX_ONE'
-                """ + criA;
+                      select a.country             as country,
+                      a.role_id             as roleId,
+                      a.role_name           as roleName,
+                      a.user_id             as userId,
+                      a.user_name           as userName,
+                      a.game_id             as gameId,
+                      a.game_name           as gameName,
+                      a.server_id           as serverId,
+                      a.server_name         as serverName,
+                      a.create_time         as createTime,
+                      a.role_level          as roleLevel,
+                      a.level_time          as levelTime,
+                      a.agent_id            as agentId,
+                      b.gs_id               as gsId,
+                      b.customer_service_id as customerServiceId,
+                      b.oper_user_id        as operUserId,
+                      c.pitcher_id          as pitcherId,
+                      d.ip,
+                      d.ip_count as ipCount,
+                      d.user_count as userCount,
+                      d.role_count as roleCount,
+                      d.user_role_count as userRoleCount,
+                      d.role_user_ip_count as roleUserIpCount,
+                      IFNULL(d.suspected_count,0) as suspectedCount
+                from game_ads.ads_role_level_log a
+                        left join dm_game_order.t_role_operate b on a.user_id = b.user_id
+                   and a.role_id = b.role_id
+                   and a.server_id = b.server_id
+                   and a.game_id = b.game_id
+                        left join dm_game_order.t_pitcher_agent c on a.agent_id = c.id and c.source_system = 'ZX_ONE'
+                        left join game_ads.role_ip_monitor d on a.role_id = d.role_id
+                   and a.user_id = d.user_id
+                   and a.server_id = d.server_id
+                   and a.game_id = d.game_id
+                         """ + criA;
     }
 
     private String getLevelListCountSql(Criteria criA) {
         return """
                 select count(1) from (
-                      select
-                                  *
-                                    from ads_role_level_log a
-                  left join dm_game_order.t_role_operate b on a.user_id = b.user_id
-                                                                  and a.role_id = b.role_id
-                                                                  and a.server_id = b.server_id
-                                                                  and a.game_id = b.game_id
-                  left join dm_game_order.t_pitcher_agent c on a.agent_id = c.id and c.source_system =  'ZX_ONE'
-                  """ + criA + """
+                 select a.country             as country,
+                        a.role_id             as roleId,
+                        a.role_name           as roleName,
+                        a.user_id             as userId,
+                        a.user_name           as userName,
+                        a.game_id             as gameId,
+                        a.game_name           as gameName,
+                        a.server_id           as serverId,
+                        a.server_name         as serverName,
+                        a.create_time         as createTime,
+                        a.role_level          as roleLevel,
+                        a.level_time          as levelTime,
+                        a.agent_id            as agentId,
+                        b.gs_id               as gsId,
+                        b.customer_service_id as customerServiceId,
+                        b.oper_user_id        as operUserId,
+                        c.pitcher_id          as pitcherId,
+                        d.ip,
+                        d.ip_count,
+                        d.user_count,
+                        d.role_count,
+                        d.user_role_count,
+                        d.role_user_ip_count
+                        from
+                      game_ads.ads_role_level_log a
+                          left join dm_game_order.t_role_operate b on a.user_id = b.user_id
+                     and a.role_id = b.role_id
+                     and a.server_id = b.server_id
+                     and a.game_id = b.game_id
+                          left join dm_game_order.t_pitcher_agent c on a.agent_id = c.id and c.source_system = 'ZX_ONE'
+                          left join game_ads.role_ip_monitor d on a.role_id = d.role_id
+                     and a.user_id = d.user_id
+                     and a.server_id = d.server_id
+                     and a.game_id = d.game_id
+                       """ + criA + """
                                      ) a
                 """;
     }