feat:聊天信息支持 文件、图片、语音发送,增加一键启停脚本
This commit is contained in:
@@ -29,6 +29,7 @@
|
||||
| [admin/online.md](admin/online.md) | 在线监控 | ✅ Phase 2a | 在线用户列表、在线用户计数 |
|
||||
| [admin/contact.md](admin/contact.md) | 好友关系管理 | ✅ Phase 2a | 好友关系列表(分页)、管理员解除好友关系 |
|
||||
| [admin/group.md](admin/group.md) | 群聊管理 | ✅ Phase 2c | 群列表/详情、管理员解散群聊 |
|
||||
| [admin/message.md](admin/message.md) | 消息管理 | ✅ Phase 2d | 消息列表/详情/撤回/删除、消息统计(5 个 API) |
|
||||
| [admin/meeting.md](admin/meeting.md) | 会议管理 | 📋 后续 | 会议列表/详情、强制结束、会议统计 |
|
||||
| [admin/system.md](admin/system.md) | 系统管理 | 📋 待定 | 仪表盘数据、操作日志、系统配置 |
|
||||
|
||||
@@ -206,6 +207,7 @@ docs/api/
|
||||
│ ├── online.md # 在线监控 ✅ Phase 2a
|
||||
│ ├── contact.md # 好友关系管理 ✅ Phase 2a
|
||||
│ ├── group.md # 群聊管理(3 个 API) ✅ Phase 2c
|
||||
│ ├── message.md # 消息管理(5 个 API) ✅ Phase 2d
|
||||
│ ├── meeting.md # 会议管理 📋 后续
|
||||
│ └── system.md # 系统管理 📋 待定
|
||||
└── websocket.md # WebSocket 全量事件协议 ✅ Phase 2a/2b/2c
|
||||
|
||||
162
docs/api/admin/message.md
Normal file
162
docs/api/admin/message.md
Normal file
@@ -0,0 +1,162 @@
|
||||
# 管理端消息管理 API
|
||||
|
||||
> **最后更新**:2026-03-03
|
||||
> **阶段**:Phase 2d
|
||||
|
||||
---
|
||||
|
||||
## 接口列表
|
||||
|
||||
| 方法 | 路径 | 描述 | 认证 |
|
||||
|------|------|------|------|
|
||||
| GET | /api/v1/admin/messages | 消息列表(分页+多条件筛选) | JWT + admin |
|
||||
| GET | /api/v1/admin/messages/:id | 消息详情 | JWT + admin |
|
||||
| DELETE | /api/v1/admin/messages/:id | 删除消息(软删除) | JWT + admin |
|
||||
| PUT | /api/v1/admin/messages/:id/recall | 撤回消息 | JWT + admin |
|
||||
| GET | /api/v1/admin/messages/stats | 消息统计 | JWT + admin |
|
||||
|
||||
---
|
||||
|
||||
## GET /api/v1/admin/messages
|
||||
|
||||
获取消息列表(分页+多条件筛选)。
|
||||
|
||||
### 请求参数(Query)
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| page | int | 否 | 页码(默认 1) |
|
||||
| page_size | int | 否 | 每页条数(默认 20,最大 100) |
|
||||
| keyword | string | 否 | 搜索关键词(模糊匹配消息内容) |
|
||||
| type | int | 否 | 消息类型:1=文本 / 2=图片 / 3=语音 / 5=文件 / 10=系统 |
|
||||
| sender_id | int64 | 否 | 发送者 ID |
|
||||
| conversation_id | int64 | 否 | 会话 ID |
|
||||
| status | int | 否 | 消息状态:1=正常 / 2=已撤回 / 3=已删除 |
|
||||
| start_time | string | 否 | 开始日期(YYYY-MM-DD) |
|
||||
| end_time | string | 否 | 结束日期(YYYY-MM-DD) |
|
||||
|
||||
### 响应
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "success",
|
||||
"data": {
|
||||
"total": 156,
|
||||
"list": [
|
||||
{
|
||||
"id": 1,
|
||||
"conversation_id": 5,
|
||||
"sender_id": 10,
|
||||
"sender_nickname": "张三",
|
||||
"sender_avatar": "https://...",
|
||||
"type": 1,
|
||||
"type_label": "文本",
|
||||
"content": "你好",
|
||||
"extra": null,
|
||||
"status": 1,
|
||||
"status_label": "正常",
|
||||
"created_at": "2026-03-03 14:30:00"
|
||||
}
|
||||
],
|
||||
"page": 1,
|
||||
"page_size": 20
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## GET /api/v1/admin/messages/:id
|
||||
|
||||
获取消息详情。
|
||||
|
||||
### 响应
|
||||
|
||||
同列表中的单条消息对象。
|
||||
|
||||
---
|
||||
|
||||
## DELETE /api/v1/admin/messages/:id
|
||||
|
||||
删除消息(软删除,状态改为 3=已删除)。
|
||||
|
||||
### 响应
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "success",
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## PUT /api/v1/admin/messages/:id/recall
|
||||
|
||||
管理员撤回消息。撤回后会通过 WebSocket 推送 `im.message.recalled` 事件给该会话的所有在线成员。
|
||||
|
||||
### 响应
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "success",
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
### WS 推送事件
|
||||
|
||||
```json
|
||||
{
|
||||
"event": "im.message.recalled",
|
||||
"data": {
|
||||
"message_id": 123,
|
||||
"conversation_id": 5,
|
||||
"operator_id": 0,
|
||||
"sender_id": 10,
|
||||
"recall_text": "管理员撤回了一条消息"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## GET /api/v1/admin/messages/stats
|
||||
|
||||
获取消息统计数据。
|
||||
|
||||
### 请求参数(Query)
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| days | int | 否 | 统计天数(默认 7,最大 90) |
|
||||
|
||||
### 响应
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "success",
|
||||
"data": {
|
||||
"total_count": 5680,
|
||||
"today_count": 120,
|
||||
"type_distribution": [
|
||||
{ "type": 1, "label": "文本", "count": 4500 },
|
||||
{ "type": 2, "label": "图片", "count": 800 }
|
||||
],
|
||||
"daily_trend": [
|
||||
{ "date": "2026-02-25", "count": 150 },
|
||||
{ "date": "2026-02-26", "count": 200 }
|
||||
],
|
||||
"active_users": [
|
||||
{ "user_id": 10, "nickname": "张三", "count": 500 }
|
||||
],
|
||||
"active_groups": [
|
||||
{ "group_id": 1, "name": "技术交流群", "count": 300 }
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -3,7 +3,7 @@
|
||||
> 通用规范(认证方式、响应格式、错误码)见 [README.md](../README.md)
|
||||
> 消息的实时收发(发送/撤回/标记已读/正在输入)通过 WebSocket 完成,见 [websocket.md](../websocket.md)
|
||||
> 本文档中的接口用于会话管理和消息历史查询等非实时操作。
|
||||
> **最后更新:** 2026-03-04(Fix T19 已读详情群昵称 + Fix T20 免打扰 API 补全)
|
||||
> **最后更新:** 2026-03-03(Phase 2d 文件上传 API 新增)
|
||||
|
||||
---
|
||||
|
||||
@@ -20,6 +20,9 @@
|
||||
| GET | /api/v1/im/messages/search | 需认证 | 全局消息搜索 |
|
||||
| GET | /api/v1/im/unread | 需认证 | 获取全局未读消息总数 |
|
||||
| GET | /api/v1/im/messages/:id/reads | 需认证 | 获取消息已读详情 |
|
||||
| POST | /api/v1/upload/image | 需认证 | 图片上传(含缩略图生成)[Phase 2d] |
|
||||
| POST | /api/v1/upload/voice | 需认证 | 语音上传(含时长校验)[Phase 2d] |
|
||||
| POST | /api/v1/upload | 需认证 | 通用文件上传(最大 50MB)[Phase 2d] |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user