Files
open-im-server-deploy/docs/statistics-api.md
kim.dev.6789 e50142a3b9 复制项目
2026-01-14 22:16:44 +08:00

7.6 KiB
Raw Permalink Blame History

统计接口文档

接口列表

1. POST /statistics/user/register

用户注册统计

请求参数 (UserRegisterCountReq):

{
  "start": 0,  // int64 - 开始时间(毫秒时间戳)
  "end": 0     // int64 - 结束时间(毫秒时间戳)
}

响应参数 (UserRegisterCountResp):

{
  "total": 0,   // int64 - 总注册用户数
  "before": 0,  // int64 - 开始时间之前的注册用户数
  "count": []   // []map[string]int64 - 时间段内每日注册用户数统计
}

2. POST /statistics/user/active

活跃用户统计

请求参数 (GetActiveUserReq):

{
  "start": 0,        // int64 - 开始时间(毫秒时间戳)
  "end": 0,          // int64 - 结束时间(毫秒时间戳)
  "group": "",       // string - 群ID选填
  "ase": "",         // string - 排序方式(选填)
  "pagination": {    // Pagination - 分页参数
    "pageNumber": 1, // int32 - 页码从1开始
    "showNumber": 10 // int32 - 每页数量
  }
}

响应参数 (GetActiveUserResp):

{
  "msgCount": 0,   // int64 - 消息总数
  "userCount": 0,  // int64 - 活跃用户总数
  "dateCount": [], // []map[string]int64 - 每日活跃用户数统计
  "users": [       // []ActiveUser - 活跃用户列表
    {
      "user": {    // UserInfo - 用户信息
        "userID": "",
        "nickname": "",
        "faceURL": "",
        // ... 其他用户字段
      },
      "count": 0   // int64 - 该用户发送的消息数
    }
  ]
}

3. POST /statistics/group/create

群创建统计

请求参数 (GroupCreateCountReq):

{
  "start": 0,  // int64 - 开始时间(毫秒时间戳)
  "end": 0     // int64 - 结束时间(毫秒时间戳)
}

响应参数 (GroupCreateCountResp):

{
  "total": 0,   // int64 - 总创建群数
  "before": 0,  // int64 - 开始时间之前创建的群数
  "count": []   // []map[string]int64 - 时间段内每日创建群数统计
}

4. POST /statistics/group/active

活跃群统计

请求参数 (GetActiveGroupReq):

{
  "start": 0,        // int64 - 开始时间(毫秒时间戳)
  "end": 0,          // int64 - 结束时间(毫秒时间戳)
  "ase": "",         // string - 排序方式(选填)
  "pagination": {    // Pagination - 分页参数
    "pageNumber": 1, // int32 - 页码从1开始
    "showNumber": 10 // int32 - 每页数量
  }
}

响应参数 (GetActiveGroupResp):

{
  "msgCount": 0,    // int64 - 消息总数
  "groupCount": 0,  // int64 - 活跃群总数
  "dateCount": [],  // []map[string]int64 - 每日活跃群数统计
  "groups": [       // []ActiveGroup - 活跃群列表
    {
      "group": {    // GroupInfo - 群信息
        "groupID": "",
        "groupName": "",
        "faceURL": "",
        // ... 其他群字段
      },
      "count": 0    // int64 - 该群发送的消息数
    }
  ]
}

5. POST /statistics/online_user_count

在线人数统计

请求参数: 无

响应参数 (OnlineUserCountResp):

{
  "onlineCount": 0  // int64 - 当前在线用户数
}

6. POST /statistics/online_user_count_trend

在线人数走势统计

请求参数 (OnlineUserCountTrendReq):

{
  "startTime": 0,         // int64 - 统计开始时间毫秒时间戳为空时默认最近24小时
  "endTime": 0,           // int64 - 统计结束时间(毫秒时间戳),为空时默认当前时间
  "intervalMinutes": 15   // int32 - 统计间隔分钟仅支持15/30/60必填
}

响应参数 (OnlineUserCountTrendResp):

