package cn.iocoder.yudao.module.im.service.statistics; import java.time.LocalDateTime; import java.util.Map; /** * IM 数据看板 Service 接口 *

* 仅服务于 manager 后台统计页,独立于业务 Service,避免污染。 * 返回的均为聚合后的简单结构,由 Controller 负责 VO 装配与昵称回填。 * * @author 芋道源码 */ public interface ImStatisticsManagerService { // ==================== 用户 ==================== /** * 获取用户总数 */ Long getTotalUserCount(); /** * 获取区间内新增用户数 */ Long getNewUserCount(LocalDateTime beginTime, LocalDateTime endTime); /** * 获取区间内活跃用户数(私聊+群聊去重) */ Long getActiveUserCount(LocalDateTime beginTime, LocalDateTime endTime); /** * 获取区间内每日新增用户数 Map(key 为 yyyy-MM-dd 日期) */ Map getNewUserDailyCountMap(LocalDateTime beginTime, LocalDateTime endTime); /** * 获取区间内每日活跃用户数 Map */ Map getActiveUserDailyCountMap(LocalDateTime beginTime, LocalDateTime endTime); // ==================== 群 ==================== /** * 获取群总数 */ Long getTotalGroupCount(); /** * 获取区间内新建群数 */ Long getNewGroupCount(LocalDateTime beginTime, LocalDateTime endTime); /** * 获取群规模分布 Map(key 为分桶名) */ Map getGroupSizeCountMap(); // ==================== 消息 ==================== /** * 获取区间内私聊消息数 */ Long getPrivateMessageCount(LocalDateTime beginTime, LocalDateTime endTime); /** * 获取区间内群聊消息数 */ Long getGroupMessageCount(LocalDateTime beginTime, LocalDateTime endTime); /** * 获取区间内每日私聊消息数 Map */ Map getPrivateMessageDailyCountMap(LocalDateTime beginTime, LocalDateTime endTime); /** * 获取区间内每日群聊消息数 Map */ Map getGroupMessageDailyCountMap(LocalDateTime beginTime, LocalDateTime endTime); /** * 获取区间内内容类型分布 Map(key 为消息类型) */ Map getMessageTypeCountMap(LocalDateTime beginTime, LocalDateTime endTime); /** * 获取区间内 TOP 发送者 Map(key 为 userId,value 为消息数;按消息数倒序) */ Map getTopSenderCountMap(LocalDateTime beginTime, LocalDateTime endTime, int limit); }