角色管理功能需求文档.md 12 KB

角色管理功能需求文档

1. 功能概述

角色管理功能是系统权限管理的核心模块,用于管理系统中的角色信息、角色权限分配以及角色与用户的关联关系。该功能提供了完整的CRUD操作,支持角色的新增、修改、删除、查询,以及权限管理和人员管理功能。

2. 功能需求

2.1 角色列表查询

2.1.1 查询条件

  • 角色名称:支持模糊查询
  • 查询按钮:点击查询按钮执行查询操作
  • 重置按钮:清空查询条件并重新加载数据

2.1.2 列表显示

列表显示以下字段:

  • 选择框:支持多选,用于批量删除操作
  • 序号:连续序号,支持跨页连续显示
  • 角色名称:显示角色名称,支持排序
  • 备注:显示角色描述信息,支持排序
  • 是否系统角色:显示是否为系统角色(是/否),支持排序
  • 创建时间:显示角色创建时间,格式为yyyy-MM-dd,支持排序
  • 操作:提供人员管理、修改、删除按钮

2.1.3 列表功能

  • 排序:支持按角色名称、备注、是否系统角色、创建时间进行排序(数据库级排序)
  • 分页:支持分页显示,每页显示10/20/50/100条记录
  • Loading状态:查询时显示loading状态,防止重复点击

2.2 新增角色

2.2.1 新增按钮

  • 位置:操作按钮区
  • 功能:打开新增角色对话框

2.2.2 新增对话框

  • 标题:新增角色
  • 表单字段
    • 角色名称:必填,文本输入框
    • 备注:选填,文本输入框
    • 权限管理:树状控件,显示Sys_FunctionCode表的FunctionName

2.2.3 权限树状控件

  • 数据源:从Sys_FunctionCode表获取数据
  • 显示字段:FunctionName
  • 选择逻辑
    • 勾选父节点时,自动勾选所有子节点
    • 勾选子节点时,自动勾选父节点
    • 清除子节点时,不清除父节点的勾选
  • 数据保存:选中的FunctionCode保存到Sys_Role_Sys_FunctionCode表中

2.2.4 保存逻辑

  • 校验角色名称是否重复
  • 保存角色信息到Sys_Role表
  • 保存角色权限关系到Sys_Role_Sys_FunctionCode表
  • 设置公共字段:
    • RecordStatus:1(启用)
    • CreateUserID:当前登录用户ID
    • CreateTime:当前时间
    • ModifyUserID:当前登录用户ID
    • ModifyTime:当前时间

2.3 修改角色

2.3.1 修改按钮

  • 位置:操作列
  • 形式:图标按钮(Edit图标)
  • 功能:打开修改角色对话框

2.3.2 修改对话框

  • 标题:修改角色
  • 表单字段:与新增对话框相同
  • 默认值:回显当前角色的数据
  • 权限树:根据Sys_Role_Sys_FunctionCode表的数据默认勾选

2.3.3 保存逻辑

  • 校验角色名称是否与其他角色重复
  • 更新角色信息到Sys_Role表
  • 更新角色权限关系到Sys_Role_Sys_FunctionCode表(先删除旧的,再插入新的)
  • 更新公共字段:
    • ModifyUserID:当前登录用户ID
    • ModifyTime:当前时间

2.4 删除角色

2.4.1 单个删除

  • 删除按钮:操作列中的删除按钮(Delete图标)
  • 确认对话框:显示删除确认提示
  • 删除逻辑
    • 先删除Sys_User_Sys_Role表中的用户角色关联数据
    • 再删除Sys_Role_Sys_FunctionCode表中的角色权限关联数据
    • 最后删除Sys_Role表中的角色数据

2.4.2 批量删除

  • 批量删除按钮:操作按钮区
  • 启用条件:选中至少一条记录时启用
  • 确认对话框:显示删除确认提示
  • 删除逻辑:循环删除选中的角色,删除顺序与单个删除相同

2.5 人员管理

2.5.1 人员管理按钮

  • 位置:操作列
  • 形式:图标按钮(User图标)
  • 功能:打开人员管理对话框

