ソースを参照

feat:角色等级列表

zhangxianyu 2 ヶ月 前
コミット
424319f674

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

@@ -50,6 +50,16 @@ public class RoleManageController {
         return ResultVO.ok(roleManageService.getRoleCombatRanking(dto));
     }
 
+
+    @ApiOperation(value = "角色等级列表")
+    @PreAuthorize(permissionKey = "roleManage:level:listOfPage")
+    @PostMapping("/level/listOfPage")
+    public ResultVO<Page<Map>> levelListOfPage(@RequestBody RoleLevelParamDTO dto) {
+        return ResultVO.ok(roleManageService.levelListOfPage(dto));
+    }
+
+
+
     @ApiOperation(value = "创建发送消息任务")
     @PreAuthorize(permissionKey = "roleManage:sendMsgTask:create")
     @PostMapping("/sendMsgTask")

+ 56 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/RoleLevelParamDTO.java

@@ -0,0 +1,56 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+import com.zanxiang.game.data.serve.pojo.base.BasePage;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+  * @author ZhangXianyu
+  * @date 2025/2/20
+  * @description 角色等级参数DTO
+ */
+@Data
+public class RoleLevelParamDTO extends BasePage {
+
+   @ApiModelProperty(value = "游戏角色id")
+   private String roleId;
+
+   @ApiModelProperty(value = "角色名称")
+   private String roleName;
+
+   @ApiModelProperty(value = "游戏id")
+   private List<Long> gameId;
+
+   @ApiModelProperty(value = "游戏名称")
+   private String gameName;
+
+   @ApiModelProperty(value = "区服id")
+   private List<String> serverId;
+
+   @ApiModelProperty(value = "区服名称")
+   private String serverName;
+
+   @ApiModelProperty(value = "角色创建时间最小值")
+   private LocalDateTime createTimeMin;
+
+   @ApiModelProperty(value = "角色创建时间最大值")
+   private LocalDateTime createTimeMax;
+
+   @ApiModelProperty(value = "角色等级最小值")
+   private Long roleLevelMin;
+
+   @ApiModelProperty(value = "角色等级最大值")
+   private Long roleLevelMax;
+
+   @ApiModelProperty(value = "等级上报最小值")
+   private LocalDateTime levelTimeMin;
+
+   @ApiModelProperty(value = "等级上报最大值")
+   private LocalDateTime levelTimeMax;
+
+}

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

@@ -45,4 +45,10 @@ public interface IRoleManageService {
     Page<SendMsgResultVO> getSendMsgResultList(MsgTaskResultDTO msgTaskResultDto);
 
 
+    /**
+     * 角色等级列表
+     * @param dto
+     * @return
+     */
+    Page<Map> levelListOfPage(RoleLevelParamDTO dto);
 }

+ 104 - 9
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/RoleManageServiceImpl.java

@@ -1,5 +1,7 @@
 package com.zanxiang.game.data.serve.service.impl;
 
+import java.time.LocalDateTime;
+
 import com.alibaba.fastjson2.JSON;
 import com.zanxiang.erp.base.ErpServer;
 import com.zanxiang.erp.base.rpc.ISysUserRpc;
@@ -369,7 +371,7 @@ public class RoleManageServiceImpl implements IRoleManageService {
             //客户手机号
             criA.where().andEquals("user_phone", dto.getPhone());
         }
