Quellcode durchsuchen

update MenuServiceImpl#deleteMenu method

reghao vor 1 Jahr
Ursprung
Commit
f0f764aa93

+ 19 - 13
web/src/main/java/cn/reghao/devops/web/account/service/impl/MenuServiceImpl.java

@@ -130,31 +130,37 @@ public class MenuServiceImpl implements MenuService {
             return Result.result(ResultStatus.FAIL, String.format("ID 为 %s 的 Menu 不存在", menuId));
         }
 
+        List<Menu> deletedMenus = new ArrayList<>();
+        deletedMenus.add(menu);
         String type = menu.getType();
         if (type.equals(MenuType.dir.name())) {
             List<Menu> list1 = menuRepository.findByPid(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.isEmpty()) {
-                for (Menu menu1 : dirMenus) {
-                    List<Menu> list2 = menuRepository.findByPid(menu1.getId());
-                }
+            if (dirMenus != null) {
+                dirMenus.forEach(dirMenu -> {
+                    List<Menu> list2 = menuRepository.findByPid(dirMenu.getId());
+                    deletedMenus.addAll(list2);
+                });
             }
         }
 
         // 删除 Role 关联的 Menu
-        for (Role role : menu.getRoles()) {
-            role.getMenus().remove(menu);
-            roleRepository.save(role);
-        }
-
-        menuRepository.delete(menu);
+        List<Role> roleList = deletedMenus.stream()
+                .map(menu1 -> {
+                    Set<Role> roles = menu1.getRoles();
+                    roles.forEach(role -> role.getMenus().remove(menu1));
+                    return roles;
+                })
+                .flatMap(Collection::stream)
+                .collect(Collectors.toList());
+
+        roleRepository.saveAll(roleList);
+        menuRepository.deleteAll(deletedMenus);
         return Result.result(ResultStatus.SUCCESS);
     }
 
-    private void deleteRoleMenus(Menu menu) {
-    }
-
     @Override
     public List<MenuTree> getMenusByStatus(Boolean isEnabled) {
         List<Menu> menuList = menuRepository.findByEnabled(isEnabled);