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
+
+