@Override
public List<CategoryEntity> listWithTree() {
// 1、一条sql 查询出所有分类商品列表
List<CategoryEntity> entities = baseMapper.selectList(null);
List<CategoryEntity> level1Menus = entities.stream().filter(categoryEntity ->
// 2、过滤出所有的 一级 类目
categoryEntity.getParentCid() == 0
).map((menu) -> {
// 3、递归找出所有的 子类目
menu.setChildren(getChildrens(menu, entities));
return menu;
}).sorted((menu1, menu2) -> {
// 4、将两个类目前后的排序之差作为排序规则
return (menu1.getSort() == null ? 0 : menu1.getSort()) - (menu2.getSort() == null ? 0 : menu2.getSort());
}).collect(Collectors.toList()); // 5、收集整理好的三级分类列表数据集合
return level1Menus;
}
private List<CategoryEntity> getChildrens(CategoryEntity currentMenu, List<CategoryEntity> allMenus) {
List<CategoryEntity> children = allMenus.stream().filter(categoryEntity -> {
// 父子关系:下一页的父分类id == 当前页的分类id
return categoryEntity.getParentCid() == currentMenu.getCatId();
}).map(categoryEntity -> {
// 递归遍历是否还有下一级
categoryEntity.setChildren(getChildrens(categoryEntity, allMenus));
return categoryEntity;
}).sorted((menu1, menu2) -> {
return (menu1.getSort() == null ? 0 : menu1.getSort()) - (menu2.getSort() == null ? 0 : menu2.getSort());
}).collect(Collectors.toList());
return children;
}
十七,递归获取三级分类列表数据
最新推荐文章于 2023-05-14 23:09:47 发布