package com.mes.menu.service.impl; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mes.menu.entity.SysMenu; import com.mes.menu.mapper.SysMenuMapper; import com.mes.menu.service.SysMenuService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.List; import java.util.stream.Collectors; /** *

* 菜单表 服务实现类 *

* * @author zhoush * @since 2024-04-11 */ @Service @Slf4j public class SysMenuServiceImpl extends ServiceImpl implements SysMenuService { @Override public List getMenuTree() { List menuList = this.baseMapper.selectList(null); return create(menuList); } /** * 将数据库中查询出来的list集合传入此方法即可获得排成树形结构的list集合 * * @param lists * @return */ public List create(List lists) { List deptTreeList = lists.stream() .filter(item -> item.getParentId() == 0) .map(item -> { item.setChildren(getChildren(item, lists)); return item; }).collect(Collectors.toList()); return deptTreeList; } /** * 此方法将被递归调用 * * @param menu * @param menus * @return */ private List getChildren(SysMenu menu, List menus) { List res = menus.stream() .filter(item -> item.getParentId().equals(menu.getId())) .map(item -> { item.setChildren(getChildren(item, menus)); return item; }).collect(Collectors.toList()); log.info("菜单树:{}", JSONUtil.toJsonStr(res)); return res; } }