签入版本
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
# 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 变更)
|
||||
Reference in New Issue
Block a user