Files
easygoadmin-wiki/EasyGoAdmin_GoFrame_AntdVue/zh/modules/dept.md
T
2026-10-20 21:53:26 +08:00

44 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 6.4 部门管理
:::tip 概述
部门模块(goframe_dept,租户级表)管理组织架构:树形结构、删除有子级/用户守卫、租户内名称唯一。部门是数据权限(本部门及以下/本部门)的组织基础。
:::
## 接口清单
```text
七件套:sys:dept:{page|list|detail|add|update|delete|batchDelete}
List 返回树形(IsTree + ParentOf)
```
## 模块特征
| 特征 | 实现 |
|------|------|
| 树形 | IsTree + ParentOf,List 自动建树 |
| 删除守卫 | 存在子部门拒绝(1011);存在用户引用拒绝(1014 语义) |
| 唯一性 | 租户内部门名唯一(uk_tenant_name) |
| 数据权限 | dept_id 是 data_scope 档 2/3 的过滤维度 |
| 子树查询 | data_scope.go deptSubtreeIds:拉全租户部门行后 BFS |
## 与其他模块的关系
```text
user.dept_id → dept.id 用户归属部门(用户表单部门选择)
data_scope 档 2/3 按部门维度过滤可见数据(见 5.9 数据权限)
deptSubtreeIds(deptId) 档 2 "本部门及以下"的子孙部门集合计算
(每次全量拉部门表 BFS,树小无缓存;
部门表数百行内无感知,上万行需加短时缓存)
```
## 唯一性说明
建表有 `uk_tenant_name (tenant_id, name, del_flag)` 唯一索引,但 dept 模块未声明 UniqueFields 预检——重复名称提交会收到数据库 1062 裸错误。修复方向:补 `UniqueFields{Field:"name", Group:"tenant_id"}`(预检范围=索引范围)。
## 管理建议
+ 部门层级建议控制在 5 层内(子树 BFS 与前端展示友好)
+ 删除部门前先处理子部门与挂载用户(守卫会拦截)
+ 未分配部门(dept_id=0)的用户挂数据权限档 2/3 时降级为"仅本人"(防可见面意外放大)
+ 部门调整后,受影响用户的数据权限即时生效(user.Update 清身份缓存路径覆盖 dept_id 变更)