|
|
@@ -138,16 +138,8 @@ public class MenuServiceImpl implements MenuService {
|
|
|
deletedMenus.add(menu);
|
|
|
String type = menu.getType();
|
|
|
if (type.equals(MenuType.dir.name())) {
|
|
|
- List<Menu> list1 = menuRepository.findByPid(menu.getId());
|
|
|
+ List<Menu> list1 = getSubMenus(menu.getId());
|
|
|
deletedMenus.addAll(list1);
|
|
|
- Map<String, List<Menu>> map = list1.stream().collect(Collectors.groupingBy(Menu::getType));
|
|
|
- List<Menu> dirMenus = map.get(MenuType.dir.name());
|
|
|
- if (dirMenus != null) {
|
|
|
- dirMenus.forEach(dirMenu -> {
|
|
|
- List<Menu> list2 = menuRepository.findByPid(dirMenu.getId());
|
|
|
- deletedMenus.addAll(list2);
|
|
|
- });
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
// 删除 Role 关联的 Menu
|
|
|
@@ -165,6 +157,28 @@ public class MenuServiceImpl implements MenuService {
|
|
|
return Result.result(ResultStatus.SUCCESS);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取某个 dir menu 的所有子 menu(包括子 menu 的子 menu)
|
|
|
+ *
|
|
|
+ * @param
|
|
|
+ * @return
|
|
|
+ * @date 2024-08-01 09:23:42
|
|
|
+ */
|
|
|
+ private List<Menu> getSubMenus(int menuId) {
|
|
|
+ List<Menu> list1 = menuRepository.findByPid(menuId);
|
|
|
+ List<Menu> results = new ArrayList<>(list1);
|
|
|
+ Map<String, List<Menu>> map = list1.stream().collect(Collectors.groupingBy(Menu::getType));
|
|
|
+ List<Menu> dirMenus = map.get(MenuType.dir.name());
|
|
|
+ if (dirMenus != null) {
|
|
|
+ dirMenus.forEach(dirMenu -> {
|
|
|
+ List<Menu> list2 = menuRepository.findByPid(dirMenu.getId());
|
|
|
+ results.addAll(list2);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ return results;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public List<MenuTree> getMenusByStatus(Boolean enabled) {
|
|
|
List<Menu> menuList = menuRepository.findAllByEnabled(enabled);
|
|
|
@@ -205,20 +219,22 @@ public class MenuServiceImpl implements MenuService {
|
|
|
}
|
|
|
|
|
|
public void updateMenusStatus(boolean status, List<Integer> menuIds) {
|
|
|
- Map<String, List<Menu>> map = menuIds.stream()
|
|
|
+ List<Menu> results = menuIds.stream()
|
|
|
.map(menuId -> menuRepository.findById(menuId).orElse(null))
|
|
|
.filter(Objects::nonNull)
|
|
|
- .collect(Collectors.groupingBy(Menu::getType));
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
|
- List<Menu> dirMenus = map.get(MenuType.dir.name());
|
|
|
- if (dirMenus != null) {
|
|
|
- }
|
|
|
+ List<Menu> dirMenus = results.stream()
|
|
|
+ .filter(menu -> menu.getType().equals(MenuType.dir.name()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ List<Menu> subMenus = dirMenus.stream()
|
|
|
+ .map(menu -> getSubMenus(menu.getId()))
|
|
|
+ .flatMap(Collection::stream)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ results.addAll(subMenus);
|
|
|
|
|
|
- List<Menu> pageMenus = map.get(MenuType.page.name());
|
|
|
- if (pageMenus != null) {
|
|
|
- pageMenus.stream().peek(menu -> menu.setEnabled(status));
|
|
|
- //menuRepository.saveAll(pageMenus);
|
|
|
- }
|
|
|
+ results.forEach(menu -> menu.setEnabled(status));
|
|
|
+ menuRepository.saveAll(results);
|
|
|
}
|
|
|
|
|
|
public Map<Integer, String> getSortedChildGroupByPid(int pid) {
|