| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- package com.nuojing.admin.service.impl;
- import com.nuojing.admin.domain.entity.Menu;
- import com.nuojing.admin.domain.vo.MenuVO;
- import java.util.ArrayList;
- import java.util.Comparator;
- import java.util.LinkedHashMap;
- import java.util.List;
- import java.util.Map;
- final class MenuTreeBuilder {
- private MenuTreeBuilder() {
- }
- static List<MenuVO> build(List<Menu> menus) {
- Map<Long, MenuVO> nodeMap = new LinkedHashMap<>();
- menus.stream()
- .sorted(Comparator.comparing(Menu::getSort, Comparator.nullsLast(Integer::compareTo)))
- .forEach(menu -> nodeMap.put(menu.getId(), toVO(menu)));
- List<MenuVO> roots = new ArrayList<>();
- nodeMap.values().forEach(menu -> {
- MenuVO parent = nodeMap.get(menu.getParentId());
- if (parent == null || menu.getParentId() == null || menu.getParentId() == 0) {
- roots.add(menu);
- } else {
- parent.getChildren().add(menu);
- }
- });
- return roots;
- }
- private static MenuVO toVO(Menu menu) {
- MenuVO vo = new MenuVO();
- vo.setId(menu.getId());
- vo.setParentId(menu.getParentId());
- vo.setTitle(menu.getMenuName());
- vo.setPath(menu.getPath());
- vo.setComponent(menu.getComponent());
- vo.setName(menu.getRouteName());
- vo.setIcon(menu.getIcon());
- vo.setPermission(menu.getPermission());
- vo.setMenuType(menu.getMenuType());
- vo.setSort(menu.getSort());
- vo.setStatus(menu.getStatus());
- vo.setHidden(menu.getHidden() != null && menu.getHidden() == 1);
- return vo;
- }
- }
|