liujie
2025-11-20 17378574f495b8b0fa88e1a49a12d022664bdf9d
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
@@ -1,17 +1,13 @@
package com.ruoyi.system.service.impl;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.system.mapper.SysMenuMapper;
import com.ruoyi.system.mapper.SysRoleMapper;
import com.ruoyi.system.mapper.SysRoleMenuMapper;
import com.ruoyi.system.utils.util.SpringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.common.constant.Constants;
@@ -25,6 +21,8 @@
import com.ruoyi.system.domain.vo.MetaVo;
import com.ruoyi.system.domain.vo.RouterVo;
import com.ruoyi.system.service.ISysMenuService;
import static java.util.Comparator.comparing;
/**
 * 菜单 业务层处理
@@ -362,6 +360,36 @@
        return menuMapper.selectList();
    }
    @Override
    public List<SysMenu> selectResources() {
        List<SysMenu> allResources = menuMapper.selectList();
        SysMenu item;
        //获取根节点的集合
        List<SysMenu> root = new ArrayList<>();
        Map<Long, SysMenu> tempMap = new HashMap<>(3);
        //子节点集合
        SysMenu parent;
        for (SysMenu resources : allResources) {
            item = SpringUtils.beanCopy(resources, SysMenu.class);
            //每次循环都将集合重新循环添加到父集合中
            tempMap.put(resources.getMenuId(), item);
            parent = tempMap.get(resources.getParentId());
            if (Objects.nonNull(parent)) {
                //父集合不为空时,获取下级集合
                //子节点集合
                parent.getChildren().add(item);
                // 对子集排序,升序
//                parent.getChildren().sort(comparing(SysMenu::getSort));
            } else {
                //根集合
                root.add(item);
                // 对根集合排序,升序
//                root.sort(comparing(SysMenu::getSort));
            }
        }
        return root;
    }
    /**
     * 获取路由名称
     *