From 12846a4c5db916cf14f8c57c2c47993614a8ef94 Mon Sep 17 00:00:00 2001 From: ruibaby Date: Wed, 10 Jul 2019 01:42:00 +0800 Subject: [PATCH] Fixed remove menu error. --- .../run/halo/app/controller/admin/api/MenuController.java | 7 +++++++ src/main/java/run/halo/app/repository/MenuRepository.java | 4 ++++ src/main/java/run/halo/app/service/MenuService.java | 8 ++++++++ .../java/run/halo/app/service/impl/MenuServiceImpl.java | 7 +++++++ 4 files changed, 26 insertions(+) diff --git a/src/main/java/run/halo/app/controller/admin/api/MenuController.java b/src/main/java/run/halo/app/controller/admin/api/MenuController.java index 9d25b72e8..942846461 100644 --- a/src/main/java/run/halo/app/controller/admin/api/MenuController.java +++ b/src/main/java/run/halo/app/controller/admin/api/MenuController.java @@ -79,6 +79,13 @@ public class MenuController { @DeleteMapping("{menuId:\\d+}") @ApiOperation("Deletes a menu") public MenuDTO deleteBy(@PathVariable("menuId") Integer menuId) { + List menus = menuService.listByParentId(menuId); + if (null != menus && menus.size() > 0) { + menus.forEach(menu -> { + menu.setParentId(0); + menuService.update(menu); + }); + } return new MenuDTO().convertFrom(menuService.removeById(menuId)); } } diff --git a/src/main/java/run/halo/app/repository/MenuRepository.java b/src/main/java/run/halo/app/repository/MenuRepository.java index e916875ae..f8c5ed7fc 100644 --- a/src/main/java/run/halo/app/repository/MenuRepository.java +++ b/src/main/java/run/halo/app/repository/MenuRepository.java @@ -4,6 +4,8 @@ import org.springframework.lang.NonNull; import run.halo.app.model.entity.Menu; import run.halo.app.repository.base.BaseRepository; +import java.util.List; + /** * Menu repository. * @@ -14,4 +16,6 @@ public interface MenuRepository extends BaseRepository { boolean existsByName(@NonNull String name); boolean existsByIdNotAndName(@NonNull Integer id, @NonNull String name); + + List findByParentId(@NonNull Integer id); } diff --git a/src/main/java/run/halo/app/service/MenuService.java b/src/main/java/run/halo/app/service/MenuService.java index 72135eef3..7633ede4d 100644 --- a/src/main/java/run/halo/app/service/MenuService.java +++ b/src/main/java/run/halo/app/service/MenuService.java @@ -44,4 +44,12 @@ public interface MenuService extends CrudService { * @return a menu tree */ List listAsTree(Sort sort); + + /** + * Lists menu by parent id. + * + * @param id id + * @return a list of menu + */ + List listByParentId(@NonNull Integer id); } diff --git a/src/main/java/run/halo/app/service/impl/MenuServiceImpl.java b/src/main/java/run/halo/app/service/impl/MenuServiceImpl.java index 29aa71f65..8dc5cf010 100644 --- a/src/main/java/run/halo/app/service/impl/MenuServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/MenuServiceImpl.java @@ -71,6 +71,13 @@ public class MenuServiceImpl extends AbstractCrudService implemen return topLevelMenu.getChildren(); } + @Override + public List listByParentId(Integer id) { + Assert.notNull(id, "Menu parent id must not be null"); + + return menuRepository.findByParentId(id); + } + @Override public Menu create(Menu menu) { nameMustNotExist(menu);