{
  "intervalMinutes": 15,  // int32 - 统计间隔(分钟)
  "points": [             // []OnlineUserCountTrendItem - 走势数据点
    {
      "timestamp": 0,     // int64 - 区间起始时间(毫秒时间戳)
      "onlineCount": 0    // int64 - 区间内平均在线人数
    }
  ]
}

7. POST /statistics/user_send_msg_count

用户发送消息总数统计

请求参数 (UserSendMsgCountReq): 无

响应参数 (UserSendMsgCountResp):

{
  "count24h": 0,  // int64 - 最近24小时发送消息总数
  "count7d": 0,   // int64 - 最近7天发送消息总数
  "count30d": 0   // int64 - 最近30天发送消息总数
}

8. POST /statistics/user_send_msg_count_trend

用户发送消息走势统计

请求参数 (UserSendMsgCountTrendReq):

{
  "userID": "",           // string - 发送者用户ID必填
  "chatType": 1,          // int32 - 聊天类型1-单聊2-群聊,必填
  "startTime": 0,         // int64 - 统计开始时间毫秒时间戳为空时默认最近24小时
  "endTime": 0,           // int64 - 统计结束时间(毫秒时间戳),为空时默认当前时间
  "intervalMinutes": 15   // int32 - 统计间隔分钟仅支持15/30/60必填
}

响应参数 (UserSendMsgCountTrendResp):

{
  "userID": "",           // string - 发送者用户ID
  "chatType": 1,          // int32 - 聊天类型1-单聊2-群聊
  "intervalMinutes": 15,  // int32 - 统计间隔(分钟)
  "points": [             // []UserSendMsgCountTrendItem - 走势数据点
    {
      "timestamp": 0,     // int64 - 区间起始时间(毫秒时间戳)
      "count": 0          // int64 - 区间内发送消息数
    }
  ]
}

9. POST /statistics/user_send_msg_query

用户发送消息查询

请求参数 (UserSendMsgQueryReq):

{
  "userID": "",      // string - 用户ID选填
  "startTime": 0,    // int64 - 开始时间(毫秒时间戳,选填)
  "endTime": 0,      // int64 - 结束时间(毫秒时间戳,选填)
  "content": "",     // string - 内容搜索关键词(选填)
  "pageNumber": 1,   // int32 - 页码从1开始默认1
  "showNumber": 50   // int32 - 每页条数默认50最大200
}

响应参数 (UserSendMsgQueryResp):

{
  "count": 0,        // int64 - 总记录数
  "pageNumber": 1,   // int32 - 当前页码
  "showNumber": 50,  // int32 - 每页条数
  "records": [       // []UserSendMsgQueryRecord - 消息记录列表
    {
      "msgID": "",           // string - 消息ID服务端消息ID
      "sendID": "",          // string - 发送者ID
      "senderName": "",      // string - 发送者昵称或名称
      "recvID": "",          // string - 接收者ID群聊为群ID
      "recvName": "",        // string - 接收者昵称或名称(群聊为群名称)
      "contentType": 0,      // int32 - 消息类型编号
      "contentTypeName": "", // string - 消息类型名称(如:文本消息、图片消息等)
      "sessionType": 0,      // int32 - 聊天类型编号
      "chatTypeName": "",    // string - 聊天类型名称(如:单聊、群聊、通知)
      "content": "",         // string - 消息内容
      "sendTime": 0          // int64 - 消息发送时间(毫秒时间戳)
    }
  ]
}

注意事项

  1. 权限要求: 所有统计接口都需要管理员权限(authverify.CheckAdmin
  2. 时间格式: 所有时间字段均为毫秒时间戳int64
  3. 统计间隔: 走势统计接口的 intervalMinutes 仅支持 15、30、60 分钟
  4. 分页参数:
    • pageNumber 从 1 开始
    • showNumber 默认值不同接口可能不同,最大值为 200
  5. 消息类型:
    • 文本消息、图片消息、语音消息、视频消息、文件消息、艾特消息、合并消息、名片消息、位置消息、自定义消息、撤回消息、Markdown消息等
  6. 聊天类型:
    • 单聊1、群聊2、通知