From ee7e0922100eda1544c2a1acfe72a2ce5741084f Mon Sep 17 00:00:00 2001
From: liyongjie <1318551549@qq.com>
Date: Sun, 21 Apr 2024 10:55:16 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E7=89=88=E8=8F=9C=E5=8D=95=E6=90=9C?=
=?UTF-8?q?=E7=B4=A2=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../muyu-system/muyu-system-server/pom.xml | 8 +++
.../com/muyu/system/mapper/SysMenuMapper.java | 7 ++
.../service/impl/SysMenuServiceImpl.java | 72 ++++++++++++-------
.../resources/mapper/system/SysMenuMapper.xml | 5 ++
4 files changed, 68 insertions(+), 24 deletions(-)
diff --git a/muyu-modules/muyu-system/muyu-system-server/pom.xml b/muyu-modules/muyu-system/muyu-system-server/pom.xml
index 0a38080..0860196 100644
--- a/muyu-modules/muyu-system/muyu-system-server/pom.xml
+++ b/muyu-modules/muyu-system/muyu-system-server/pom.xml
@@ -120,6 +120,14 @@
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 8
+ 8
+
+
diff --git a/muyu-modules/muyu-system/muyu-system-server/src/main/java/com/muyu/system/mapper/SysMenuMapper.java b/muyu-modules/muyu-system/muyu-system-server/src/main/java/com/muyu/system/mapper/SysMenuMapper.java
index 1de0501..fcc839e 100644
--- a/muyu-modules/muyu-system/muyu-system-server/src/main/java/com/muyu/system/mapper/SysMenuMapper.java
+++ b/muyu-modules/muyu-system/muyu-system-server/src/main/java/com/muyu/system/mapper/SysMenuMapper.java
@@ -123,4 +123,11 @@ public interface SysMenuMapper {
* @return 结果
*/
public SysMenu checkMenuNameUnique(@Param("menuName") String menuName, @Param("parentId") Long parentId);
+
+ /**
+ * 根据父菜单ID查询子菜单
+ * @param parentId
+ * @return
+ */
+ List selectMenuByParentId(@Param("parentId") Long parentId);
}
diff --git a/muyu-modules/muyu-system/muyu-system-server/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java b/muyu-modules/muyu-system/muyu-system-server/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java
index 1484839..1968658 100644
--- a/muyu-modules/muyu-system/muyu-system-server/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java
+++ b/muyu-modules/muyu-system/muyu-system-server/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java
@@ -57,39 +57,63 @@ public class SysMenuServiceImpl implements ISysMenuService {
*/
@Override
public List selectMenuList(SysMenu menu, Long userId) {
+ int size = menuMapper.selectMenuList(new SysMenu()).size();
List menuList = null;
- String menuName = menu.getMenuName();
// 管理员显示所有菜单信息
- if (SysUser.isAdmin(userId)) {
+ if(SysUser.isAdmin(userId)){
menuList = menuMapper.selectMenuList(menu);
-
} else {
menu.getParams().put("userId", userId);
menuList = menuMapper.selectMenuListByUserId(menu);
}
- List finalMenuList = menuList;
- return menuList.stream()
- .parallel()
- .filter(sysMenu -> sysMenu.getParentId().equals(sysMenu.getMenuId()))
- .map(first -> {
- first.setChildren(getChildren(first.getMenuId(), finalMenuList).isEmpty() ? null :
- getChildren(first.getMenuId(), finalMenuList));
- return first;
- })
- .collect(Collectors.toList());
+ // 菜单对象数量与数据库中数量不相等
+ if (menuList.size() != size) {
+ List sysMenuList = new ArrayList<>();
+ // 遍历获取子级、父级菜单
+ menuList.forEach(item -> {
+ sysMenuList.addAll(childrenMenu(item));
+ if (item.getParentId() != 0){
+ sysMenuList.addAll(parentMenu(item));
+ }
+ });
+ menuList.addAll(sysMenuList);
+ menuList = new ArrayList<>(new HashSet<>(menuList));
+ }
+ return menuList;
}
- private List getChildren(Long parentId, List menus) {
- List collect = menus.stream()
- .parallel()
- .filter(sysMenu -> parentId.equals(sysMenu.getParentId()))
- .map(second -> {
- second.setChildren(getChildren(second.getMenuId(), menus).isEmpty() ? null
- : getChildren(second.getMenuId(), menus));
- return second;
- })
- .collect(Collectors.toList());
- return collect;
+ /**
+ * 获取子级菜单
+ * @param menus
+ * @return 子级菜单列表
+ */
+ public List childrenMenu(SysMenu menus){
+ // 详细
+// List sysMenus = menuMapper.selectMenuByParentId(menus.getMenuId());
+// List childrenMenu = new ArrayList<>(sysMenus);
+// if (sysMenus.size() > 0){
+// for (SysMenu sysMenu : sysMenus) {
+// childrenMenu(sysMenu);
+// }
+// }
+// return childrenMenu;
+ List sysMenus = menuMapper.selectMenuByParentId(menus.getMenuId());
+ return new ArrayList<>(sysMenus);
+ }
+
+ /**
+ * 获取父级菜单
+ * @param menu
+ * @return 父级菜单列表
+ */
+ public List parentMenu(SysMenu menu){
+ List parentMenu = new ArrayList<>();
+ SysMenu sysMenu = menuMapper.selectMenuById(menu.getParentId());
+ parentMenu.add(sysMenu);
+ if (sysMenu.getParentId() != 0){
+ parentMenu.addAll(parentMenu(sysMenu));
+ }
+ return parentMenu;
}
/**
diff --git a/muyu-modules/muyu-system/muyu-system-server/src/main/resources/mapper/system/SysMenuMapper.xml b/muyu-modules/muyu-system/muyu-system-server/src/main/resources/mapper/system/SysMenuMapper.xml
index c699a78..ff29043 100644
--- a/muyu-modules/muyu-system/muyu-system-server/src/main/resources/mapper/system/SysMenuMapper.xml
+++ b/muyu-modules/muyu-system/muyu-system-server/src/main/resources/mapper/system/SysMenuMapper.xml
@@ -186,6 +186,11 @@
where menu_name=#{menuName} and parent_id = #{parentId} limit 1
+
+