-        if(dto.getUserPhoneStatus()!=null){
+        if (dto.getUserPhoneStatus() != null) {
             //客服手机号绑定状态
             criA.where().andEquals("user_phone_status", dto.getUserPhoneStatus());
         }
@@ -440,17 +442,17 @@ public class RoleManageServiceImpl implements IRoleManageService {
             criA.where().andBetween("DATE(role_last_pay_time)", dto.getRoleLastPayTimeMin(), dto.getRoleLastPayTimeMax());
         }
 
-        if (StringUtils.isNotBlank(dto.getIpCity())){
-            criA.where().andEquals("ip_city",dto.getIpCity());
+        if (StringUtils.isNotBlank(dto.getIpCity())) {
+            criA.where().andEquals("ip_city", dto.getIpCity());
         }
-        if(StringUtils.isNotBlank(dto.getIpProv())){
-            criA.where().andEquals("ip_prov",dto.getIpProv());
+        if (StringUtils.isNotBlank(dto.getIpProv())) {
+            criA.where().andEquals("ip_prov", dto.getIpProv());
         }
-        if (StringUtils.isNotBlank(dto.getLoginIpCity())){
-            criA.where().andEquals("login_ip_city",dto.getLoginIpCity());
+        if (StringUtils.isNotBlank(dto.getLoginIpCity())) {
+            criA.where().andEquals("login_ip_city", dto.getLoginIpCity());
         }
-        if(StringUtils.isNotBlank(dto.getLoginIpProv())){
-            criA.where().andEquals("login_ip_prov",dto.getLoginIpProv());
+        if (StringUtils.isNotBlank(dto.getLoginIpProv())) {
+            criA.where().andEquals("login_ip_prov", dto.getLoginIpProv());
         }
         return criA;
     }
@@ -906,6 +908,99 @@ public class RoleManageServiceImpl implements IRoleManageService {
         }
     }
 
+    @Override
+    public Page<Map> levelListOfPage(RoleLevelParamDTO dto) {
+        //创建查询条件
+        Criteria criA = getSqlByQuery(dto);
+        //分页对象
+        Pager pager = dao.createPager(dto.getPageNum(), dto.getPageSize());
+        //查询总记录数
+        Sql countSql = Sqls.create(getLevelListCountSql(criA));
+        countSql.setCallback(Sqls.callback.integer());
+        dao.execute(countSql);
+        pager.setRecordCount(countSql.getInt());
+        //列表sql
+        String levelListSql = getLevelListSql(criA);
+        Sql sql = Sqls.create(levelListSql);
+        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 getSqlByQuery(RoleLevelParamDTO dto) {
+        Criteria criA = Cnd.cri();
+        if (StringUtils.isNotEmpty(dto.getServerName())) {
+            //区服名称
+            criA.where().andLike("server_name", dto.getServerName());
+        }
+        if(CollectionUtils.isNotEmpty(dto.getServerId())){
+            //区服id
+            criA.where().andInStrList("server_id", dto.getServerId());
+        }
+        if (StringUtils.isNotEmpty(dto.getGameName())) {
+            //游戏名称
+            criA.where().andLike("game_name", dto.getGameName());
+        }
+        if(CollectionUtils.isNotEmpty(dto.getGameId())){
+            //游戏id
+            criA.where().andInList("game_id", dto.getGameId());
+        }
+        if (StringUtils.isNotEmpty(dto.getRoleId())) {
+            //角色id
+            criA.where().andEquals("role_id", dto.getRoleId());
+        }
+        if (StringUtils.isNotEmpty(dto.getRoleName())) {
+            //角色名称
+            criA.where().andLike("role_name", dto.getRoleName());
+        }
+        //角色等级区间筛选
+        if (dto.getRoleLevelMin() != null) {
+            criA.where().andGTE("role_level", dto.getRoleLevelMin());
+        }
+        if (dto.getRoleLevelMax() != null) {
+            criA.where().andLTE("role_level", dto.getRoleLevelMax());
+        }
+        //角色创建时间
+        if (dto.getCreateTimeMin() != null && dto.getCreateTimeMax() != null) {
+            criA.where().andBetween("create_time", dto.getCreateTimeMin(), dto.getCreateTimeMax());
+        }
+        //等级上报时间
+        if (dto.getLevelTimeMin() != null && dto.getLevelTimeMax() != null) {
+            criA.where().andBetween("level_time", dto.getLevelTimeMin(), dto.getLevelTimeMax());
+        }
+
+        return criA;
+    }
+
+    private String getLevelListSql(Criteria criA) {
+        return """
+                select
+                    role_id,
+                    user_id,
+                    game_id,
+                    role_level,
+                    server_id,
+                    role_name,
+                    role_vip,
+                    create_time,
+                    level_time,
+                    server_name,
+                    game_name
+                    from ads_role_level_log
+                """ + criA;
+    }
+
+    private String getLevelListCountSql(Criteria criA) {
+        return """
+                select
+                    count(1)
+                    from ads_role_level_log
+                """ + criA;
+    }
+
 
     /**
      * 补充查询发送消息任务结果sql