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)方法
看注释

 
如果当前部门启用了,所有上级部门也得启用
 批量修改
 
 
部门删除

 













![NSS [SWPUCTF 2022 新生赛]funny_web](https://img-blog.csdnimg.cn/img_convert/18e9c3234ecb30404dcaf2c6b816cc79.png)





