From 0fe0d0010fbef0ba016da99229667a88cc81e7e7 Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Tue, 10 Aug 2021 14:38:28 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.1.1=E3=80=91=E3=80=90menu=E3=80=91?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=8F=9C=E5=8D=95=E7=BB=91=E5=AE=9A=E8=B5=84?= =?UTF-8?q?=E6=BA=90=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/pojo/menu/SysMenuResourceRequest.java | 22 ++++++++++++- .../controller/SysMenuResourceController.java | 15 ++++++++- .../modular/menu/entity/SysMenuResource.java | 2 +- .../menu/service/SysMenuResourceService.java | 9 ++++++ .../impl/SysMenuResourceServiceImpl.java | 32 +++++++++++++++++++ 5 files changed, 77 insertions(+), 3 deletions(-) diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuResourceRequest.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuResourceRequest.java index c27072da0..3640ada3f 100644 --- a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuResourceRequest.java +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuResourceRequest.java @@ -30,6 +30,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import javax.validation.constraints.NotNull; +import java.util.List; /** * 菜单资源的请求 @@ -44,8 +45,27 @@ public class SysMenuResourceRequest extends BaseRequest { /** * 业务id不能为空 */ - @NotNull(message = "业务id不能为空") + @NotNull(message = "业务id不能为空", groups = {SysMenuResourceRequest.list.class, SysMenuResourceRequest.add.class}) @ChineseDescription("业务id") private Long businessId; + /** + * 绑定资源的类型,1:菜单,2:菜单下按钮 + */ + @NotNull(message = "绑定的资源类型不能为空", groups = {SysMenuResourceRequest.add.class}) + @ChineseDescription("绑定资源的类型") + private Integer businessType; + + /** + * 模块下所有的资源 + */ + @ChineseDescription("模块下所有的资源") + private List modularTotalResource; + + /** + * 模块下选中的资源 + */ + @ChineseDescription("模块下选中的资源") + private List selectedResource; + } diff --git a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/controller/SysMenuResourceController.java b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/controller/SysMenuResourceController.java index 829d1d312..53f2ce17d 100644 --- a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/controller/SysMenuResourceController.java +++ b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/controller/SysMenuResourceController.java @@ -28,6 +28,7 @@ import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData; import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData; import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource; import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource; +import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource; import cn.stylefeng.roses.kernel.system.api.pojo.menu.SysMenuResourceRequest; import cn.stylefeng.roses.kernel.system.modular.menu.service.SysMenuResourceService; import cn.stylefeng.roses.kernel.system.modular.resource.pojo.ResourceTreeNode; @@ -57,9 +58,21 @@ public class SysMenuResourceController { * @date 2021/8/8 22:38 */ @GetResource(name = "获取菜单的资源分配列表", path = "/sysMenuResource/getMenuResourceList") - public ResponseData getMenuResourceList(@Validated SysMenuResourceRequest sysMenuResourceRequest) { + public ResponseData getMenuResourceList(@Validated(value = SysMenuResourceRequest.list.class) SysMenuResourceRequest sysMenuResourceRequest) { List menuResourceTree = sysMenuResourceService.getMenuResourceTree(sysMenuResourceRequest.getBusinessId()); return new SuccessResponseData(menuResourceTree); } + /** + * 设置菜单资源绑定 + * + * @author fengshuonan + * @date 2021/8/10 11:55 + */ + @PostResource(name = "设置菜单资源绑定", path = "/sysMenuResource/addMenuResourceBind") + public ResponseData addMenuResourceBind(@Validated(value = SysMenuResourceRequest.add.class) SysMenuResourceRequest sysMenuResourceRequest) { + sysMenuResourceService.addMenuResourceBind(sysMenuResourceRequest); + return new SuccessResponseData(); + } + } diff --git a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/entity/SysMenuResource.java b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/entity/SysMenuResource.java index e9b66d498..c53d1e603 100644 --- a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/entity/SysMenuResource.java +++ b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/entity/SysMenuResource.java @@ -64,7 +64,7 @@ public class SysMenuResource extends BaseEntity implements Serializable { */ @TableField(value = "business_id") @ChineseDescription("菜单或按钮id") - private String businessId; + private Long businessId; /** * 资源的编码 diff --git a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/SysMenuResourceService.java b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/SysMenuResourceService.java index 9464e1e01..a9ec2b831 100644 --- a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/SysMenuResourceService.java +++ b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/SysMenuResourceService.java @@ -24,6 +24,7 @@ */ package cn.stylefeng.roses.kernel.system.modular.menu.service; +import cn.stylefeng.roses.kernel.system.api.pojo.menu.SysMenuResourceRequest; import cn.stylefeng.roses.kernel.system.modular.menu.entity.SysMenuResource; import cn.stylefeng.roses.kernel.system.modular.resource.pojo.ResourceTreeNode; import com.baomidou.mybatisplus.extension.service.IService; @@ -48,4 +49,12 @@ public interface SysMenuResourceService extends IService { */ List getMenuResourceTree(Long businessId); + /** + * 添加菜单和资源的绑定 + * + * @author fengshuonan + * @date 2021/8/10 13:58 + */ + void addMenuResourceBind(SysMenuResourceRequest sysMenuResourceRequest); + } diff --git a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/impl/SysMenuResourceServiceImpl.java b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/impl/SysMenuResourceServiceImpl.java index d175a6727..97aadd6bf 100644 --- a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/impl/SysMenuResourceServiceImpl.java +++ b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/impl/SysMenuResourceServiceImpl.java @@ -24,16 +24,21 @@ */ package cn.stylefeng.roses.kernel.system.modular.menu.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.stylefeng.roses.kernel.system.api.pojo.menu.SysMenuResourceRequest; import cn.stylefeng.roses.kernel.system.modular.menu.entity.SysMenuResource; import cn.stylefeng.roses.kernel.system.modular.menu.mapper.SysMenuResourceMapper; import cn.stylefeng.roses.kernel.system.modular.menu.service.SysMenuResourceService; import cn.stylefeng.roses.kernel.system.modular.resource.pojo.ResourceTreeNode; import cn.stylefeng.roses.kernel.system.modular.resource.service.SysResourceService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -59,4 +64,31 @@ public class SysMenuResourceServiceImpl extends ServiceImpl modularTotalResource = sysMenuResourceRequest.getModularTotalResource(); + if (ObjectUtil.isNotEmpty(modularTotalResource)) { + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.in(SysMenuResource::getResourceCode, modularTotalResource); + wrapper.eq(SysMenuResource::getBusinessId, sysMenuResourceRequest.getBusinessId()); + this.remove(wrapper); + } + + // 再将该业务下,需要绑定的资源添加上 + List selectedResource = sysMenuResourceRequest.getSelectedResource(); + if (ObjectUtil.isNotEmpty(selectedResource)) { + ArrayList menuResources = new ArrayList<>(); + for (String resourceCode : selectedResource) { + SysMenuResource sysMenuResource = new SysMenuResource(); + sysMenuResource.setBusinessType(sysMenuResourceRequest.getBusinessType()); + sysMenuResource.setBusinessId(sysMenuResourceRequest.getBusinessId()); + sysMenuResource.setResourceCode(resourceCode); + menuResources.add(sysMenuResource); + } + this.saveBatch(menuResources, menuResources.size()); + } + } + }