2.5.2 人员管理对话框

  • 标题:角色名称
  • 查询条件
    • 文本框:支持按姓名或登录名模糊查询
    • 查询按钮:执行查询操作
  • 查询结果列表
    • 显示所有拥有该角色的用户
    • 字段:姓名、登录账号
    • 操作:删除按钮(移除该用户的角色)

2.5.3 新增拥有该角色的用户

  • 新增按钮:人员管理对话框中
  • 功能:打开用户选择对话框

2.5.4 用户选择对话框(通用组件)

  • 查询条件
    • 登录账号:模糊查询
    • 姓名:模糊查询
  • 查询结果列表
    • 勾选框
    • 登录账号
    • 姓名
  • 查询功能
    • 支持数据库级分页
    • 可多次查询,选中结果累加到选中区
  • 选中区
    • 显示已选中的用户
    • 支持取消选中
  • 确定按钮
    • 将选中的用户添加到角色中
    • 维护Sys_User_Sys_Role表数据

3. 技术实现

3.1 后端实现

3.1.1 实体类

  • Role:角色实体类,对应Sys_Role表
  • SysRoleFunctionCode:角色权限关联实体类,对应Sys_Role_Sys_FunctionCode表
  • SysUserRole:用户角色关联实体类,对应Sys_User_Sys_Role表

3.1.2 Repository

  • RoleRepository:角色数据访问接口
  • SysRoleFunctionCodeRepository:角色权限关联数据访问接口
  • SysUserRoleRepository:用户角色关联数据访问接口

3.1.3 Service

  • RoleService:角色业务逻辑服务
    • queryRoles:分页查询角色列表
    • createRole:创建角色
    • updateRole:更新角色
    • deleteRoles:删除角色
    • getFunctionCodeTree:获取权限树数据
    • getRoleUsers:获取角色用户列表
    • addUsersToRole:添加用户到角色
    • removeUserFromRole:从角色中移除用户

3.1.4 Controller

  • RoleController:角色控制器
    • GET /role/list:查询角色列表
    • POST /role/create:创建角色
    • PUT /role/update:更新角色
    • DELETE /role/delete/{id}:删除角色
    • DELETE /role/batchDelete:批量删除角色
    • GET /role/functionCodeTree:获取权限树
    • GET /role/{roleId}/users:获取角色用户列表
    • POST /role/{roleId}/addUsers:添加用户到角色
    • DELETE /role/{roleId}/removeUser/{userId}:从角色中移除用户

3.2 前端实现

3.2.1 组件结构

  • RoleManagement.vue:角色管理主组件
  • UserSelectDialog.vue:用户选择对话框通用组件

3.2.2 主要功能方法

  • getRoles:获取角色列表
  • handleSearch:查询操作
  • resetSearchForm:重置查询条件
  • handleSortChange:排序处理
  • handleAdd:打开新增对话框
  • handleEdit:打开修改对话框
  • handleDelete:删除角色
  • handleBatchDelete:批量删除角色
  • handleSubmit:提交新增/修改
  • handleUserManagement:打开人员管理对话框
  • getRoleUsers:获取角色用户列表
  • openUserSelectDialog:打开用户选择对话框
  • handleUserSelectConfirm:确认添加用户到角色
  • removeUserFromRole:从角色中移除用户

3.2.3 状态管理

  • queryForm:查询条件表单
  • roleList:角色列表数据
  • selectedRows:选中的角色
  • currentPage:当前页码
  • pageSize:每页显示数量
  • total:总记录数
  • loading:查询loading状态
  • deleteLoading:删除loading状态
  • sortMap:排序参数

3.3 数据库设计

3.3.1 Sys_Role表

  • RoleID:角色ID(主键)
  • RoleName:角色名称
  • Description:角色描述
  • IsSystemRole:是否系统角色
  • RecordStatus:记录状态
  • CreateUserID:创建人ID
  • CreateTime:创建时间
  • ModifyUserID:修改人ID
  • ModifyTime:修改时间

3.3.2 Sys_Role_Sys_FunctionCode表

  • ID:主键
  • RoleID:角色ID(外键)
  • FunctionCode:功能代码(外键)

3.3.3 Sys_User_Sys_Role表

  • ID:主键
  • UserID:用户ID(外键)
  • RoleID:角色ID(外键)

4. 界面设计

