diff --git a/continew-system/src/main/java/top/continew/admin/system/service/impl/MenuServiceImpl.java b/continew-system/src/main/java/top/continew/admin/system/service/impl/MenuServiceImpl.java index b61928ad..8ed1ef5d 100644 --- a/continew-system/src/main/java/top/continew/admin/system/service/impl/MenuServiceImpl.java +++ b/continew-system/src/main/java/top/continew/admin/system/service/impl/MenuServiceImpl.java @@ -45,6 +45,7 @@ import top.continew.starter.core.util.CollUtils; import top.continew.starter.core.util.validation.CheckUtils; import top.continew.starter.extension.crud.model.query.SortQuery; +import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -98,8 +99,9 @@ public class MenuServiceImpl extends BaseServiceImpl ids) { - baseMapper.lambdaUpdate().in(MenuDO::getParentId, ids).remove(); - super.delete(ids); + // 级联删除菜单(包含子菜单) + List allDeleteIdList = this.listCascadingDeleteMenuIds(ids); + baseMapper.deleteByIds(allDeleteIdList); RedisUtils.deleteByPattern(CacheConstants.ROLE_MENU_KEY_PREFIX + StringConstants.ASTERISK); } @@ -156,4 +158,26 @@ public class MenuServiceImpl extends BaseServiceImpl listCascadingDeleteMenuIds(List ids) { + List menuIds = new ArrayList<>(ids); + List childIdList = baseMapper.lambdaQuery() + .select(MenuDO::getId) + .in(MenuDO::getParentId, menuIds) + .list() + .stream() + .map(MenuDO::getId) + .toList(); + if (childIdList.isEmpty()) { + return menuIds; + } + menuIds.addAll(this.listCascadingDeleteMenuIds(childIdList)); + return menuIds; + } }