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