//多级角色递归查询方法
public List<ProductCategory> iterateRoles(List<ProductCategory> menuVoList,String pid,Long level){
List<ProductCategory> result = new ArrayList<>();
++level;//level计算当前处于第几级
for (ProductCategory menuVo : menuVoList) {
String menuid = menuVo.getId().toString();//获取菜单的id
String parentid = menuVo.getParentId().toString();//获取菜单的父id
if(parentid != "0"){
if(parentid.equals(pid)){
menuVo.setLevel(level);
List<ProductCategory> iterateMenu = iterateRoles(menuVoList,menuid,level);
menuVo.setProductCategories(iterateMenu);
result.add(menuVo);
}
}
}
return result;
}
思路:先从第三级思考,为什么会是3?加1!哪里的加1,上级的加1,上级是2,2+1=3
2是怎么来的,也是上级加1来的,总结到最上一级就是0.
突破口:menuVo.setLevel(level);
iterateRoles(menuVoList,menuid,level);
同级的不能改变只能都是同一个值,那么level就注定只能在for外面了,level也只能来的时候在加一,在其他地方会有其他错误