Skip to content

用户管理模块开发文档

迭代编号: sprint-1
模块: 用户管理模块
状态: ✅ 已完成


开发任务

  • [√] 用户列表页面
  • [√] 用户列表API
  • [√] 用户创建页面
  • [√] 用户创建API
  • [√] 用户编辑功能
  • [√] 用户状态管理
  • [√] 用户导入导出功能

技术方案

架构设计

┌─────────────────────────────────────────────────────────────┐
│                        用户管理模块                          │
├─────────────────┬─────────────────┬─────────────────────────┤
│   用户列表页面   │   用户表单页面   │      导入导出功能       │
│   (列表/搜索)   │   (创建/编辑)   │    (Excel处理)         │
└────────┬────────┴────────┬────────┴──────────┬──────────────┘
         │                 │                   │
         └─────────────────┼───────────────────┘

              ┌────────────▼────────────┐
              │    用户管理API (CRUD)    │
              │  /v1/sys/user/*          │
              └────────────┬────────────┘

         ┌─────────────────┼─────────────────┐
         │                 │                 │
         ▼                 ▼                 ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│   用户表(sys_user)│ │  角色关联表      │ │   部门关联表     │
│                 │ │(sys_user_role)  │ │(sys_user_dept)  │
└─────────────────┘ └─────────────────┘ └─────────────────┘

数据模型

用户表 (sys_user)

字段名类型说明
idVARCHAR(32)主键
usernameVARCHAR(50)用户名,唯一
passwordVARCHAR(100)密码(加密存储)
nicknameVARCHAR(50)昵称
emailVARCHAR(100)邮箱
phoneVARCHAR(20)手机号
avatarVARCHAR(255)头像URL
statusTINYINT状态:0-禁用,1-启用
genderTINYINT性别:0-未知,1-男,2-女
dept_idVARCHAR(32)部门ID
create_timeDATETIME创建时间
update_timeDATETIME更新时间

功能特性

  1. 列表查询

    • 支持分页查询
    • 支持多条件筛选(用户名、昵称、状态、部门)
    • 支持关键字搜索
    • 支持排序(创建时间、用户名)
  2. 用户创建

    • 表单验证(用户名唯一性、邮箱格式、手机号格式)
    • 默认密码生成
    • 角色分配
  3. 用户编辑

    • 支持修改基本信息
    • 支持重置密码
    • 支持调整角色
  4. 用户状态

    • 启用/禁用切换
    • 批量启用/禁用
  5. 导入导出

    • 支持Excel导入(带模板下载)
    • 支持Excel导出(支持选中导出)

接口定义

1. 获取用户列表

请求

http
GET /v1/sys/user/list?page=1&pageSize=10&keyword=admin&status=1&deptId=1
Authorization: Bearer {accessToken}

响应

json
{
  "code": 200,
  "message": "获取成功",
  "data": {
    "list": [
      {
        "id": "1",
        "username": "admin",
        "nickname": "管理员",
        "email": "admin@example.com",
        "phone": "13800138000",
        "avatar": "https://...",
        "status": 1,
        "gender": 1,
        "deptId": "1",
        "deptName": "技术部",
        "roleIds": ["1", "2"],
        "roleNames": ["超级管理员", "系统管理员"],
        "createTime": "2026-03-27 10:00:00"
      }
    ],
    "pagination": {
      "page": 1,
      "pageSize": 10,
      "total": 100,
      "totalPages": 10
    }
  }
}

2. 创建用户

请求

http
POST /v1/sys/user
Content-Type: application/json
Authorization: Bearer {accessToken}

{
  "username": "zhangsan",
  "nickname": "张三",
  "email": "zhangsan@example.com",
  "phone": "13800138001",
  "gender": 1,
  "deptId": "2",
  "roleIds": ["3"],
  "status": 1
}

响应

json
{
  "code": 200,
  "message": "创建成功",
  "data": {
    "id": "1001",
    "username": "zhangsan",
    "nickname": "张三",
    "defaultPassword": "aBc123!@#"
  }
}

3. 更新用户

请求

http
PUT /v1/sys/user/{id}
Content-Type: application/json
Authorization: Bearer {accessToken}

{
  "nickname": "张三三",
  "email": "zhangsan3@example.com",
  "phone": "13800138002",
  "gender": 1,
  "deptId": "2",
  "roleIds": ["3", "4"],
  "status": 1
}

响应

json
{
  "code": 200,
  "message": "更新成功",
  "data": null
}

4. 删除用户

请求

http
DELETE /v1/sys/user/{id}
Authorization: Bearer {accessToken}

响应

json
{
  "code": 200,
  "message": "删除成功",
  "data": null
}

5. 批量删除用户

请求

http
DELETE /v1/sys/user/batch
Content-Type: application/json
Authorization: Bearer {accessToken}

{
  "ids": ["1001", "1002", "1003"]
}

6. 重置密码

请求

http
PUT /v1/sys/user/{id}/reset-password
Authorization: Bearer {accessToken}

响应

json
{
  "code": 200,
  "message": "重置成功",
  "data": {
    "newPassword": "xYz789#@!"
  }
}

7. 更新用户状态

请求

http
PUT /v1/sys/user/{id}/status
Content-Type: application/json
Authorization: Bearer {accessToken}

{
  "status": 0
}

8. 导出用户

请求

http
GET /v1/sys/user/export?ids=1,2,3&format=xlsx
Authorization: Bearer {accessToken}

响应: 文件下载

9. 导入用户

请求

http
POST /v1/sys/user/import
Content-Type: multipart/form-data
Authorization: Bearer {accessToken}

file: [Excel文件]

响应

json
{
  "code": 200,
  "message": "导入成功",
  "data": {
    "total": 100,
    "success": 98,
    "failed": 2,
    "errors": [
      {
        "row": 5,
        "message": "用户名已存在"
      }
    ]
  }
}

测试用例

功能测试

用例编号用例名称测试步骤预期结果实际结果状态
USER-001查询用户列表访问用户列表页面显示用户列表,分页正常符合预期[√] 通过
USER-002搜索用户输入关键字搜索显示匹配的用户符合预期[√] 通过
USER-003筛选用户按部门、状态筛选显示筛选后的结果符合预期[√] 通过
USER-004创建用户填写表单,点击保存创建成功,显示默认密码符合预期[√] 通过
USER-005用户名重复使用已存在的用户名提示用户名已存在符合预期[√] 通过
USER-006编辑用户修改用户信息,保存更新成功符合预期[√] 通过
USER-007删除用户点击删除按钮,确认删除成功符合预期[√] 通过
USER-008批量删除选择多个用户,批量删除批量删除成功符合预期[√] 通过
USER-009重置密码点击重置密码重置成功,显示新密码符合预期[√] 通过
USER-010启用/禁用切换用户状态状态切换成功符合预期[√] 通过
USER-011导出用户点击导出按钮下载Excel文件符合预期[√] 通过
USER-012导入用户上传Excel文件导入成功,显示结果符合预期[√] 通过

性能测试

用例编号用例名称测试条件预期结果实际结果状态
USER-P01列表查询性能10万用户数据查询时间 < 500ms320ms[√] 通过
USER-P02导出性能导出1万条数据导出时间 < 10s6.5s[√] 通过
USER-P03导入性能导入5000条数据导入时间 < 30s22s[√] 通过

开发记录

日期工作内容完成状态
2026-03-29技术方案设计、数据模型设计[√] 已完成
2026-03-30用户列表页面开发、列表API开发[√] 已完成
2026-03-30用户创建页面开发、创建API开发[√] 已完成
2026-03-30用户编辑功能开发、更新API开发[√] 已完成
2026-03-30用户状态管理、删除功能开发[√] 已完成
2026-03-31导入导出功能开发[√] 已完成
2026-03-31单元测试编写、代码审查[√] 已完成
2026-04-01集成测试、Bug修复[√] 已完成

代码统计

指标数值
前端代码行数2,180 行
后端代码行数1,560 行
测试代码行数680 行
单元测试覆盖率88%
接口数量9 个

相关文档


记录人: 赵六
日期: 2026-04-01

Released under the MIT License.