|
|
@@ -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);
|