gaoluyang
2026-06-24 c0cb161bb52ce0fbdce5c66ec391d107c75e2452
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import { requestClient } from '#/api/request';
 
export namespace ImManagerStatisticsApi {
  /** 统计概览 */
  export interface Overview {
    totalUser: number;
    newUserToday: number;
    totalGroup: number;
    newGroupToday: number;
    activeUserDaily: number;
    activeUserWeekly: number;
    activeUserMonthly: number;
    privateMessageToday: number;
    groupMessageToday: number;
    privateMessageYesterday: number;
    groupMessageYesterday: number;
  }
 
  /** 趋势数据 */
  export interface Trend {
    dates: string[];
    series: Record<string, number[]>;
  }
 
  /** 消息类型分布 */
  export interface MessageType {
    type: number; // 参见 ImContentTypeEnum 枚举类,由前端按 DICT_TYPE.IM_CONTENT_TYPE 翻译
    value: number;
  }
 
  /** 群规模分布 */
  export interface GroupSize {
    range: string;
    count: number;
  }
 
  /** 消息发送排行 */
  export interface TopSender {
    userId: number;
    nickname: string;
    messageCount: number;
  }
}
 
 
/** 获得 KPI 概览 */
export function getStatisticsOverview() {
  return requestClient.get<ImManagerStatisticsApi.Overview>(
    '/im/manager/statistics/overview',
  );
}
 
/** 获得消息趋势(私聊 + 群聊双线) */
export function getMessageTrend(days: number) {
  return requestClient.get<ImManagerStatisticsApi.Trend>(
    '/im/manager/statistics/message-trend',
    { params: { days } },
  );
}
 
/** 获得用户趋势(新增注册 + 日活双线) */
export function getUserTrend(days: number) {
  return requestClient.get<ImManagerStatisticsApi.Trend>(
    '/im/manager/statistics/user-trend',
    { params: { days } },
  );
}
 
/** 获得内容类型分布(最近 30 天) */
export function getMessageTypeDistribution() {
  return requestClient.get<ImManagerStatisticsApi.MessageType[]>(
    '/im/manager/statistics/message-type-distribution',
  );
}
 
/** 获得群规模分布 */
export function getGroupSizeDistribution() {
  return requestClient.get<ImManagerStatisticsApi.GroupSize[]>(
    '/im/manager/statistics/group-size-distribution',
  );
}
 
/** 获得消息 TOP 发送者(最近 30 天) */
export function getTopSenders() {
  return requestClient.get<ImManagerStatisticsApi.TopSender[]>(
    '/im/manager/statistics/top-senders',
  );
}