From a558820be0beeda515fcf55f806c01316706d5ea Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Mon, 12 Jun 2023 19:28:27 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.6.0=E3=80=91=E3=80=90sys=E3=80=91?= =?UTF-8?q?=E3=80=90app=E3=80=91=E6=9B=B4=E6=96=B0=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=BA=94=E7=94=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/enums/SysAppExceptionEnum.java | 7 ++++- .../app/service/impl/SysAppServiceImpl.java | 12 +++++++++ .../modular/menu/service/SysMenuService.java | 27 +++++++++++++------ .../menu/service/impl/SysMenuServiceImpl.java | 14 +++++++++- 4 files changed, 50 insertions(+), 10 deletions(-) diff --git a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/app/enums/SysAppExceptionEnum.java b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/app/enums/SysAppExceptionEnum.java index 9b97e9700..a54e4c513 100644 --- a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/app/enums/SysAppExceptionEnum.java +++ b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/app/enums/SysAppExceptionEnum.java @@ -21,7 +21,12 @@ public enum SysAppExceptionEnum implements AbstractExceptionEnum { /** * 不允许修改应用编码 */ - APP_CODE_CANT_EDIT(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10002", "不允许修改应用编码"); + APP_CODE_CANT_EDIT(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10002", "不允许修改应用编码"), + + /** + * 该应用下有绑定菜单,无法删除应用 + */ + APP_BIND_MENU(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10003", "该应用下有绑定菜单,无法删除应用"); /** * 错误编码 diff --git a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/app/service/impl/SysAppServiceImpl.java b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/app/service/impl/SysAppServiceImpl.java index 4cb851d27..2a591cc8e 100644 --- a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/app/service/impl/SysAppServiceImpl.java +++ b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/app/service/impl/SysAppServiceImpl.java @@ -1,6 +1,7 @@ package cn.stylefeng.roses.kernel.sys.modular.app.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import cn.stylefeng.roses.kernel.db.api.factory.PageFactory; import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; @@ -12,11 +13,13 @@ import cn.stylefeng.roses.kernel.sys.modular.app.enums.SysAppExceptionEnum; import cn.stylefeng.roses.kernel.sys.modular.app.mapper.SysAppMapper; import cn.stylefeng.roses.kernel.sys.modular.app.pojo.request.SysAppRequest; import cn.stylefeng.roses.kernel.sys.modular.app.service.SysAppService; +import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; /** @@ -28,6 +31,9 @@ import java.util.List; @Service public class SysAppServiceImpl extends ServiceImpl implements SysAppService { + @Resource + private SysMenuService sysMenuService; + @Override public void add(SysAppRequest sysAppRequest) { SysApp sysApp = new SysApp(); @@ -38,6 +44,12 @@ public class SysAppServiceImpl extends ServiceImpl impleme @Override public void del(SysAppRequest sysAppRequest) { SysApp sysApp = this.querySysApp(sysAppRequest); + + // 判断应用下是否有绑定菜单 + if (this.sysMenuService.validateMenuBindApp(CollectionUtil.set(false, sysApp.getAppId()))) { + throw new ServiceException(SysAppExceptionEnum.APP_BIND_MENU); + } + this.removeById(sysApp.getAppId()); } diff --git a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/SysMenuService.java b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/SysMenuService.java index b3e98caa2..88c36cae4 100644 --- a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/SysMenuService.java +++ b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/SysMenuService.java @@ -6,6 +6,7 @@ import cn.stylefeng.roses.kernel.sys.modular.menu.pojo.request.SysMenuRequest; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; +import java.util.Set; /** * 系统菜单 服务类 @@ -15,7 +16,7 @@ import java.util.List; */ public interface SysMenuService extends IService { - /** + /** * 新增 * * @param sysMenuRequest 请求参数 @@ -24,7 +25,7 @@ public interface SysMenuService extends IService { */ void add(SysMenuRequest sysMenuRequest); - /** + /** * 删除 * * @param sysMenuRequest 请求参数 @@ -33,7 +34,7 @@ public interface SysMenuService extends IService { */ void del(SysMenuRequest sysMenuRequest); - /** + /** * 编辑 * * @param sysMenuRequest 请求参数 @@ -42,7 +43,7 @@ public interface SysMenuService extends IService { */ void edit(SysMenuRequest sysMenuRequest); - /** + /** * 查询详情 * * @param sysMenuRequest 请求参数 @@ -51,24 +52,34 @@ public interface SysMenuService extends IService { */ SysMenu detail(SysMenuRequest sysMenuRequest); - /** + /** * 获取列表 * - * @param sysMenuRequest 请求参数 + * @param sysMenuRequest 请求参数 * @return List 返回结果 * @author fengshuonan * @date 2023/06/10 21:28 */ List findList(SysMenuRequest sysMenuRequest); - /** + /** * 获取列表(带分页) * - * @param sysMenuRequest 请求参数 + * @param sysMenuRequest 请求参数 * @return PageResult 返回结果 * @author fengshuonan * @date 2023/06/10 21:28 */ PageResult findPage(SysMenuRequest sysMenuRequest); + /** + * 校验菜单是否绑定到某个app下 + * + * @return true-该app下有菜单,false-该app下没菜单 + * @author fengshuonan + * @since 2023/6/12 19:23 + */ + boolean validateMenuBindApp(Set appIdList); + + } \ No newline at end of file diff --git a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/impl/SysMenuServiceImpl.java b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/impl/SysMenuServiceImpl.java index 8ff035d07..b5a82d3d5 100644 --- a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/impl/SysMenuServiceImpl.java +++ b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/impl/SysMenuServiceImpl.java @@ -18,6 +18,7 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.List; +import java.util.Set; /** * 系统菜单业务实现层 @@ -28,7 +29,7 @@ import java.util.List; @Service public class SysMenuServiceImpl extends ServiceImpl implements SysMenuService { - @Override + @Override public void add(SysMenuRequest sysMenuRequest) { SysMenu sysMenu = new SysMenu(); BeanUtil.copyProperties(sysMenuRequest, sysMenu); @@ -60,6 +61,17 @@ public class SysMenuServiceImpl extends ServiceImpl impl return PageResultFactory.createPageResult(sysRolePage); } + @Override + public boolean validateMenuBindApp(Set appIdList) { + + LambdaQueryWrapper sysMenuLambdaQueryWrapper = new LambdaQueryWrapper<>(); + sysMenuLambdaQueryWrapper.in(SysMenu::getAppId, appIdList); + sysMenuLambdaQueryWrapper.select(SysMenu::getMenuId); + long count = this.count(sysMenuLambdaQueryWrapper); + + return count > 0; + } + @Override public List findList(SysMenuRequest sysMenuRequest) { LambdaQueryWrapper wrapper = this.createWrapper(sysMenuRequest);