Quellcode durchsuchen

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

zhangxianyu vor 3 Tagen
Ursprung
Commit
6f4222e49a

+ 14 - 2
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/RoleManageController.java

@@ -2,6 +2,8 @@ package com.zanxiang.game.data.serve.controller;
 
 import com.zanxiang.erp.security.annotation.PreAuthorize;
 import com.zanxiang.game.data.serve.pojo.dto.*;
+import com.zanxiang.game.data.serve.pojo.vo.RoleChatDetailVO;
+import com.zanxiang.game.data.serve.pojo.vo.RoleChatVO;
 import com.zanxiang.game.data.serve.pojo.vo.RoleGameCountryVO;
 import com.zanxiang.game.data.serve.service.IRoleManageService;
 import com.zanxiang.game.data.serve.utils.Page;
@@ -158,8 +160,18 @@ public class RoleManageController {
         return sendMsgRpc.reSendMsgByResultId(resultId);
     }
 
+    @ApiOperation(value = "角色日维度的聊天数量统计列表")
+    @PreAuthorize(permissionKey = "roleManage:chat:listOfPage")
+    @PostMapping("/chatListOfPage")
+    public ResultVO<Page<RoleChatVO>> chatListOfPage(@RequestBody RoleChatParamDTO dto) {
+        return ResultVO.ok(roleManageService.chatListOfPage(dto));
+    }
 
-
-
+    @ApiOperation(value = "角色聊天详情")
+    @PreAuthorize(permissionKey = "roleManage:chatDetail:listOfPage")
+    @PostMapping("/chatDetailListOfPage")
+    public ResultVO<Page<RoleChatDetailVO>> chatDetail(@RequestBody RoleChatDetailParamDTO dto) {
+        return ResultVO.ok(roleManageService.chatDetail(dto));
+    }
 
 }

+ 31 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/RoleChatDetailParamDTO.java

@@ -0,0 +1,31 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+import com.zanxiang.module.web.pojo.BaseListDTO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+/**
+ * packageName com.zanxiang.game.data.serve.pojo.dto
+ *
+ * @author ZhangXianyu
+ * @date 2025/5/7
+ * @description TODO
+ */
+@Data
+public class RoleChatDetailParamDTO extends BaseListDTO {
+
+    @ApiModelProperty(value = "日期开始时间")
+    private LocalDate startDate;
+
+    @ApiModelProperty(value = "日期结束时间")
+    private LocalDate endDate;
+
+    @ApiModelProperty(value = "角色id")
+    private Long roleId;
+
+    private String sortFiled;
+
+    private String sortType;
+}

+ 44 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/RoleChatParamDTO.java

@@ -0,0 +1,44 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+import com.zanxiang.module.web.pojo.BaseListDTO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+/**
+ * packageName com.zanxiang.game.data.serve.pojo.dto
+ *
+ * @author ZhangXianyu
+ * @date 2025/5/7
+ * @description TODO
+ */
+@Data
+public class RoleChatParamDTO extends BaseListDTO {
+
+    @ApiModelProperty(value = "角色id")
+    private Long roleId;
+
+    @ApiModelProperty(value = "角色名称")
+    private String roleName;
+
+    @ApiModelProperty(value = "游戏id")
+    private Long superGameId;
+
+    @ApiModelProperty(value = "区服id")
+    private Long serverId;
+
+    @ApiModelProperty(value = "公会")
+    private String country;
+
+    @ApiModelProperty(value = "日期开始时间")
+    private LocalDate startDate;
+
+    @ApiModelProperty(value = "日期结束时间")
+    private LocalDate endDate;
+
+    private String sortFiled;
+
+    private String sortType;
+
+}

+ 35 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/RoleChatDetailVO.java

