相关表有部门表、用户表、部门用户关联表(一个用户可能归属多个部门),有如下需求,请求各位前辈大佬的解惑,谢谢!
1、需要能查询某个部门下面的全部用户,包含子部门的用户。
2、部门表可能会经常修改,网上有看到有些框架是使用的部门表添加一个祖级id完整路径,这样办法我思考过修改部门层级的时候不好处理层级关系
相关表有部门表、用户表、部门用户关联表(一个用户可能归属多个部门),有如下需求,请求各位前辈大佬的解惑,谢谢!
1、需要能查询某个部门下面的全部用户,包含子部门的用户。
2、部门表可能会经常修改,网上有看到有些框架是使用的部门表添加一个祖级id完整路径,这样办法我思考过修改部门层级的时候不好处理层级关系
有祖级路径的查询时简单,修改麻烦。
没祖级路径的查询时麻烦,修改简单。
推荐祖级,毕竟修改没用查询操作那么多。
mysql 也支持递归查找父级id,查询逗号分割的也有 FIND_IN_SET() 函数.
使用的是什么数据库? 如果是支持cte的数据库(如postgres, mysqk8), 那么用 cte 递归表达式查 子部门就行. 如果不支持cte, 那就得加个字段, 保存部门的路径 .
8 回答2.6k 阅读
2 回答5.1k 阅读✓ 已解决
5 回答889 阅读
4 回答1.3k 阅读✓ 已解决
3 回答2.2k 阅读
1 回答2.5k 阅读✓ 已解决
2 回答2.1k 阅读
刚好我们的项目有这个场景
我们的做法是:
1,用户信息上有个部门id,不过我们是一个用户只能一个部门,你这个场景改成支持多个就行
2,部门设计,字段就是id,pid,name之类的,不要加path,这个确实会给修改带来很多麻烦
3,关于数据组成树状结构的问题:首先确定你们的需求,一般ui是一层一层点开,这时候就是根据pid查,如果是一次性返回某个部门下的所有部门,后台只需要轮询查到所有子部门信息即可,组装树结构的工作不应该放到服务器,给服务器减少压力,这种拼数据的工作应该在前端,避免前端需求改动还要改后端接口返回,做到前后端解耦,后端很多借口有时候很多地方会掉,不要为某一个情景去做处理,后端直接数据库查出来返回给前端就好,前端组树结构也很简单,无非就是先找到根,这个两行代码的事,然后在循环去找每个部门的下级部门而已
4,关于path,这个确实是个头疼的问题,我们专门做了个根据部门id去查部门path的接口供其它场景使用,path在整个后端业务中没有任何处理
5,关于查用户,如果要查某个部门下的子部门和用户,做两个接口,一个是根据部门id查子部门,一个是根据部门id查部门下的人,前端自己去分别掉就可以