4.1 布局结构

  • 页面标题:角色管理
  • 查询条件区:包含角色名称查询条件和查询/重置按钮
  • 操作按钮区:包含新增和删除按钮
  • 表格区:显示角色列表
  • 分页区:分页控件

4.2 样式规范

  • 页面背景:白色
  • 卡片样式:白色背景,圆角4px,阴影效果
  • 表格样式
    • 表头背景色:#f5f7fa
    • 表头字体颜色:#303133
    • 表头字体粗细:bold
    • 表格字体大小:12px
    • 单元格内边距:8px 0
  • 按钮样式:使用Element Plus默认样式
  • Loading状态:查询和删除操作时显示loading状态

4.3 响应式设计

  • 表格宽度:calc(100vw - 331px)
  • 表格高度:calc(100vh - 395px)
  • 固定列:选择框、序号、操作列固定
  • 文本截断:长文本显示省略号

5. 业务规则

5.1 角色名称唯一性

  • 角色名称在系统中必须唯一
  • 新增时校验角色名称是否已存在
  • 修改时校验角色名称是否与其他角色重复

5.2 系统角色保护

  • 系统角色(IsSystemRole=true)不允许删除
  • 系统角色的权限不允许修改

5.3 级联删除

  • 删除角色时,必须先删除关联的用户角色关系
  • 删除角色时,必须先删除关联的角色权限关系
  • 删除角色时,必须最后删除角色本身

5.4 权限树选择逻辑

  • 勾选父节点时,自动勾选所有子节点
  • 勾选子节点时,自动勾选父节点
  • 清除子节点时,不清除父节点的勾选

6. 性能优化

6.1 数据库级排序

  • 排序在数据库层面执行,提高查询效率
  • 避免在前端进行大数据量的排序操作

6.2 分页查询

  • 使用数据库分页,避免一次性加载大量数据
  • 支持自定义每页显示数量

6.3 Loading状态管理

  • 查询、删除操作时显示loading状态
  • 防止用户重复点击,避免重复提交

6.4 缓存优化

  • 权限树数据可以缓存,减少数据库查询
  • 字典数据可以缓存,减少数据库查询

7. 安全性

7.1 权限控制

  • 只有拥有角色管理权限的用户才能访问该功能
  • 删除操作需要二次确认,防止误操作

7.2 数据验证

  • 前端进行表单验证
  • 后端进行业务逻辑验证
  • 防止SQL注入、XSS攻击等安全漏洞

7.3 操作日志

  • 记录所有角色的增删改操作
  • 记录操作人、操作时间、操作内容

8. 测试要点

8.1 功能测试

  • 测试角色的增删改查功能
  • 测试权限树的选择逻辑
  • 测试人员管理功能
  • 测试批量删除功能
  • 测试排序和分页功能

8.2 界面测试

  • 测试界面布局是否符合设计要求
  • 测试响应式布局是否正常
  • 测试Loading状态是否正常显示
  • 测试固定列是否正常工作

8.3 性能测试

  • 测试大数据量下的查询性能
  • 测试并发操作的性能
  • 测试内存使用情况

8.4 安全测试

  • 测试权限控制是否生效
  • 测试数据验证是否完善
  • 测试SQL注入、XSS攻击等安全漏洞

9. 版本历史

版本 日期 修改内容 修改人
1.0 2026-03-05 初始版本,完成角色管理功能开发 AI Assistant

10. 附录

10.1 相关文档

10.2 代码文件

  • 后端:
    • JavaBackend/src/main/java/com/lianda/backend/model/Role.java
    • JavaBackend/src/main/java/com/lianda/backend/model/SysRoleFunctionCode.java
    • JavaBackend/src/main/java/com/lianda/backend/model/SysUserRole.java
    • JavaBackend/src/main/java/com/lianda/backend/repository/RoleRepository.java
    • JavaBackend/src/main/java/com/lianda/backend/repository/SysRoleFunctionCodeRepository.java
    • JavaBackend/src/main/java/com/lianda/backend/repository/SysUserRoleRepository.java
    • JavaBackend/src/main/java/com/lianda/backend/service/RoleService.java
    • JavaBackend/src/main/java/com/lianda/backend/controller/RoleController.java
  • 前端:
    • vue-frontend/src/components/RoleManagement.vue
    • vue-frontend/src/components/UserSelectDialog.vue