Diario de aprendizaje del almacén de granos (23) - Adquisición de estructura de árbol recursiva de clasificación de productos básicos en tres niveles

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

Supongo que te gusta

Origin blog.csdn.net/menxinziwen/article/details/115148085
Recomendado
Clasificación