Files
EchoChat/docs/api/admin/user.md
bujinyuan 4d03215fe4 feat: Phase 1 完成 — 基础设施 + 用户认证 + 管理端 + 端到端验证
Phase 1 (基础设施与用户认证) 全部 11 个 Task 开发完成:

后端 (Go):
- Auth 模块: 注册/登录/JWT(有状态)/Profile/密码修改
- Admin 模块: 用户列表/详情/禁用/启用/角色分配/创建用户
- 中间件: JWT认证 + RBAC角色权限 + 请求日志 + CORS + Panic恢复
- Dockerfile 多阶段构建 + Docker Compose 全栈部署

前台 (uni-app):
- 登录/注册页面 + 自定义 TabBar + 个人中心
- 请求封装 + 状态管理 (Pinia)

管理端 (Vue 3 + Element Plus):
- 登录/仪表盘/用户列表/用户详情
- Axios 封装 + 路由守卫 + Pinia 状态管理

验证:
- 全流程 API 端到端测试通过
- Playwright 页面自动化验证通过
- code-reviewer 代码审查通过

Made-with: Cursor
2026-03-02 11:31:24 +08:00

160 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 管理端 — 用户管理 API
> 通用规范(认证方式、响应格式、错误码)见 [README.md](../README.md)
> 以下所有接口均需要 **JWT 认证 + admin/super_admin 角色**
---
## 接口列表
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| GET | /api/v1/admin/users | admin | 获取用户列表 |
| GET | /api/v1/admin/users/:id | admin | 获取用户详情 |
| PUT | /api/v1/admin/users/:id/status | admin | 更新用户状态 |
| PUT | /api/v1/admin/users/:id/role | super_admin | 分配用户角色 |
| POST | /api/v1/admin/users | admin | 管理员创建用户 |
| GET | /api/v1/admin/users/:id/meetings | admin | 获取用户会议记录 |
---
## 1. 获取用户列表
`GET /api/v1/admin/users`
**权限:** admin
**查询参数:**
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|------|------|------|--------|------|
| page | int | 是 | - | 页码(从 1 开始) |
| page_size | int | 是 | - | 每页数量1-100 |
| keyword | string | 否 | 无 | 搜索关键词(模糊匹配用户名或邮箱) |
| status | int | 否 | 无 | 按状态筛选1=正常2=禁用3=注销 |
**成功响应:**
```json
{
"code": 0,
"message": "success",
"data": {
"total": 100,
"list": [
{
"id": 1,
"username": "zhangsan",
"email": "zhangsan@example.com",
"nickname": "张三",
"avatar": "",
"gender": 1,
"phone": "13800138000",
"status": 1,
"status_text": "正常",
"roles": ["user"],
"last_login_at": "2026-02-27 10:00:00",
"last_login_ip": "192.168.1.100",
"created_at": "2026-02-20 08:00:00",
"updated_at": "2026-02-27 10:00:00"
}
]
}
}
```
---
## 2. 获取用户详情
`GET /api/v1/admin/users/:id`
**权限:** admin
**成功响应:**
```json
{
"code": 0,
"message": "success",
"data": {
"id": 1,
"username": "zhangsan",
"email": "zhangsan@example.com",
"nickname": "张三",
"avatar": "",
"gender": 1,
"phone": "13800138000",
"status": 1,
"status_text": "正常",
"roles": ["user"],
"last_login_at": "2026-02-27 10:00:00",
"last_login_ip": "192.168.1.100",
"created_at": "2026-02-20 08:00:00",
"updated_at": "2026-02-27 10:00:00"
}
}
```
---
## 3. 更新用户状态
`PUT /api/v1/admin/users/:id/status`
**权限:** admin
**请求参数:**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| status | int | 是 | 目标状态1=正常启用2=禁用 |
**说明:** 禁用用户后,该用户的所有活跃 Token 将被清除,正在进行的 WebSocket 连接将被断开。
---
## 4. 分配用户角色
`PUT /api/v1/admin/users/:id/role`
**权限:** admin / super_admin
**请求参数:**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| role_code | string | 是 | 角色代码user / admin / super_admin |
---
## 5. 管理员创建用户
`POST /api/v1/admin/users`
**权限:** admin
**请求参数:**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| username | string | 是 | 用户名3-50 字符 |
| email | string | 是 | 邮箱地址 |
| password | string | 是 | 初始密码6-50 字符 |
| nickname | string | 否 | 昵称(默认使用用户名) |
| role_code | string | 否 | 指定角色,默认为 user |
---
## 6. 获取用户会议记录
`GET /api/v1/admin/users/:id/meetings`
**权限:** admin
**查询参数:**
| 参数 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| status | string | 无 | ongoing=进行中upcoming=即将开始ended=已结束 |
| page | int | 1 | 页码 |
| page_size | int | 20 | 每页数量 |