From e8483729b187824ceac987be6a57aa8c60046973 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期四, 02 二月 2023 18:34:23 +0800
Subject: [PATCH] update 优化 SysMenu 相关代码
---
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysMenuVo.java | 8 +
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysMenuController.java | 13 +-
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysMenu.java | 84 +++++++++++++++-
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java | 6
ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/core/mapper/BaseMapperPlus.java | 4
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysDictTypeController.java | 17 +-
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java | 3
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java | 4
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java | 145 +++-------------------------
9 files changed, 129 insertions(+), 155 deletions(-)
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/core/mapper/BaseMapperPlus.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/core/mapper/BaseMapperPlus.java
index 2c40e17..ee1bc58 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/core/mapper/BaseMapperPlus.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/core/mapper/BaseMapperPlus.java
@@ -157,6 +157,10 @@
return BeanCopyUtils.copy(obj, voClass);
}
+ default List<V> selectVoList() {
+ return selectVoList(new QueryWrapper<>(), this.currentVoClass());
+ }
+
default List<V> selectVoList(Wrapper<T> wrapper) {
return selectVoList(wrapper, this.currentVoClass());
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysDictTypeController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysDictTypeController.java
index 291920d..11ddb9c 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysDictTypeController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysDictTypeController.java
@@ -1,23 +1,22 @@
package com.ruoyi.system.controller.system;
import cn.dev33.satoken.annotation.SaCheckPermission;
-import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.core.constant.UserConstants;
-import com.ruoyi.common.web.core.BaseController;
-import com.ruoyi.common.mybatis.core.page.PageQuery;
import com.ruoyi.common.core.domain.R;
-import com.ruoyi.system.domain.SysDictType;
-import com.ruoyi.common.mybatis.core.page.TableDataInfo;
-import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.excel.utils.ExcelUtil;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.mybatis.core.page.PageQuery;
+import com.ruoyi.common.mybatis.core.page.TableDataInfo;
+import com.ruoyi.common.web.core.BaseController;
import com.ruoyi.system.domain.bo.SysDictTypeBo;
import com.ruoyi.system.domain.vo.SysDictTypeVo;
import com.ruoyi.system.service.ISysDictTypeService;
+import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
-import jakarta.servlet.http.HttpServletResponse;
import java.util.List;
/**
@@ -120,8 +119,8 @@
* 鑾峰彇瀛楀吀閫夋嫨妗嗗垪琛�
*/
@GetMapping("/optionselect")
- public R<List<SysDictType>> optionselect() {
- List<SysDictType> dictTypes = dictTypeService.selectDictTypeAll();
+ public R<List<SysDictTypeVo>> optionselect() {
+ List<SysDictTypeVo> dictTypes = dictTypeService.selectDictTypeAll();
return R.ok(dictTypes);
}
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysMenuController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysMenuController.java
index 0671abe..7c2f167 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysMenuController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysMenuController.java
@@ -5,11 +5,10 @@
import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.StringUtils;
-import com.ruoyi.common.web.core.BaseController;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.satoken.utils.LoginHelper;
-import com.ruoyi.system.domain.SysMenu;
+import com.ruoyi.common.web.core.BaseController;
import com.ruoyi.system.domain.bo.SysMenuBo;
import com.ruoyi.system.domain.vo.SysMenuVo;
import com.ruoyi.system.service.ISysMenuService;
@@ -38,8 +37,8 @@
*/
@SaCheckPermission("system:menu:list")
@GetMapping("/list")
- public R<List<SysMenu>> list(SysMenu menu) {
- List<SysMenu> menus = menuService.selectMenuList(menu, LoginHelper.getUserId());
+ public R<List<SysMenuVo>> list(SysMenuBo menu) {
+ List<SysMenuVo> menus = menuService.selectMenuList(menu, LoginHelper.getUserId());
return R.ok(menus);
}
@@ -58,8 +57,8 @@
* 鑾峰彇鑿滃崟涓嬫媺鏍戝垪琛�
*/
@GetMapping("/treeselect")
- public R<List<Tree<Long>>> treeselect(SysMenu menu) {
- List<SysMenu> menus = menuService.selectMenuList(menu, LoginHelper.getUserId());
+ public R<List<Tree<Long>>> treeselect(SysMenuBo menu) {
+ List<SysMenuVo> menus = menuService.selectMenuList(menu, LoginHelper.getUserId());
return R.ok(menuService.buildMenuTreeSelect(menus));
}
@@ -70,7 +69,7 @@
*/
@GetMapping(value = "/roleMenuTreeselect/{roleId}")
public R<Map<String, Object>> roleMenuTreeselect(@PathVariable("roleId") Long roleId) {
- List<SysMenu> menus = menuService.selectMenuList(LoginHelper.getUserId());
+ List<SysMenuVo> menus = menuService.selectMenuList(LoginHelper.getUserId());
return R.ok(Map.of(
"checkedKeys", menuService.selectMenuListByRoleId(roleId),
"menus", menuService.buildMenuTreeSelect(menus)
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysMenu.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysMenu.java
index aec2f3b..1a320ef 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysMenu.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysMenu.java
@@ -2,14 +2,12 @@
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonInclude;
+import com.ruoyi.common.core.constant.Constants;
+import com.ruoyi.common.core.constant.UserConstants;
+import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.mybatis.core.domain.TreeEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
-
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
/**
* 鑿滃崟鏉冮檺琛� sys_menu
@@ -93,4 +91,80 @@
*/
private String remark;
+ /**
+ * 鑾峰彇璺敱鍚嶇О
+ */
+ public String getRouteName() {
+ String routerName = StringUtils.capitalize(path);
+ // 闈炲閾惧苟涓旀槸涓�绾х洰褰曪紙绫诲瀷涓虹洰褰曪級
+ if (isMenuFrame()) {
+ routerName = StringUtils.EMPTY;
+ }
+ return routerName;
+ }
+
+ /**
+ * 鑾峰彇璺敱鍦板潃
+ */
+ public String getRouterPath() {
+ String routerPath = this.path;
+ // 鍐呴摼鎵撳紑澶栫綉鏂瑰紡
+ if (getParentId() != 0L && isInnerLink()) {
+ routerPath = innerLinkReplaceEach(routerPath);
+ }
+ // 闈炲閾惧苟涓旀槸涓�绾х洰褰曪紙绫诲瀷涓虹洰褰曪級
+ if (0L == getParentId() && UserConstants.TYPE_DIR.equals(getMenuType())
+ && UserConstants.NO_FRAME.equals(getIsFrame())) {
+ routerPath = "/" + this.path;
+ }
+ // 闈炲閾惧苟涓旀槸涓�绾х洰褰曪紙绫诲瀷涓鸿彍鍗曪級
+ else if (isMenuFrame()) {
+ routerPath = "/";
+ }
+ return routerPath;
+ }
+
+ /**
+ * 鑾峰彇缁勪欢淇℃伅
+ */
+ public String getComponent() {
+ String component = UserConstants.LAYOUT;
+ if (StringUtils.isNotEmpty(this.component) && !isMenuFrame()) {
+ component = this.component;
+ } else if (StringUtils.isEmpty(this.component) && getParentId() != 0L && isInnerLink()) {
+ component = UserConstants.INNER_LINK;
+ } else if (StringUtils.isEmpty(this.component) && isParentView()) {
+ component = UserConstants.PARENT_VIEW;
+ }
+ return component;
+ }
+
+ /**
+ * 鏄惁涓鸿彍鍗曞唴閮ㄨ烦杞�
+ */
+ public boolean isMenuFrame() {
+ return getParentId() == 0L && UserConstants.TYPE_MENU.equals(menuType) && isFrame.equals(UserConstants.NO_FRAME);
+ }
+
+ /**
+ * 鏄惁涓哄唴閾剧粍浠�
+ */
+ public boolean isInnerLink() {
+ return isFrame.equals(UserConstants.NO_FRAME) && StringUtils.ishttp(path);
+ }
+
+ /**
+ * 鏄惁涓簆arent_view缁勪欢
+ */
+ public boolean isParentView() {
+ return getParentId() != 0L && UserConstants.TYPE_DIR.equals(menuType);
+ }
+
+ /**
+ * 鍐呴摼鍩熷悕鐗规畩瀛楃鏇挎崲
+ */
+ public static String innerLinkReplaceEach(String path) {
+ return StringUtils.replaceEach(path, new String[]{Constants.HTTP, Constants.HTTPS, Constants.WWW, "."},
+ new String[]{"", "", "", "/"});
+ }
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysMenuVo.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysMenuVo.java
index 9da959f..5283c64 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysMenuVo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysMenuVo.java
@@ -4,8 +4,9 @@
import java.io.Serial;
import java.io.Serializable;
+import java.util.ArrayList;
import java.util.Date;
-
+import java.util.List;
/**
@@ -105,4 +106,9 @@
*/
private Date createTime;
+ /**
+ * 瀛愯彍鍗�
+ */
+ private List<SysMenuVo> children = new ArrayList<>();
+
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java
index bd4b8d7..546e1bf 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java
@@ -1,7 +1,6 @@
package com.ruoyi.system.service;
import com.ruoyi.common.mybatis.core.page.PageQuery;
-import com.ruoyi.system.domain.SysDictType;
import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import com.ruoyi.system.domain.bo.SysDictTypeBo;
import com.ruoyi.system.domain.vo.SysDictDataVo;
@@ -32,7 +31,7 @@
*
* @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅
*/
- List<SysDictType> selectDictTypeAll();
+ List<SysDictTypeVo> selectDictTypeAll();
/**
* 鏍规嵁瀛楀吀绫诲瀷鏌ヨ瀛楀吀鏁版嵁
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
index 43f1a86..1a97b27 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
@@ -22,7 +22,7 @@
* @param userId 鐢ㄦ埛ID
* @return 鑿滃崟鍒楄〃
*/
- List<SysMenu> selectMenuList(Long userId);
+ List<SysMenuVo> selectMenuList(Long userId);
/**
* 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃
@@ -31,7 +31,7 @@
* @param userId 鐢ㄦ埛ID
* @return 鑿滃崟鍒楄〃
*/
- List<SysMenu> selectMenuList(SysMenu menu, Long userId);
+ List<SysMenuVo> selectMenuList(SysMenuBo menu, Long userId);
/**
* 鏍规嵁鐢ㄦ埛ID鏌ヨ鏉冮檺
@@ -79,7 +79,7 @@
* @param menus 鑿滃崟鍒楄〃
* @return 涓嬫媺鏍戠粨鏋勫垪琛�
*/
- List<Tree<Long>> buildMenuTreeSelect(List<SysMenu> menus);
+ List<Tree<Long>> buildMenuTreeSelect(List<SysMenuVo> menus);
/**
* 鏍规嵁鑿滃崟ID鏌ヨ淇℃伅
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
index 952e198..aae3159 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
@@ -84,8 +84,8 @@
* @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅
*/
@Override
- public List<SysDictType> selectDictTypeAll() {
- return baseMapper.selectList();
+ public List<SysDictTypeVo> selectDictTypeAll() {
+ return baseMapper.selectVoList();
}
/**
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
index 7e13c9f..d34ef32 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
@@ -7,8 +7,8 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.constant.UserConstants;
+import com.ruoyi.common.core.utils.BeanCopyUtils;
import com.ruoyi.common.core.utils.StreamUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.TreeBuildUtils;
@@ -49,8 +49,8 @@
* @return 鑿滃崟鍒楄〃
*/
@Override
- public List<SysMenu> selectMenuList(Long userId) {
- return selectMenuList(new SysMenu(), userId);
+ public List<SysMenuVo> selectMenuList(Long userId) {
+ return selectMenuList(new SysMenuBo(), userId);
}
/**
@@ -60,11 +60,11 @@
* @return 鑿滃崟鍒楄〃
*/
@Override
- public List<SysMenu> selectMenuList(SysMenu menu, Long userId) {
- List<SysMenu> menuList = null;
+ public List<SysMenuVo> selectMenuList(SysMenuBo menu, Long userId) {
+ List<SysMenuVo> menuList;
// 绠$悊鍛樻樉绀烘墍鏈夎彍鍗曚俊鎭�
if (LoginHelper.isAdmin(userId)) {
- menuList = baseMapper.selectList(new LambdaQueryWrapper<SysMenu>()
+ menuList = baseMapper.selectVoList(new LambdaQueryWrapper<SysMenu>()
.like(StringUtils.isNotBlank(menu.getMenuName()), SysMenu::getMenuName, menu.getMenuName())
.eq(StringUtils.isNotBlank(menu.getVisible()), SysMenu::getVisible, menu.getVisible())
.eq(StringUtils.isNotBlank(menu.getStatus()), SysMenu::getStatus, menu.getStatus())
@@ -78,7 +78,8 @@
.eq(StringUtils.isNotBlank(menu.getStatus()), "m.status", menu.getStatus())
.orderByAsc("m.parent_id")
.orderByAsc("m.order_num");
- menuList = baseMapper.selectMenuListByUserId(wrapper);
+ List<SysMenu> list = baseMapper.selectMenuListByUserId(wrapper);
+ menuList = BeanCopyUtils.copyList(list, SysMenuVo.class);
}
return menuList;
}
@@ -127,7 +128,7 @@
*/
@Override
public List<SysMenu> selectMenuTreeByUserId(Long userId) {
- List<SysMenu> menus = null;
+ List<SysMenu> menus;
if (LoginHelper.isAdmin(userId)) {
menus = baseMapper.selectMenuTreeAll();
} else {
@@ -160,9 +161,9 @@
for (SysMenu menu : menus) {
RouterVo router = new RouterVo();
router.setHidden("1".equals(menu.getVisible()));
- router.setName(getRouteName(menu));
- router.setPath(getRouterPath(menu));
- router.setComponent(getComponent(menu));
+ router.setName(menu.getRouteName());
+ router.setPath(menu.getRouterPath());
+ router.setComponent(menu.getComponent());
router.setQuery(menu.getQueryParam());
router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath()));
List<SysMenu> cMenus = menu.getChildren();
@@ -170,7 +171,7 @@
router.setAlwaysShow(true);
router.setRedirect("noRedirect");
router.setChildren(buildMenus(cMenus));
- } else if (isMenuFrame(menu)) {
+ } else if (menu.isMenuFrame()) {
router.setMeta(null);
List<RouterVo> childrenList = new ArrayList<>();
RouterVo children = new RouterVo();
@@ -181,12 +182,12 @@
children.setQuery(menu.getQueryParam());
childrenList.add(children);
router.setChildren(childrenList);
- } else if (menu.getParentId().intValue() == 0 && isInnerLink(menu)) {
+ } else if (menu.getParentId().intValue() == 0 && menu.isInnerLink()) {
router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon()));
router.setPath("/");
List<RouterVo> childrenList = new ArrayList<>();
RouterVo children = new RouterVo();
- String routerPath = innerLinkReplaceEach(menu.getPath());
+ String routerPath = SysMenu.innerLinkReplaceEach(menu.getPath());
children.setPath(routerPath);
children.setComponent(UserConstants.INNER_LINK);
children.setName(StringUtils.capitalize(routerPath));
@@ -206,7 +207,7 @@
* @return 涓嬫媺鏍戠粨鏋勫垪琛�
*/
@Override
- public List<Tree<Long>> buildMenuTreeSelect(List<SysMenu> menus) {
+ public List<Tree<Long>> buildMenuTreeSelect(List<SysMenuVo> menus) {
if (CollUtil.isEmpty(menus)) {
return CollUtil.newArrayList();
}
@@ -304,94 +305,6 @@
}
/**
- * 鑾峰彇璺敱鍚嶇О
- *
- * @param menu 鑿滃崟淇℃伅
- * @return 璺敱鍚嶇О
- */
- public String getRouteName(SysMenu menu) {
- String routerName = StringUtils.capitalize(menu.getPath());
- // 闈炲閾惧苟涓旀槸涓�绾х洰褰曪紙绫诲瀷涓虹洰褰曪級
- if (isMenuFrame(menu)) {
- routerName = StringUtils.EMPTY;
- }
- return routerName;
- }
-
- /**
- * 鑾峰彇璺敱鍦板潃
- *
- * @param menu 鑿滃崟淇℃伅
- * @return 璺敱鍦板潃
- */
- public String getRouterPath(SysMenu menu) {
- String routerPath = menu.getPath();
- // 鍐呴摼鎵撳紑澶栫綉鏂瑰紡
- if (menu.getParentId().intValue() != 0 && isInnerLink(menu)) {
- routerPath = innerLinkReplaceEach(routerPath);
- }
- // 闈炲閾惧苟涓旀槸涓�绾х洰褰曪紙绫诲瀷涓虹洰褰曪級
- if (0 == menu.getParentId().intValue() && UserConstants.TYPE_DIR.equals(menu.getMenuType())
- && UserConstants.NO_FRAME.equals(menu.getIsFrame())) {
- routerPath = "/" + menu.getPath();
- }
- // 闈炲閾惧苟涓旀槸涓�绾х洰褰曪紙绫诲瀷涓鸿彍鍗曪級
- else if (isMenuFrame(menu)) {
- routerPath = "/";
- }
- return routerPath;
- }
-
- /**
- * 鑾峰彇缁勪欢淇℃伅
- *
- * @param menu 鑿滃崟淇℃伅
- * @return 缁勪欢淇℃伅
- */
- public String getComponent(SysMenu menu) {
- String component = UserConstants.LAYOUT;
- if (StringUtils.isNotEmpty(menu.getComponent()) && !isMenuFrame(menu)) {
- component = menu.getComponent();
- } else if (StringUtils.isEmpty(menu.getComponent()) && menu.getParentId().intValue() != 0 && isInnerLink(menu)) {
- component = UserConstants.INNER_LINK;
- } else if (StringUtils.isEmpty(menu.getComponent()) && isParentView(menu)) {
- component = UserConstants.PARENT_VIEW;
- }
- return component;
- }
-
- /**
- * 鏄惁涓鸿彍鍗曞唴閮ㄨ烦杞�
- *
- * @param menu 鑿滃崟淇℃伅
- * @return 缁撴灉
- */
- public boolean isMenuFrame(SysMenu menu) {
- return menu.getParentId().intValue() == 0 && UserConstants.TYPE_MENU.equals(menu.getMenuType())
- && menu.getIsFrame().equals(UserConstants.NO_FRAME);
- }
-
- /**
- * 鏄惁涓哄唴閾剧粍浠�
- *
- * @param menu 鑿滃崟淇℃伅
- * @return 缁撴灉
- */
- public boolean isInnerLink(SysMenu menu) {
- return menu.getIsFrame().equals(UserConstants.NO_FRAME) && StringUtils.ishttp(menu.getPath());
- }
-
- /**
- * 鏄惁涓簆arent_view缁勪欢
- *
- * @param menu 鑿滃崟淇℃伅
- * @return 缁撴灉
- */
- public boolean isParentView(SysMenu menu) {
- return menu.getParentId().intValue() != 0 && UserConstants.TYPE_DIR.equals(menu.getMenuType());
- }
-
- /**
* 鏍规嵁鐖惰妭鐐圭殑ID鑾峰彇鎵�鏈夊瓙鑺傜偣
*
* @param list 鍒嗙被琛�
@@ -415,34 +328,14 @@
*/
private void recursionFn(List<SysMenu> list, SysMenu t) {
// 寰楀埌瀛愯妭鐐瑰垪琛�
- List<SysMenu> childList = getChildList(list, t);
+ List<SysMenu> childList = StreamUtils.filter(list, n -> n.getParentId().equals(t.getMenuId()));
t.setChildren(childList);
for (SysMenu tChild : childList) {
- if (hasChild(list, tChild)) {
+ // 鍒ゆ柇鏄惁鏈夊瓙鑺傜偣
+ if (list.stream().anyMatch(n -> n.getParentId().equals(tChild.getMenuId()))) {
recursionFn(list, tChild);
}
}
}
- /**
- * 寰楀埌瀛愯妭鐐瑰垪琛�
- */
- private List<SysMenu> getChildList(List<SysMenu> list, SysMenu t) {
- return StreamUtils.filter(list, n -> n.getParentId().equals(t.getMenuId()));
- }
-
- /**
- * 鍒ゆ柇鏄惁鏈夊瓙鑺傜偣
- */
- private boolean hasChild(List<SysMenu> list, SysMenu t) {
- return CollUtil.isNotEmpty(getChildList(list, t));
- }
-
- /**
- * 鍐呴摼鍩熷悕鐗规畩瀛楃鏇挎崲
- */
- public String innerLinkReplaceEach(String path) {
- return StringUtils.replaceEach(path, new String[]{Constants.HTTP, Constants.HTTPS, Constants.WWW, "."},
- new String[]{"", "", "", "/"});
- }
}
--
Gitblit v1.9.3