递归算法检索树的叶子节点
场景描述:我们公司原本是三级组织架构,其中营销部门下面是多个项目部和多个销售设计部。各部门对应的岗位有部门主管,客户经理,设计师等。现要求,在营销部和销售部门之间增加层级(省,城市,区),如下图1所示。省对应的岗位为省区经理,城市对应的岗位是城市经理,大区对应的为区域经理。省区下辖多个城市,同理城市下辖多个区域。最后销售和设计部门划分到各个区域下,也可以直接划分到城市或者省区下。数据库parentId自关联表设计支持随意划分。
UI组件用的是ztree
由于部门都是唯一的,部门拷贝是通过redis实现的,修改部门parentId然后存入Redis,不影响数据库中的部门本尊以及各部门的客户数据。返回数据的时候先查询数据库中组织架构,再讲redis中数据一起返回即可。
那么问题来了,浙江大区怎么看下面各城市(下面的各区域)下面的各部门的客户数据呢?原先用户登录进来,直接通过shiro获得部门编码,去索引销售的客户数据即可,现在新增的浙江,杭州这种城市层级他们没有绑定任何客户数据。所以无法通过编码索引浙江所有的客户数据了。这时就用到了递归索引叶子节点了!!!
不管登陆的用户是哪个层级的,都调用查找叶子的方法,找到这个级别下的叶子节点,如上图拱墅区域经理登录后,索引到销售设计三部和销售设计四部。如杭州登录下来,能索引到拱墅