ContiNew
系统管理

部门管理

树形组织架构的维护,支撑用户归属、数据权限与部门级联查询。

本文是 4.x 的归档文档(冻结于 v4.2.0)。该分支只接收勘误修正, 内容基本不再变动;文中的源码路径、配置项与版本号均以 4.2.x 为准,不建议用于新项目。

新项目请查看 5.x 最新文档。已在 4.2.x 上运行的项目,本文仍是可靠依据。

部门管理维护组织架构树,功能入口在「系统管理 -> 部门管理」,后端接口前缀为 /system/dept,对应 DeptController。部门数据存储在 sys_dept 表,是用户归属(sys_user.dept_id)与角色数据权限(sys_role_dept)的基础。

功能概览

DeptController 通过 @CrudRequestMapping("/system/dept", api = {Api.TREE, Api.GET, Api.CREATE, Api.UPDATE, Api.BATCH_DELETE, Api.EXPORT, Api.TREE_DICT}) 提供树查询、详情、新增、修改、批量删除、导出与树字典接口,权限码按 API 类型自动生成(如 system:dept:create)。树字典接口供用户管理等页面的部门下拉树使用。

部门字段

sys_dept 表的主要字段如下。

字段说明
name部门名称,同一上级下唯一(uk_name_parent_id 联合唯一索引)
parent_id上级部门 ID,根节点为 0
ancestors祖级列表,按层级记录全部祖先 ID,用于「本部门及以下」的快速匹配
description描述
sort排序,默认 999
status状态(1:启用;2:禁用)
is_system是否系统内置数据

树维护与级联影响

部门支持任意层级嵌套。ancestors 字段在新增、调整层级时由后端重算,数据权限取值为「本部门及以下」(DataScopeEnum.DEPT_AND_CHILD)时依赖该字段做前缀匹配,避免逐层递归查询。

删除部门前需要确认两件事:部门下没有子部门,且没有用户挂在该部门(sys_user.dept_id)。禁用部门会立即强退其直属用户的在线会话(DeptServiceImpl),且登录、令牌刷新时都会校验部门状态(AuthTokenServiceImpl#checkUserStatus),所属部门被禁用的账号无法登录。该部门也会在部门下拉树中不再可选。

与数据权限的关系

角色的数据权限取值为 2(本部门及以下)、3(本部门)时,以用户所属部门为起点计算可见范围;取值为 5(自定义)时,可见部门集合来自 sys_role_dept 表勾选的部门。部门树的准确性直接决定数据权限边界,配置方式见角色管理,机制细节见 ContiNew Starter 数据权限文档。

相关源码

目录