Files
EchoChat/docs/api/admin/user.md
bujinyuan fa6f1e5c58 feat: 角色等级体系与权限管控实施
- 数据库:auth_roles 表新增 level 字段(1=超管, 10=管理员, 100=普通用户)
- 后端:新增 GetAllRoles/GetUserMaxLevel/SetUserRoles/FindByCodeList DAO 方法
- 后端:SetRolesRequest 替换 AssignRoleRequest,AdminUserInfo.Roles 改为 []RoleInfo
- 后端:所有管理操作(禁用/启用/角色分配/创建用户)强制层级权限校验
- 后端:PUT /users/:id/roles(批量设置角色)+ GET /roles(角色列表)
- 前端:角色管理改为 Checkbox Group 多选,高等级角色禁用
- 前端:禁用/启用按钮受角色层级约束,列表页操作按钮权限管控
- 前端:创建用户对话框角色选项根据操作者等级动态过滤
- 文档:API 文档、设计方案、集成规范、进度文档同步更新

Made-with: Cursor
2026-03-02 15:40:02 +08:00

253 lines
6.5 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/roles | admin / super_admin | 批量设置用户角色(受角色等级约束) |
| POST | /api/v1/admin/users | admin | 管理员创建用户 |
| GET | /api/v1/admin/roles | admin | 获取所有角色列表(含 level |
| GET | /api/v1/admin/users/:id/meetings | admin | 获取用户会议记录Phase 3 实现) |
---
## 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": [
{ "code": "user", "name": "普通用户", "level": 100 }
],
"max_level": 100,
"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": [
{ "code": "user", "name": "普通用户", "level": 100 }
],
"max_level": 100,
"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 将被清除
- 不能禁用自己的账号(返回 400
- 操作者权限等级必须高于目标用户level 数值更小),否则返回 403
- 禁用后用户尝试登录将返回 403
**成功响应:**
```json
{
"code": 0,
"message": "success",
"trace_id": "...",
"time": "2026-03-02 11:12:44"
}
```
---
## 4. 批量设置用户角色
`PUT /api/v1/admin/users/:id/roles`
**权限:** admin / super_admin
**请求参数:**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| role_codes | string[] | 是 | 角色代码列表,如 `["user", "admin"]` |
**权限管控规则:**
- 操作者权限等级level必须严格高于目标用户数值更小否则返回 403
- 不能分配等级高于或等于操作者自身的角色,否则返回 403
- 角色列表为全量覆盖(先清除再设置)
- 注:`super_admin` 角色level=1不可通过 API 分配(任何人的 level 都 >= 1超管只能通过数据库直接创建
**成功响应:**
```json
{
"code": 0,
"message": "success"
}
```
**错误响应:**
- 403`权限不足,无法操作更高等级的用户``不能分配高于自身等级的角色`
---
## 5. 获取所有角色列表
`GET /api/v1/admin/roles`
**权限:** admin
**成功响应:**
```json
{
"code": 0,
"message": "success",
"data": [
{ "code": "super_admin", "name": "超级管理员", "level": 1 },
{ "code": "admin", "name": "管理员", "level": 10 },
{ "code": "user", "name": "普通用户", "level": 100 }
]
}
```
---
## 6. 管理员创建用户
`POST /api/v1/admin/users`
**权限:** admin
**请求参数:**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| username | string | 是 | 用户名3-50 字符 |
| email | string | 是 | 邮箱地址 |
| password | string | 是 | 初始密码6-50 字符 |
| nickname | string | 否 | 昵称(默认使用用户名) |
| role_code | string | 否 | 指定角色,默认为 user |
**权限管控规则:**
- 不能为新用户分配等级高于或等于操作者自身的角色,否则返回 403
-adminlevel=10只能分配 level > 10 的角色(如 user不能分配 admin 或 super_admin
**错误响应:**
- 400`用户名或邮箱已被注册` / `无效的角色代码`
- 403`不能分配高于自身等级的角色`
**成功响应:**
```json
{
"code": 0,
"message": "success",
"data": {
"id": 6,
"username": "created_by_admin",
"email": "admin_created@example.com",
"nickname": "管理员创建",
"avatar": "",
"gender": 0,
"status": 1,
"status_text": "正常",
"roles": [
{ "code": "user", "name": "普通用户", "level": 100 }
],
"max_level": 100,
"created_at": "2026-03-02 11:12:33",
"updated_at": "2026-03-02 11:12:33"
},
"trace_id": "...",
"time": "2026-03-02 11:12:33"
}
```
---
## 7. 获取用户会议记录
`GET /api/v1/admin/users/:id/meetings`
**权限:** admin
**查询参数:**
| 参数 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| status | string | 无 | ongoing=进行中upcoming=即将开始ended=已结束 |
| page | int | 1 | 页码 |
| page_size | int | 20 | 每页数量 |