一、功能概述

角色管理模块基于auth_role表实现角色全生命周期管理,涵盖角色的新增、修改、删除、状态切换等基础操作,同时支持角色与项目、菜单、数据权限的关联配置,通过auth_role_project_relevanceauth_role_menuauth_role_permission三张关联表实现权限的精细化管控,满足不同项目场景下的权限隔离需求。

二、核心功能说明

(一)新增角色

  1. 操作路径:角色列表页面点击「新增」按钮,填写表单后提交
  2. 系统自动填充字段
    • role_id:自动生成36位UUID
    • create_date:当前时间戳
    • create_user_id/create_user_name:当前操作用户信息
    • delete_flag:默认0(未删除)
  3. 唯一性校验:角色名称不可重复,重复时提示“角色名称已存在,请勿重复添加”
  4. 关联处理:新增成功后自动维护角色与项目的关联关系(通过RoleProjectRelevanceService.saveOrUpdate实现)

(二)修改角色

  1. 操作路径:角色列表点击目标角色「修改」按钮,更新表单后保存
  2. 可修改字段:角色名称、角色编码、所属项目、状态、备注
  3. 不可修改字段role_id(主键不可修改)
  4. 唯一性校验:与新增规则相同,但排除当前角色自身记录
  5. 关联处理:修改后自动更新角色与项目的关联关系,删除原关联后重建新关联

(三)删除角色

  1. 操作路径:角色列表点击「删除」按钮,支持批量选择删除
  2. 删除限制
    • 已关联用户的角色不允许删除,提示“[角色名称]下存在用户,不允许删除”
    • 必须选择至少一个角色才能执行删除操作
  3. 数据处理
    • 物理删除角色表记录
    • 级联删除角色与项目、菜单、权限的关联记录
  4. 返回结果:提示删除成功的角色数量(格式:“删除成功X条数据”)

(四)角色状态切换

  1. 操作路径:角色列表点击「启用」/「停用」按钮
  2. 状态转换规则
    • 正常状态(1)→ 点击后变为停用状态(0)
    • 停用状态(0)→ 点击后变为正常状态(1)
  3. 数据校验:操作前验证角色是否存在,不存在则抛出异常
  4. 影响范围:状态为停用的角色关联用户将无法使用该角色权限

(五)角色项目关联管理

  1. 功能说明:为实现权限的项目隔离,需维护角色与项目的多对多关系,明确每个角色所属项目,避免用户登录某项目时返回所有项目角色造成混乱及后期管理困难。
  2. 关联表auth_role_project_relevance(角色项目关联表)
  3. 操作时机
    • 新增角色时同步保存关联关系
    • 修改角色时先删除原关联再保存新关联
  4. 处理逻辑
    • 通过projectIds参数接收选中的项目ID列表
    • 批量删除该角色的历史关联记录(按role_id筛选)
    • 批量插入新的关联记录(role_id+project_id组合)

(六)菜单权限配置

  1. 操作路径:角色详情页点击「菜单权限」标签,选择项目后配置菜单
  2. 权限范围:按项目隔离,同一角色在不同项目可配置不同菜单权限
  3. 配置流程
    • 选择目标项目(projectId
    • 勾选该项目下的可访问菜单(menuIds
    • 提交后保存配置
  4. 数据处理
    • 先删除该角色在目标项目下的历史菜单关联(auth_role_menu表)
    • 批量插入新的菜单关联记录(role_id+project_id+menu_id组合)
  5. 权限校验:配置前验证角色是否已关联该项目,未关联则提示“该角色没有分配该项目,请在角色里面设置所属项目”

(七)数据权限配置

  1. 操作路径:角色详情页点击「数据权限」标签,选择项目后配置权限范围
  2. 权限类型(permission_type
    权限类型编码说明
    仅本人数据1只能查看本人数据
    自定义用户数据2可查看指定用户的数据(需选择用户ID)
    本部门权限3可查看本部门数据
    本部门及以下权限4可查看本部门及子部门数据
    自定义部门数据5可查看指定部门的数据(需选择部门ID)
    全部数据权限6可查看所有数据
  3. 配置规则
    • 自定义用户数据(2):choiceValue需传入用户ID列表
    • 自定义部门数据(5):choiceValue需传入部门ID列表
    • 其他类型:无需额外参数
  4. 数据处理
    • 先删除该角色在目标项目下的历史数据权限关联(auth_role_permission表)
    • 根据权限类型插入新的权限记录
  5. 权限校验:同菜单权限的项目关联校验规则

三、数据校验规则

  1. 必填校验:角色ID、项目ID等关键参数不能为空,否则提示“请输入XXX”
  2. 存在性校验:操作前验证角色是否存在,不存在则抛出异常
  3. 业务规则校验
    • 角色删除时检查是否关联用户,关联则禁止删除
    • 权限配置时检查角色是否关联目标项目,未关联则禁止配置

四、权限关联关系说明

  1. 多对多关系
    • 角色与项目:多对多(通过auth_role_project_relevance关联)
    • 角色与菜单:多对多,且按项目隔离(通过auth_role_menuproject_id字段区分)
    • 角色与数据权限:一对一(按角色+项目维度)
  2. 关联维护原则
    • 新增/修改角色时同步更新项目关联
    • 配置权限时先删除历史关联再重建新关联
    • 删除角色时级联删除所有关联记录