@@ -0,0 +1,35 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * packageName com.zanxiang.game.data.serve.pojo.vo
+ *
+ * @author ZhangXianyu
+ * @date 2025/5/7
+ * @description 角色聊天详情vo
+ */
+@Data
+public class RoleChatDetailVO {
+    @ApiModelProperty(value = "角色id")
+    private Long roleId;
+    @ApiModelProperty(value = "角色名称")
+    private String roleName;
+    @ApiModelProperty(value = "游戏id")
+    private Long superGameId;
+    @ApiModelProperty(value = "游戏名称")
+    private String superGameName;
+    @ApiModelProperty(value = "区服id")
+    private Long serverId;
+    @ApiModelProperty(value = "区服名称")
+    private String serverName;
+    @ApiModelProperty(value = "公会")
+    private String country;
+    @ApiModelProperty(value = "聊天日期")
+    private LocalDateTime chatTime;
+    @ApiModelProperty(value = "聊天内容")
+    private String content;
+}

+ 40 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/RoleChatVO.java

@@ -0,0 +1,40 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * packageName com.zanxiang.game.data.serve.pojo.vo
+ *
+ * @author ZhangXianyu
+ * @date 2025/5/7
+ * @description 角色聊天统计vo
+ */
+@Data
+public class RoleChatVO {
+
+    @ApiModelProperty(value = "角色id")
+    private Long roleId;
+    @ApiModelProperty(value = "角色名称")
+    private String roleName;
+    @ApiModelProperty(value = "日期")
+    private LocalDate dt;
+    @ApiModelProperty(value = "游戏id")
+    private Long superGameId;
+    @ApiModelProperty(value = "游戏名称")
+    private String superGameName;
+    @ApiModelProperty(value = "区服id")
+    private Long serverId;
+    @ApiModelProperty(value = "区服名称")
+    private String serverName;
+    @ApiModelProperty(value = "公会名称")
+    private String country;
+    @ApiModelProperty(value = "角色聊天总数")
+    private Long roleChatCount;
+    @ApiModelProperty(value = "最近聊天时间")
+    private LocalDateTime lastChatTime;
+
+}

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

@@ -1,6 +1,8 @@
 package com.zanxiang.game.data.serve.service;
 
 import com.zanxiang.game.data.serve.pojo.dto.*;
+import com.zanxiang.game.data.serve.pojo.vo.RoleChatDetailVO;
+import com.zanxiang.game.data.serve.pojo.vo.RoleChatVO;
 import com.zanxiang.game.data.serve.pojo.vo.RoleGameCountryVO;
 import com.zanxiang.game.module.base.pojo.vo.SendMsgResultVO;
 import com.zanxiang.game.module.base.pojo.vo.SendMsgVO;
@@ -126,4 +128,18 @@ public interface IRoleManageService {
      * @return
      */
     List<Map> suspectedRoleDetailList(RoleIpInfoParamDTO dto);
+
+    /**
+     * 角色日维度的聊天数量统计列表
+     * @param dto
+     * @return
+     */
+    Page<RoleChatVO> chatListOfPage(RoleChatParamDTO dto);
+
+    /**
+     * 角色聊天详情
+     * @param dto
+     * @return
+     */
+    Page<RoleChatDetailVO> chatDetail(RoleChatDetailParamDTO dto);
 }

+ 161 - 1
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/RoleManageServiceImpl.java

@@ -1,12 +1,16 @@
 package com.zanxiang.game.data.serve.service.impl;
 
 import com.alibaba.fastjson2.JSON;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.zanxiang.erp.base.ErpServer;
 import com.zanxiang.erp.base.rpc.ISysUserRpc;
 import com.zanxiang.erp.security.util.SecurityUtil;
 import com.zanxiang.game.data.serve.pojo.dto.*;
 import com.zanxiang.game.data.serve.pojo.enums.OrderByEnum;
+import com.zanxiang.game.data.serve.pojo.vo.RoleChatDetailVO;
+import com.zanxiang.game.data.serve.pojo.vo.RoleChatVO;
 import com.zanxiang.game.data.serve.pojo.vo.RoleGameCountryVO;
+import com.zanxiang.game.data.serve.pojo.vo.TencentCreativeDayVO;
 import com.zanxiang.game.data.serve.service.IRoleManageService;
 import com.zanxiang.game.data.serve.utils.Page;
 import com.zanxiang.game.module.base.ServerInfo;
