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

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