ruoyi若依 组织架构设计--[ 部门管理 ]
- 部门管理
- 部门查询
- 部门新增
- 部门修改
- 部门删除
部门管理
部门查询
需要注意的是,部门管理也有数据权限,
比如A用户分配的数据权限(通过角色分配)是深圳总公司
,那么A用户登录后
看到的部门也是深圳总公司
,B用户分配的是长沙分公司也是如此。同时,A用户在深圳总公司下增删改查部门,B用户也看不到
部门新增
新增的时候,重点关注一下
ancestors
字段是怎么新增的。
通过传入上级部门(parent_id
),查询到了ancestors
。然后再拼上前端传过去的dept_id
- 前端代码
- 新增的时候,
先获取所有的部门的List,然后前端处理成树型结构
- 新增的时候,
将当前行的dept_id,赋值到parent_id上
,用于传给后端
- 后端代码
- 新增的时候,是否有`重名的dept
查询的ancestors 拼上前端传的parent_id
,组成新的ancestors- dept_id表的
单表插入
- 从数据库的角度看刚才的新增逻辑
在清华大学下面添加管理学院
- 前端渲染所有的树型结构,并获取清华大学数据的dept_id,将来传给后端
- 添加管理学院的时候,根据清华大学的parent_id,查询到清华大学的ancestors。
- 再拼上前端传来的parent_id。也就是 0 + 100.所以管理学院的ancestors是0,100
部门修改
需求:修改管理学院
前端页面:
重点关注
ancestors
是怎么修改的
- 前端页面方面,先根据id查询数据并展示
- 检查是否有权限修改部门数据
- 有权限的话,根据id查询数据,用于前端展示
- 后端接口方面
这个时候需要注意
ancestors
字段
停用的话,需要检查下级所有都停用了,当前部门才能停用
count() 一下status = ‘0’ 且 find_in_set 一下ancestors
如果count() 的数量 > 0 代表有status 有未停用的,则新增不成功
重点:修改
ancestors
的规则
deptService.updateDept(dept)方法
看注释
如果当前部门启用了,所有上级部门也得启用
批量修改
部门删除