案例场景:
在本项目中有一个服务拓扑,这个服务拓扑呢每个客户属于不同的角色,不同的角色看到的服务拓扑是不一样的,并且这个服务拓扑是一个树形结构
思路分析:根据token取出用户信息,找到用户的角色id,根据角色id去寻找其下所有的树id,这里有一个细节需要注意的是这个树id必须要满足是顶级id,才需要去进行递归遍历它的子树。
递归过程如下:
//trees 服务树递归返回数据
func trees(tree []*models.Tree) []*models.Tree {
var nodes []*models.Tree
if reflect.ValueOf(tree).IsValid() {
for k, v := range tree {
orm.Eloquent.Model(&models.TreeIndex{}).Where("del_flag = 0 && fat_id in(?)", v.Id).Order("id").Find(&nodes)
for kk := range nodes {
tree[k].Children = append(tree[k].Children, nodes[kk])
}
trees(nodes)
}
}
return tree
}