|
|
@ -48,29 +48,55 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public List<MenuVo> buildMenuRoute(List<Menu> menus) { |
|
|
|
public List<MenuVo> buildMenuRoute(List<Menu> menus) { |
|
|
|
|
|
|
|
return buildMenuRoute(menus, null); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public List<MenuVo> buildMenuRoute(List<Menu> menus, MenuVo superMenuVo) { |
|
|
|
List<MenuVo> menuVoList = menus.stream().map(menu -> { |
|
|
|
List<MenuVo> menuVoList = menus.stream().map(menu -> { |
|
|
|
MenuVo menuVo = new MenuVo(); |
|
|
|
MenuVo menuVo = new MenuVo(); |
|
|
|
menuVo.setName(menu.getName()); |
|
|
|
menuVo.setName(menu.getName()); |
|
|
|
menuVo.setComponent(menu.getComponent()); |
|
|
|
menuVo.setComponent(menu.getComponent()); |
|
|
|
// 检测是否是根节点,0:代表根节点
|
|
|
|
|
|
|
|
if (MenuEnum.MENU_0.getValue().equals(menu.getParentId()) && !ReUtil.isMatch(RegexConstants.MATCHER_URL, menu.getPath())) { |
|
|
|
// 配置路由设置属性
|
|
|
|
menuVo.setComponent("Layout"); |
|
|
|
MetaVo metaVo = new MetaVo(); |
|
|
|
|
|
|
|
metaVo.setHideMenu(MenuEnum.MENU_1.getValue().equals(menu.getHideMenu())); |
|
|
|
|
|
|
|
metaVo.setIcon(menu.getIcon()); |
|
|
|
|
|
|
|
metaVo.setTitle(menu.getName()); |
|
|
|
|
|
|
|
metaVo.setKeepAlive(menu.getKeepAlive().equals(MenuEnum.MENU_1.getValue())); |
|
|
|
|
|
|
|
metaVo.setHideChildrenInMenu(MenuEnum.MENU_1.getValue().equals(menu.getHideChildrenMenu())); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 配置vue-router的规则根级前面必须加上/,要不然会报错
|
|
|
|
|
|
|
|
if (MenuEnum.MENU_0.getValue().equals(menu.getParentId())) { |
|
|
|
menuVo.setPath(menu.getPath().startsWith("/") ? menu.getPath() : "/".concat(menu.getPath())); |
|
|
|
menuVo.setPath(menu.getPath().startsWith("/") ? menu.getPath() : "/".concat(menu.getPath())); |
|
|
|
String redirect = "/".concat(handleRouteRedirect(menu)); |
|
|
|
|
|
|
|
menuVo.setRedirect(StrUtil.isNotBlank(redirect) ? redirect : MenuEnum.MENU_ROUTE_DEFAULT_URL.getValue()); |
|
|
|
|
|
|
|
} else { |
|
|
|
} else { |
|
|
|
menuVo.setPath(menu.getPath()); |
|
|
|
menuVo.setPath(menu.getPath()); |
|
|
|
} |
|
|
|
} |
|
|
|
// 配置路由设置属性
|
|
|
|
|
|
|
|
menuVo.setMeta(new MetaVo() |
|
|
|
|
|
|
|
.setTitle(menu.getName()) |
|
|
|
|
|
|
|
.setIcon(menu.getIcon()) |
|
|
|
|
|
|
|
.setHideMenu(MenuEnum.MENU_1.getValue().equals(menu.getHideMenu())) |
|
|
|
|
|
|
|
.setKeepAlive(menu.getKeepAlive().equals(MenuEnum.MENU_1.getValue()))); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 菜单目录配置,支持多级子菜单
|
|
|
|
|
|
|
|
if (StrUtil.equalsIgnoreCase(MenuEnum.MENU_M.getValue(), menu.getType())) { |
|
|
|
|
|
|
|
if (MenuEnum.MENU_0.getValue().equals(menu.getParentId())) { |
|
|
|
|
|
|
|
menuVo.setComponent(MenuEnum.COMPONENT_LAYOUT.getValue()); |
|
|
|
|
|
|
|
String redirect = "/".concat(handleRouteRedirect(menu)); |
|
|
|
|
|
|
|
menuVo.setRedirect(StrUtil.isNotBlank(redirect) ? redirect : MenuEnum.MENU_ROUTE_DEFAULT_URL.getValue()); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
menuVo.setComponent(MenuEnum.COMPONENT_PARENT_LAYOUT.getValue()); |
|
|
|
|
|
|
|
menuVo.setRedirect(superMenuVo.getRedirect()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 外链配置,自动识别填充IFRAME (两种模式,跳转页面)
|
|
|
|
|
|
|
|
} else if (StrUtil.equalsIgnoreCase(MenuEnum.MENU_C.getValue(), menu.getType()) && ReUtil.isMatch(RegexConstants.MATCHER_URL, menu.getPath())) { |
|
|
|
|
|
|
|
menuVo.setComponent(MenuEnum.COMPONENT_IFRAME.getValue()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 外链配置 (两种模式,内嵌页面)
|
|
|
|
|
|
|
|
} else if (StrUtil.equalsIgnoreCase(MenuEnum.MENU_C.getValue(), menu.getType()) && ReUtil.isMatch(RegexConstants.MATCHER_URL, menu.getComponent())) { |
|
|
|
|
|
|
|
menuVo.setComponent(MenuEnum.COMPONENT_IFRAME.getValue()); |
|
|
|
|
|
|
|
metaVo.setFrameSrc(menu.getComponent()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
menuVo.setMeta(metaVo); |
|
|
|
List<Menu> childrenMenus = menu.getChildren(); |
|
|
|
List<Menu> childrenMenus = menu.getChildren(); |
|
|
|
if (childrenMenus != null && childrenMenus.size() > 0 && MenuEnum.MENU_M.getValue().equals(menu.getType())) { |
|
|
|
if (childrenMenus != null && childrenMenus.size() > 0 && MenuEnum.MENU_M.getValue().equals(menu.getType())) { |
|
|
|
menuVo.setChildren(buildMenuRoute(childrenMenus)); |
|
|
|
menuVo.setChildren(buildMenuRoute(childrenMenus, menuVo)); |
|
|
|
} |
|
|
|
} |
|
|
|
return menuVo; |
|
|
|
return menuVo; |
|
|
|
}).collect(Collectors.toList()); |
|
|
|
}).collect(Collectors.toList()); |
|
|
@ -132,5 +158,4 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me |
|
|
|
return menuList; |
|
|
|
return menuList; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|