无限极构建权限树
/**
* 建一个listTemp供循环用(注意这是类似同一人在两公司供职的情景)
*/
public static List<Permission> formartWholeTree(List<Permission> wholePermissions) {
List<Permission> lev1s = wholePermissions.stream().filter(i->i.getParentId()==0).sorted((a,b)->a.getSortNum()-b.getSortNum()).collect(Collectors.toList());
List<Permission> listTemp = new ArrayList<Permission>();
wholePermissions.stream().forEach(e->listTemp.add(e)); // 元素两边供职
while(listTemp.size()>0) {
Permission t = listTemp.remove(0);
removeIds.add(t.getId());
for(Permission p: wholePermissions) {
if(p.getParentId()==t.getId()) {
t.getChilds().add(p);
}
}
}
return lev1s;
}
构建路由跟上面基本一致:
/**
* 构建用户的权限路由
* @param userRouters
* @return
*/
public static List<Permission> buildRouter(List<Permission> userRouters) {
List<Permission> listTemp = new ArrayList<Permission>();
userRouters.stream().forEach(e->listTemp.add(e)); // 元素两边供职
while(listTemp.size()>0) {
Permission t = listTemp.remove(0);
for(Permission p: userRouters) {
if(p.getParentId()==t.getId()) {
t.getChilds().add(p);
}
}
}
List<Integer> ids = userRouters.stream().map(i->i.getId()).collect(Collectors.toList());
return userRouters.stream().filter(i->!ids.contains(i.getParentId())).collect(Collectors.toList());
}
无聊我就学英语

浙公网安备 33010602011771号