一、功能概述
角色管理模块基于auth_role
表实现角色全生命周期管理,涵盖角色的新增、修改、删除、状态切换等基础操作,同时支持角色与项目、菜单、数据权限的关联配置,通过auth_role_project_relevance
、auth_role_menu
、auth_role_permission
三张关联表实现权限的精细化管控,满足不同项目场景下的权限隔离需求。
二、核心功能说明
(一)新增角色
- 操作路径:角色列表页面点击「新增」按钮,填写表单后提交
- 系统自动填充字段:
role_id
:自动生成36位UUIDcreate_date
:当前时间戳create_user_id
/create_user_name
:当前操作用户信息delete_flag
:默认0(未删除)
- 唯一性校验:角色名称不可重复,重复时提示“角色名称已存在,请勿重复添加”
- 关联处理:新增成功后自动维护角色与项目的关联关系(通过
RoleProjectRelevanceService.saveOrUpdate
实现)
(二)修改角色
- 操作路径:角色列表点击目标角色「修改」按钮,更新表单后保存
- 可修改字段:角色名称、角色编码、所属项目、状态、备注
- 不可修改字段:
role_id
(主键不可修改) - 唯一性校验:与新增规则相同,但排除当前角色自身记录
- 关联处理:修改后自动更新角色与项目的关联关系,删除原关联后重建新关联
(三)删除角色
- 操作路径:角色列表点击「删除」按钮,支持批量选择删除
- 删除限制:
- 已关联用户的角色不允许删除,提示“[角色名称]下存在用户,不允许删除”
- 必须选择至少一个角色才能执行删除操作
- 数据处理:
- 物理删除角色表记录
- 级联删除角色与项目、菜单、权限的关联记录
- 返回结果:提示删除成功的角色数量(格式:“删除成功X条数据”)
(四)角色状态切换
- 操作路径:角色列表点击「启用」/「停用」按钮
- 状态转换规则:
- 正常状态(1)→ 点击后变为停用状态(0)
- 停用状态(0)→ 点击后变为正常状态(1)
- 数据校验:操作前验证角色是否存在,不存在则抛出异常
- 影响范围:状态为停用的角色关联用户将无法使用该角色权限
(五)角色项目关联管理
- 功能说明:为实现权限的项目隔离,需维护角色与项目的多对多关系,明确每个角色所属项目,避免用户登录某项目时返回所有项目角色造成混乱及后期管理困难。
- 关联表:
auth_role_project_relevance
(角色项目关联表) - 操作时机:
- 新增角色时同步保存关联关系
- 修改角色时先删除原关联再保存新关联
- 处理逻辑:
- 通过
projectIds
参数接收选中的项目ID列表 - 批量删除该角色的历史关联记录(按
role_id
筛选) - 批量插入新的关联记录(
role_id
+project_id
组合)
- 通过
(六)菜单权限配置
- 操作路径:角色详情页点击「菜单权限」标签,选择项目后配置菜单
- 权限范围:按项目隔离,同一角色在不同项目可配置不同菜单权限
- 配置流程:
- 选择目标项目(
projectId
) - 勾选该项目下的可访问菜单(
menuIds
) - 提交后保存配置
- 选择目标项目(
- 数据处理:
- 先删除该角色在目标项目下的历史菜单关联(
auth_role_menu
表) - 批量插入新的菜单关联记录(
role_id
+project_id
+menu_id
组合)
- 先删除该角色在目标项目下的历史菜单关联(
- 权限校验:配置前验证角色是否已关联该项目,未关联则提示“该角色没有分配该项目,请在角色里面设置所属项目”
(七)数据权限配置
- 操作路径:角色详情页点击「数据权限」标签,选择项目后配置权限范围
- 权限类型(
permission_type
):权限类型 编码 说明 仅本人数据 1 只能查看本人数据 自定义用户数据 2 可查看指定用户的数据(需选择用户ID) 本部门权限 3 可查看本部门数据 本部门及以下权限 4 可查看本部门及子部门数据 自定义部门数据 5 可查看指定部门的数据(需选择部门ID) 全部数据权限 6 可查看所有数据 - 配置规则:
- 自定义用户数据(2):
choiceValue
需传入用户ID列表 - 自定义部门数据(5):
choiceValue
需传入部门ID列表 - 其他类型:无需额外参数
- 自定义用户数据(2):
- 数据处理:
- 先删除该角色在目标项目下的历史数据权限关联(
auth_role_permission
表) - 根据权限类型插入新的权限记录
- 先删除该角色在目标项目下的历史数据权限关联(
- 权限校验:同菜单权限的项目关联校验规则
三、数据校验规则
- 必填校验:角色ID、项目ID等关键参数不能为空,否则提示“请输入XXX”
- 存在性校验:操作前验证角色是否存在,不存在则抛出异常
- 业务规则校验:
- 角色删除时检查是否关联用户,关联则禁止删除
- 权限配置时检查角色是否关联目标项目,未关联则禁止配置
四、权限关联关系说明
- 多对多关系:
- 角色与项目:多对多(通过
auth_role_project_relevance
关联) - 角色与菜单:多对多,且按项目隔离(通过
auth_role_menu
的project_id
字段区分) - 角色与数据权限:一对一(按角色+项目维度)
- 角色与项目:多对多(通过
- 关联维护原则:
- 新增/修改角色时同步更新项目关联
- 配置权限时先删除历史关联再重建新关联
- 删除角色时级联删除所有关联记录