@@ -1270,6 +1274,153 @@ public class RoleManageServiceImpl implements IRoleManageService {
 
     }
 
+    @Override
+    public Page<RoleChatVO> chatListOfPage(RoleChatParamDTO dto) {
+        Criteria criA = getSqlByQuery(dto);
+        //分页对象
+        Pager pager = dao.createPager(dto.getPageNum(), dto.getPageSize());
+        //查询总记录数
+        Sql countSql = Sqls.create(getChatListCountSql(criA));
+        countSql.setCallback(Sqls.callback.integer());
+        dao.execute(countSql);
+        pager.setRecordCount(countSql.getInt());
+        Criteria orderCri = Cnd.cri();
+        //主表添加排序条件
+        if (StringUtils.isBlank(dto.getSortType())) {
+            dto.setSortType(OrderByEnum.DESC.getOrderType());
+        }
+        if (StringUtils.isBlank(dto.getSortFiled())) {
+            orderCri.getOrderBy().orderBy("dt", dto.getSortType());
+        } else {
+            orderCri.getOrderBy().orderBy(dto.getSortFiled(), dto.getSortType());
+        }
+        //列表sql
+        String gameCountryRoleListSql = getChatListSql(criA, orderCri);
+        Sql sql = Sqls.create(gameCountryRoleListSql);
+        sql.setCallback(Sqls.callback.entities());
+        sql.setEntity(dao.getEntity(RoleChatVO.class));
+        sql.setPager(pager);
+        dao.execute(sql);
+        //查询结果
+        List<RoleChatVO> list = sql.getList(RoleChatVO.class);
+        return new Page<>(list, pager);
+    }
+
+    private String getChatListSql(Criteria criA, Criteria orderCri) {
+        return """
+                select 
+                role_id as role_id,
+                dt,
+                super_game_id as super_game_id,
+                server_id as server_id,
+                role_chat_count as role_chat_count,
+                last_chat_time as last_chat_time,
+                role_name as role_name,
+                country,
+                server_name as server_name,
+                super_game_name as super_game_name
+                from game_ads.ads_role_chat
+                """ + criA + orderCri;
+    }
+
+    private String getChatListCountSql(Criteria criA) {
+        return """
+                select count(1) from game_ads.ads_role_chat
+                """ + criA;
+    }
+
+    private Criteria getSqlByQuery(RoleChatParamDTO dto) {
+        Criteria criteria = Cnd.cri();
+        criteria.where().andEquals("source_system", "ZX_ONE");
+        if (dto.getRoleId() != null) {
+            criteria.where().andEquals("role_id", dto.getRoleId());
+        }
+        if (StringUtils.isNotEmpty(dto.getRoleName())) {
+            criteria.where().andLike("role_name", dto.getRoleName());
+        }
+        if (dto.getSuperGameId() != null) {
+            criteria.where().andEquals("super_game_id", dto.getSuperGameId());
+        }
+        if (dto.getServerId() != null) {
+            criteria.where().andEquals("server_id", dto.getServerId());
+        }
+        if (StringUtils.isNotEmpty(dto.getCountry())) {
+            criteria.where().andLike("country", dto.getCountry());
+        }
+        if (dto.getStartDate() != null && dto.getEndDate() != null) {
+            criteria.where().andBetween("dt", dto.getStartDate().atTime(LocalTime.MIN), dto.getEndDate().atTime(LocalTime.MAX));
+        }
+        return criteria;
+    }
+
+    @Override
+    public Page<RoleChatDetailVO> chatDetail(RoleChatDetailParamDTO dto) {
+        Criteria criA = getSqlByQuery(dto);
+        //分页对象
+        Pager pager = dao.createPager(dto.getPageNum(), dto.getPageSize());
+        //查询总记录数
+        Sql countSql = Sqls.create(getChatDetailListCountSql(criA));
+        countSql.setCallback(Sqls.callback.integer());
+        dao.execute(countSql);
+        pager.setRecordCount(countSql.getInt());
+        Criteria orderCri = Cnd.cri();
+        //主表添加排序条件
+        if (StringUtils.isBlank(dto.getSortType())) {
+            dto.setSortType(OrderByEnum.DESC.getOrderType());
+        }
+        if (StringUtils.isBlank(dto.getSortFiled())) {
+            orderCri.getOrderBy().orderBy("dt", dto.getSortType());
+        } else {
+            orderCri.getOrderBy().orderBy(dto.getSortFiled(), dto.getSortType());
+        }
+        //列表sql
+        String gameCountryRoleListSql = getChatDetailListSql(criA, orderCri);
+        Sql sql = Sqls.create(gameCountryRoleListSql);
+        sql.setCallback(Sqls.callback.entities());
+        sql.setEntity(dao.getEntity(RoleChatDetailVO.class));
+        sql.setPager(pager);
+        dao.execute(sql);
+        //查询结果
+        List<RoleChatDetailVO> list = sql.getList(RoleChatDetailVO.class);
+        return new Page<>(list, pager);
+    }
+
+    private String getChatDetailListSql(Criteria criA, Criteria orderCri) {
+        return """
+                select
+                       dt,
+                       supper_game_id as super_game_id,
+                       b.name as super_game_name,
+                       server_id as server_id,
+                       server_name as server_name,
+                       role_id as role_id,
+                       role_name as role_name,
+                       guild_name as country,
+                       chat_time as chat_time,
+                       content
+                from dm_game_order.t_game_user_chat a
+                left join dm_game_order.t_game_super b on a.source_system = b.source_system and a.supper_game_id = b.id
+                """ + criA + orderCri;
+    }
+
+    private String getChatDetailListCountSql(Criteria criA) {
+        return """
+                select count(1) from dm_game_order.t_game_user_chat a
+                """ + criA;
+    }
+
+    private Criteria getSqlByQuery(RoleChatDetailParamDTO dto) {
+        Criteria criteria = Cnd.cri();
+        criteria.where().andEquals("a.source_system", "ZX_ONE");
+        if (dto.getRoleId() != null) {
+            criteria.where().andEquals("a.role_id", dto.getRoleId());
+        }
+        if (dto.getStartDate() != null && dto.getEndDate() != null) {
+            criteria.where().andBetween("a.dt", dto.getStartDate().atTime(LocalTime.MIN), dto.getEndDate().atTime(LocalTime.MAX));
+        }
+        return criteria;
+    }
+
     private Criteria getUserDetailOrderSql(RoleIpInfoParamDTO dto) {
         Criteria criteria = Cnd.cri();
         //主表添加排序条件
@@ -2420,7 +2571,8 @@ public class RoleManageServiceImpl implements IRoleManageService {
                 		ara.role_total_amount as role_total_amount, -- 创角24小时内总充值金额
                 		ara.max_amount as max_amount, -- 创角24小时内单笔最大充值金额
                 		ara.min_amount as min_amount, -- 创角24小时内单笔最小充值金额
-                		ara.role_amount as role_amount -- 角色充值数组
+                		ara.role_amount as role_amount, -- 角色充值数组
+                		z.role_chat_count as role_chat_count -- 角色昨日聊天总数数据
                 	FROM
                 	(
                 		SELECT
@@ -2763,6 +2915,14 @@ public class RoleManageServiceImpl implements IRoleManageService {
                             pitcher_id as put_user_id
                         FROM dm_game_order.t_pitcher_agent
                     ) y ON x.agent_id = y.id AND x.source_system = y.source_system
+                    LEFT JOIN (
+                        SELECT
+                            role_chat_count,
+                            super_game_id,
+                            source_system
+                        FROM game_ads.ads_role_chat
+                        where dt = DATE_FORMAT(NOW() - INTERVAL 1 DAY, '%Y-%m-%d')
+                    ) z ON z.super_game_id = d.super_game_id and  z.source_system = d.source_system 
                 ) a
                 """ + criA;
     }