Adquisición de estructura de árbol recursiva de clasificación de tres niveles del producto
controlador
Agregue un nuevo método a la capa de control GategoryController del módulo de producto
/**
* 返回三级分类tree
*/
@RequestMapping("/list/tree")
public R listTree(){
List<CategoryEntity> tree = categoryService.getTree();
return R.ok().put("data", tree);
}
entidad
Agregue la estructura de subclase
@TableField (exist = false) mybatis-plus annotation-not en la estructura de la tabla
/**
* 子类category
*/
@TableField(exist = false)
private List<CategoryEntity> child;
Servicio
GateService agregado
List<CategoryEntity> getTree();
Clase de implementación
@Override
public List<CategoryEntity> getTree() {
//查询出所有
List<CategoryEntity> all =baseMapper.selectList(null);
//组装成父子结构——改变category的结构
//找到所有的一级分类
List<CategoryEntity> lv1Menu = all.stream().filter(menu->
menu.getParentCid()== 0
).map((menu)->{
//通过递归找到子分类
menu.setChild(getChild(menu,all));
return menu;
}).sorted((menu1,menu2)->{
return menu1.getSort()-menu2.getSort();
}).collect(Collectors.toList());
return lv1Menu;
}
Entre ellos, map () encuentra todas las subclases llamando al método recursivo
private List<CategoryEntity> getChild(CategoryEntity root , List<CategoryEntity> all){
List<CategoryEntity> child = all.stream().filter(menu->
menu.getParentCid()==root.getCatId()).map((menu)->{
//通过递归找到子分类
menu.setChild(getChild(menu,all));
return menu;
}).sorted((menu1,menu2)->{
return menu1.getSort()-menu2.getSort();
}).collect(Collectors.toList());
return child;
}
prueba
Iniciar visita de proyecto
http: // localhost: 10000 / producto / categoría / lista / árbol
Obtener json