/**
* 查出所有分类以及子分类,以树形结构组装
* @return
*/
@Override
public List<CategoryEntity> listWithTree() {
// 1. 查出所有分类
List<CategoryEntity> entities = baseMapper.selectList(null);
// 2.组装成父子结构
// 2.1 找所有的一级分类
List<CategoryEntity> level1Menu = entities.stream().filter((categoryEntity) -> {
return categoryEntity.getParentCid() == 0;
}).map((menu)->{
menu.setChildren(getChildrens(menu,entities));
return menu;
}).sorted((menu1,menu2)->{
return (menu1.getSort()==null?0:menu1.getSort()) - (menu2.getSort()==null?0:menu2.getSort());
}).collect(Collectors.toList());
return level1Menu;
}
/**
* 递归查找所有菜单的子菜单
* @param root
* @param all
* @return
*/
private List<CategoryEntity> getChildrens(CategoryEntity root,List<CategoryEntity> all){
List<CategoryEntity> childrens = all.stream().filter((entity) -> {
return entity.getParentCid() == root.getCatId();
}).map((categoryEntity)->{
// 1. 找到子菜单
categoryEntity.setChildren(getChildrens(categoryEntity,all));
return categoryEntity;
}).sorted((menu1,menu2)->{
// 2. 菜单排序
return (menu1.getSort()==null?0:menu1.getSort()) - (menu2.getSort()==null?0:menu2.getSort());
}).collect(Collectors.toList());
return childrens;
}
菜单的三级分类查询方法
最新推荐文章于 2023-02-04 18:37:18 发布