1.商品分类数据导入数据库
pms_catelog.sql
2.CategoryController添加方法
/**
* 查询商品所有分类,并且子分类以树形结构组装起来
*/
@RequestMapping("/list/tree")
public R listWithTree(@RequestParam Map<String, Object> params){
List<CategoryEntity> list = categoryService.listWithTree();
return R.ok().put("data", list);
}
3.service添加方法
CategoryService
List<CategoryEntity> listWithTree();
CategoryServiceImpl
@Override
public List<CategoryEntity> listWithTree() {
//查询所有分类
List<CategoryEntity> entitys = baseMapper.selectList(null);
//组装成父子树结构
List<CategoryEntity> list = entitys.stream()
//过滤所有根节点
.filter(categoryEntity -> categoryEntity.getParentCid() == 0)
//设置子节点
.map(categoryEntity -> {
categoryEntity.setChildren(getChildrens(categoryEntity, entitys));
return categoryEntity;
})
//进行排序
.sorted((menu1, menu2) -> (menu1.getSort()==null?0:menu1.getSort()) - (menu2.getSort()==null?0:menu2.getSort()))
.collect(Collectors.toList());
return list;
}
private List<CategoryEntity> getChildrens(CategoryEntity category, List<CategoryEntity> entitys) {
List<CategoryEntity> children = entitys.stream()
//过滤所有根节点
.filter(categoryEntity -> categoryEntity.getParentCid() == category.getCatId())
//设置子节点
.map(categoryEntity -> {
categoryEntity.setChildren(getChildrens(categoryEntity, entitys));
return categoryEntity;
})
//进行排序
.sorted((menu1, menu2) -> (menu1.getSort()==null?0:menu1.getSort()) - (menu2.getSort()==null?0:menu2.getSort()))
.collect(Collectors.toList());
return children;
}
4.代码技巧
可以每写一点代码就进行简单测试
1.查询所有分类数据,进行测试
2.所有一级分类的数据,进行测试
3.查询商品所有分类,并且父子分类以树形结构组装起来,进行测试
4.修改数据库的排序方式,进行测试