feat:聊天信息支持 文件、图片、语音发送,增加一键启停脚本

This commit is contained in:
bujinyuan
2026-04-20 11:53:27 +08:00
parent 1a5aac9998
commit 0c1540bdee
116 changed files with 20277 additions and 144 deletions

View File

@@ -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
View 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 }
]
}
}
```

View File

@@ -3,7 +3,7 @@
> 通用规范(认证方式、响应格式、错误码)见 [README.md](../README.md)
> 消息的实时收发(发送/撤回/标记已读/正在输入)通过 WebSocket 完成,见 [websocket.md](../websocket.md)
> 本文档中的接口用于会话管理和消息历史查询等非实时操作。
> **最后更新:** 2026-03-04Fix T19 已读详情群昵称 + Fix T20 免打扰 API 补全
> **最后更新:** 2026-03-03Phase 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] |
---