mitao
2025-03-28 b44b174f656aac1fe03e7f96851e564c3982f67d
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysMenuController.java
@@ -8,6 +8,8 @@
import com.sinata.common.enums.BusinessType;
import com.sinata.common.utils.StringUtils;
import com.sinata.system.service.ISysMenuService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
@@ -20,20 +22,60 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * 菜单信息
 * 
 * @author ruoyi
 */
@Api(tags = {"菜单相关接口"})
@RestController
@RequestMapping("/system/menu")
@RequestMapping("/backend/system/menu")
public class SysMenuController extends BaseController
{
    @Autowired
    private ISysMenuService menuService;
    @ApiOperation("菜单权限(有层级)")
    @GetMapping("/levelList")
    public AjaxResult levelList() {
        // 获取当前角色的菜单列表
        List<SysMenu> menus = menuService.selectList();
        if (menus.size() == 0) {
            return AjaxResult.success(new ArrayList<>());
        }
        // 第一级
        List<SysMenu> s1 = menus.stream().filter(e -> e.getMenuType().equals("M") && e.getParentId().equals(0L)).collect(Collectors.toList());
        // 构建以 parentId 为键的 Map
        Map<Long, List<SysMenu>> menuMap = menus.stream()
                .collect(Collectors.groupingBy(SysMenu::getParentId));
        // 构建树形结构
        buildMenuTree(menuMap, s1);
        return AjaxResult.success(s1);
    }
    /**
     * 封装树形层级
     *
     * @param menuMap
     * @param s1
     */
    public void buildMenuTree(Map<Long, List<SysMenu>> menuMap, List<SysMenu> s1) {
        for (SysMenu sysMenu : s1) {
            // 获取当前菜单的子级
            List<SysMenu> children = menuMap.getOrDefault(sysMenu.getMenuId(), new ArrayList<>());
            sysMenu.setChildren(children);
            //移除当前菜单
            menuMap.remove(sysMenu.getMenuId());
            // 递归设置子级菜单
            buildMenuTree(menuMap, children);
        }
    }
    /**
     * 获取菜单列表
     */