Skip to content

用户管理

概述

用户管理是系统中用于管理和维护用户信息的核心模块。通过该模块,管理员可以对系统中的用户进行添加、编辑、删除等操作,并且可以分配和管理用户的权限。用户管理模块确保了系统的安全性和可扩展性,使得不同角色的用户可以根据其权限访问相应的资源。

主要功能

1. 用户列表展示

  • 功能描述:以表格形式展示所有用户的详细信息,包括用户名、邮箱、手机号、注册时间、最后登录时间、状态(启用/禁用)等。
  • 操作按钮
    • 搜索:支持按用户名、邮箱、手机号等关键字进行模糊查询。
    • 批量操作:支持批量启用、禁用、删除用户。
    • 导出:将当前页面或全部用户数据导出为 Excel 文件。

2. 添加用户

  • 功能描述:提供表单用于创建新用户,管理员可以填写用户的详细信息并设置初始密码。
  • 字段说明
    • 用户名:必填,唯一标识符。
    • 邮箱:必填,用于接收系统通知。
    • 手机号:选填,用于双重验证或其他联系方式。
    • 密码:必填,初次设置用户登录密码。
    • 确认密码:必填,确保两次输入的密码一致。
    • 角色:必选,选择用户的角色(如管理员、普通用户等),不同角色拥有不同的权限。
    • 状态:默认启用,可以选择是否启用该用户。

3. 编辑用户

  • 功能描述:管理员可以编辑现有用户的详细信息,包括修改用户名、邮箱、手机号、密码、角色和状态。
  • 字段说明
    • 用户名:不可修改,作为唯一标识符。
    • 邮箱:可修改,确保唯一性。
    • 手机号:可修改,确保唯一性。
    • 密码:可修改,留空则不更新密码。
    • 确认密码:当修改密码时必填。
    • 角色:可修改,重新分配用户角色。
    • 状态:可修改,启用或禁用用户。

4. 删除用户

  • 功能描述:管理员可以删除不再需要的用户。为了防止误操作,删除操作会弹出确认框提示。
  • 注意事项
    • 删除后无法恢复,请谨慎操作。
    • 如果用户有未完成的任务或关联的数据,建议先处理这些数据再删除用户。

5. 用户权限管理

  • 功能描述:管理员可以为每个用户分配不同的权限,确保用户只能访问和操作其被授权的内容。
  • 权限类型
    • 菜单权限:控制用户可以访问的菜单项。
    • 操作权限:控制用户在特定页面上可以执行的操作(如新增、编辑、删除等)。
    • 数据权限:控制用户可以查看和操作的数据范围(如部门、项目等)。

6. 用户日志审计

  • 功能描述:记录用户的操作日志,便于管理员审查用户的行为,确保系统的安全性和合规性。
  • 日志内容
    • 操作时间:记录每次操作的具体时间。
    • 操作用户:记录执行操作的用户名。
    • 操作类型:记录具体操作(如登录、添加用户、编辑用户等)。
    • 操作结果:记录操作是否成功及其相关信息。

技术实现

数据库设计

  • 用户表 (users)

    • id:主键,自增。
    • username:用户名,唯一。
    • email:邮箱,唯一。
    • phone:手机号,唯一。
    • password:加密后的密码。
    • role_id:外键,关联角色表。
    • status:用户状态(0: 禁用, 1: 启用)。
    • created_at:创建时间。
    • updated_at:更新时间。
    • last_login_at:最后登录时间。
  • 角色表 (roles)

    • id:主键,自增。
    • name:角色名称。
    • description:角色描述。
  • 权限表 (permissions)

    • id:主键,自增。
    • name:权限名称。
    • description:权限描述。
  • 角色权限关系表 (role_permissions)

    • role_id:外键,关联角色表。
    • permission_id:外键,关联权限表。

前端实现

技术栈

  • 框架:Vue.js 3.x
  • UI库:Naive UI
  • 状态管理:Pinia
  • 路由管理:Vue Router
  • API请求:Axios

页面结构

1. 用户列表页
  • 组件UserList.vue
  • 功能
    • 使用 Naive UI 的 n-data-table 组件展示用户列表。
    • 支持分页、排序和筛选功能。
    • 提供搜索栏,使用 n-inputn-button 组件实现模糊查询。
    • 提供批量操作按钮,使用 n-popconfirm 组件实现批量启用、禁用、删除用户的确认框。
    • 提供导出按钮,调用后端 API 导出用户数据为 Excel 文件。
2. 用户详情页
  • 组件UserDetail.vue
  • 功能
    • 使用 Naive UI 的 n-formn-form-item 组件构建用户信息表单。
    • 表单字段包括用户名、邮箱、手机号、密码、确认密码、角色和状态。
    • 使用 n-select 组件选择用户角色。
    • 使用 n-switch 组件切换用户状态(启用/禁用)。
    • 提交表单时,调用后端 API 进行用户信息的添加或编辑操作。
3. 权限配置页
  • 组件PermissionConfig.vue
  • 功能
    • 使用 Naive UI 的 n-tree 组件展示权限树,用户可以通过勾选节点来分配权限。
    • 使用 n-checkbox-group 组件实现多选权限。
    • 提交权限配置时,调用后端 API 更新用户权限。

接口列表

1. 用户列表展示

获取用户列表

  • URL: /api/users
  • Method: GET

请求参数

参数名类型是否必填默认值描述
pageint1当前页码
pageSizeint10每页显示的条数
searchstring搜索关键字,支持模糊查询(用户名、邮箱、手机号)

响应示例

