From 15cd05bf77acb7c0110f6c071229195079d59e1c Mon Sep 17 00:00:00 2001 From: Charles7c Date: Thu, 24 Jul 2025 23:08:45 +0800 Subject: [PATCH] =?UTF-8?q?fix(system/menu):=20=E4=BF=AE=E5=A4=8D=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E5=88=A0=E9=99=A4=E5=8A=9F=E8=83=BD=E4=B8=8D=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E7=BA=A7=E8=81=94=E5=88=A0=E9=99=A4=E5=AD=90=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/service/impl/MenuServiceImpl.java | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) 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; + } }