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;
}
}