Browse Source

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

bilingfeng 1 month ago
parent
commit
d19c0bd08e

+ 8 - 1
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/RoleManageController.java

@@ -75,12 +75,19 @@ public class RoleManageController {
     }
 
     @ApiOperation(value = "查询角色详情列表")
-//    @PreAuthorize(permissionKey = "roleManage:ipRoleDetail:listOfPage")
+    @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));
+    }
+
     @ApiOperation(value = "游戏帮派列表")
     @PreAuthorize(permissionKey = "roleManage:gameCountry:list")
     @PostMapping("/gameCountryList")

+ 4 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/RoleGameCountryParamDTO.java

@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
 import java.util.List;
 
@@ -24,6 +25,9 @@ public class RoleGameCountryParamDTO extends BasePage {
    @NotEmpty(message = "区服不能为空")
    private String serverId;
 
+   @ApiModelProperty(value = "等级类型 0小于13,1大于13")
+   private Long countryLevel;
+
    private String sortFiled;
 
    private String sortType;

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

@@ -15,9 +15,13 @@ import java.util.List;
 @Data
 public class RoleIpInfoParamDTO extends BasePage {
 
+
    @ApiModelProperty(value = "玩家id")
    private Long userId;
 
+   @ApiModelProperty(value = "排除玩家id")
+   private Long excludeUserId;
+
    @ApiModelProperty(value = "玩家名称")
    private String userName;
 

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

@@ -91,4 +91,11 @@ public interface IRoleManageService {
      * @return
      */
     Page<Map> roleDetailListOfPage(RoleIpInfoParamDTO dto);
+
+    /**
+     * 查询玩家详情列表
+     * @param dto
+     * @return
+     */
+    Page<Map> userDetailListOfPage(RoleIpInfoParamDTO dto);
 }

+ 169 - 6
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/RoleManageServiceImpl.java

@@ -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