json
{
  "total": 50,
  "data": [
    {
      "id": 1,
      "username": "admin",
      "email": "admin@example.com",
      "phone": "12345678901",
      "createdAt": "2023-01-01T00:00:00Z",
      "updatedAt": "2023-01-01T00:00:00Z",
      "lastLoginAt": "2023-01-01T00:00:00Z",
      "status": 1
    },
    ...
  ]
}

2. 添加用户

创建新用户

  • URL: /api/users
  • Method: POST
  • 请求头:
    • Content-Type: application/json

请求体

json
{
  "username": "newuser",
  "email": "newuser@example.com",
  "phone": "12345678901",
  "password": "password123",
  "confirmPassword": "password123",
  "roleId": 2,
  "status": 1
}
  • 字段说明
    • username (必填): 用户名,唯一标识符。
    • email (必填): 邮箱,用于接收系统通知。
    • phone (选填): 手机号,用于双重验证或其他联系方式。
    • password (必填): 初次设置用户登录密码。
    • confirmPassword (必填): 确认密码,确保两次输入的密码一致。
    • roleId (必填): 角色 ID,选择用户的角色(如管理员、普通用户等),不同角色拥有不同的权限。
    • status (可选): 用户状态,默认启用(1),可以选择是否启用该用户(0: 禁用, 1: 启用)。

成功响应

  • 状态码: 201 Created
  • 响应体:
    json
    {
      "id": 101,
      "username": "newuser",
      "email": "newuser@example.com",
      "phone": "12345678901",
      "createdAt": "2023-01-01T00:00:00Z",
      "updatedAt": "2023-01-01T00:00:00Z",
      "status": 1
    }

错误响应

  • 状态码: 400 Bad Request

  • 响应体:

    json
    {
      "error": "Invalid input data",
      "details": [
        "Username is required",
        "Email is required",
        "Password and confirmPassword must match"
      ]
    }
  • 状态码: 409 Conflict

  • 响应体:

    json
    {
      "error": "Conflict",
      "details": [
        "Username already exists",
        "Email already exists"
      ]
    }

3. 编辑用户

更新用户信息

  • URL: /api/users/{id}
  • Method: PUT
  • 请求头:
    • Content-Type: application/json

请求体

json
{
  "email": "updateduser@example.com",
  "phone": "12345678902",
  "password": "newpassword123",
  "confirmPassword": "newpassword123",
  "roleId": 3,
  "status": 0
}
  • 字段说明
    • email (可修改): 确保唯一性。
    • phone (可修改): 确保唯一性。
    • password (可修改): 留空则不更新密码。
    • confirmPassword (当修改密码时必填): 确认密码。
    • roleId (可修改): 重新分配用户角色。
    • status (可修改): 启用或禁用用户(0: 禁用, 1: 启用)。

成功响应

  • 状态码: 200 OK
  • 响应体:
    json
    {
      "id": 101,
      "username": "newuser",
      "email": "updateduser@example.com",
      "phone": "12345678902",
      "updatedAt": "2023-01-02T00:00:00Z",
      "status": 0
    }

错误响应

  • 状态码: 400 Bad Request
  • 响应体:
    json
    {
      "error": "Invalid input data",
      "details": [
        "Email is required",
        "Password and confirmPassword must match"
      ]
    }

4. 删除用户

删除用户

  • URL: /api/users/{id}
  • Method: DELETE

成功响应

  • 状态码: 204 No Content

错误响应

  • 状态码: 404 Not Found
  • 响应体:
    json
    {
      "error": "User not found"
    }

5. 用户权限管理

分配用户权限

  • URL: /api/users/{id}/permissions
  • Method: POST
  • 请求头:
    • Content-Type: application/json

请求体

json
{
  "permissionIds": [1, 2, 3]
}
  • 字段说明
    • permissionIds (必填): 权限ID数组,表示要分配给用户的权限。

成功响应

  • 状态码: 200 OK
  • 响应体:
    json
    {
      "message": "Permissions updated successfully"
    }

错误响应

  • 状态码: 400 Bad Request
  • 响应体:
    json
    {
      "error": "Invalid permission IDs"
    }

6. 用户日志审计

获取用户操作日志

  • URL: /api/logs
  • Method: GET

请求参数

参数名类型是否必填默认值描述
userIdint用户ID
fromstring开始时间,格式:YYYY-MM-DD
tostring结束时间,格式:YYYY-MM-DD

响应示例

json
{
  "total": 20,
  "data": [
    {
      "id": 1,
      "userId": 101,
      "operationTime": "2023-01-01T00:00:00Z",
      "operator": "admin",
      "operationType": "LOGIN",
      "operationResult": "SUCCESS"
    },
    ...
  ]
}

附录

接口规范

  • HTTP状态码

    • 200 OK:请求成功。
    • 201 Created:资源创建成功。
    • 204 No Content:请求成功但无返回内容。
    • 400 Bad Request:客户端请求有误。
    • 404 Not Found:请求的资源不存在。
    • 409 Conflict:请求冲突,例如资源已存在。
  • 错误响应格式

    json
    {
      "error": "Error message",
      "details": ["Detail 1", "Detail 2"]
    }
  • 时间格式

    • 使用 ISO 8601 标准格式,例如 2023-01-01T00:00:00Z

总结

用户管理模块是系统中不可或缺的一部分,它不仅提供了对用户信息的全面管理,还确保了系统的安全性。通过合理的权限控制和日志审计,管理员可以有效地管理和监控用户行为,保障系统的稳定运行。如果有其他问题或需要进一步的帮助,请随时联系技术支持团队。