获取菜单权限树菜单列表给前端

64 阅读1分钟

Java代码

@Override
public RespondBean findAllMenu(String userId) {
    List<MenuNodeVO> allMenu = menupermMapper.findAllMenu(userId);
    // 存储每个菜单节点
    Map<String, MenuNodeVO> nodeMap = allMenu.stream()
            .collect(Collectors.toMap(MenuNodeVO::getMenuId, node -> node));
    // 构建树
    List<MenuNodeVO> roots = new ArrayList<>();
    for (MenuNodeVO node : allMenu) {
        //如果没有父节点则加入根节点
        if (node.getParentMenuId() == null || node.getParentMenuId().isEmpty()) {
            roots.add(node);
        } else {
            //拿到父节点对象把该节点加到父节点的子节点列表对象
            MenuNodeVO parentNode = nodeMap.get(node.getParentMenuId());
            if (parentNode != null) {
                parentNode.getChildren().add(node);
            }
        }
    }
    return RespondBean.success(roots);
}

实体类


@Data
public class MenuNodeVO {

    /**
     * 菜单权限配置
     */
    private String menuPermId;
    /**
     *机构编码
     */
    private String instCode;
    /**
     *用户id
     */
    private String userId;
    /**
     *菜单id
     */
    private String menuId;
    /**
     *菜单类型
     */
    private String menuType;
    /**
     *目录编码
     */
    private String menuCode;
    /**
     *目录名称
     */
    private String menuName;
    /**
     *菜单url地址
     */
    private String path;
    /**
     *上级目录ID
     */
    private String parentMenuId;
    /**
     *上级目录名称
     */
    private String parentMenuName;
    /**
     *菜单顺序
     */
    private Integer menuOrder;
    private List<MenuNodeVO> children = new ArrayList<>();
}