一、功能概述
部门管理模块基于auth_dept
表实现树形层级管理,支持部门的新增、修改、删除、状态切换及排序等操作,通过parent_id
、hierarchy
、ancestors
等字段维护部门间的父子关系,同时限制最大层级为5级。系统通过auth_user_dept
表关联用户与部门,实现人员的组织架构管理,确保部门操作符合业务规则(如存在用户或子部门时禁止删除)。
二、核心功能说明
(一)新增部门
操作路径:部门列表点击「新增」按钮,选择父部门后填写表单
系统自动填充字段:
dept_id
:自动生成36位UUIDcreate_date
/create_user_id
:当前操作信息hierarchy
:层级(父部门层级+1)ancestors
:祖先ID列表(父部门祖先+父部门ID)top_dept_id
:顶级部门ID(根部门为自身ID)sort
:排序号(同层级最大排序+1)
层级限制:
- 最大层级为5级,超过时提示“部门不能超过5级”
- 根部门层级为1,
ancestors
为空
唯一性校验:同一父部门下部门名称不可重复,重复时提示“部门名称已存在,请勿重复添加”
(二)修改部门
- 操作路径:部门列表点击目标部门「修改」按钮,更新表单后保存
- 可修改字段:部门名称、父部门、状态、备注、排序号
- 不可修改字段:
dept_id
(主键不可修改) - 层级调整影响:
- 变更父部门时自动更新
hierarchy
、ancestors
、top_dept_id
- 调整后若子部门层级超过5级,提示“部门不能超过5级”
- 变更父部门时自动更新
- 唯一性校验:与新增规则相同,排除当前部门自身记录
- 特殊限制:父部门不能选择自身,否则提示“父部门不能为自身”
(三)删除部门
- 操作路径:部门列表点击「删除」按钮,支持批量选择删除
- 删除限制:
- 存在关联用户时禁止删除,提示“[部门名称]下存在用户,不允许删除”
- 存在子部门时禁止删除,提示“该部门下存在其他部门,不允许删除”
- 必须选择至少一个部门,否则提示“请选择要删除的内容”
- 删除逻辑:
- 执行物理删除(
deleteBatchIds
) - 返回删除成功的部门数量
- 执行物理删除(
- 关联检查:
- 通过
auth_user_dept
表检查是否关联用户 - 通过
ancestors
字段检查是否存在子部门
- 通过
(四)状态切换
- 操作路径:部门列表点击「启用」/「停用」按钮
- 状态转换规则:
- 正常状态(1)→ 点击后变为停用(0)
- 停用状态(0)→ 点击后变为正常(1)
- 操作限制:部门不存在时提示“部门不存在”
(五)部门排序
- 操作路径:部门列表点击「拖拽」图标,拖拽调整顺序后保存
- 实现逻辑:批量更新
sort
字段,按调整后的顺序赋值 - 生效范围:按
sort
升序排列
三、部门层级与树形结构说明
层级字段说明:
字段 含义 示例(三级部门) parent_id
父部门ID 二级部门ID hierarchy
当前层级 3 ancestors
祖先ID链 一级部门ID,二级部门ID top_dept_id
顶级部门ID 一级部门ID 树形结构构建:
- 通过
parent_id
递归关联子部门 - 根部门
parent_id
为空,hierarchy=1
- 最多支持5级部门,超过则禁止新增
- 通过
四、数据校验规则
- 必填校验:部门ID、名称等关键参数不能为空
- 业务规则校验:
- 部门删除前检查是否存在用户(关联
auth_user_dept
) - 部门删除前检查是否存在子部门(通过
ancestors
包含当前部门ID判断) - 层级调整时确保不超过5级
- 部门删除前检查是否存在用户(关联
- 状态校验:操作前验证部门是否存在,不存在则提示“部门不存在”
五、部门与用户关联说明
- 关联关系:用户与部门为多对多关系(通过
auth_user_dept
表实现) - 关联限制:
- 部门存在关联用户时禁止删除
- 部门负责人通过
principal=1
标记
- 数据同步:部门状态变更不影响用户关联,但停用部门的用户在组织架构中标记为“停用部门”