【7.1.1】【menu】更新菜单绑定资源的接口

pull/22/head
fengshuonan 2021-08-10 14:38:28 +08:00
parent ecb05b30e5
commit 0fe0d0010f
5 changed files with 77 additions and 3 deletions

View File

@ -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;
/**
* 12
*/
@NotNull(message = "绑定的资源类型不能为空", groups = {SysMenuResourceRequest.add.class})
@ChineseDescription("绑定资源的类型")
private Integer businessType;
/**
*
*/
@ChineseDescription("模块下所有的资源")
private List<String> modularTotalResource;
/**
*
*/
@ChineseDescription("模块下选中的资源")
private List<String> selectedResource;
}

View File

@ -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<ResourceTreeNode> 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();
}
}

View File

@ -64,7 +64,7 @@ public class SysMenuResource extends BaseEntity implements Serializable {
*/
@TableField(value = "business_id")
@ChineseDescription("菜单或按钮id")
private String businessId;
private Long businessId;
/**
*

View File

@ -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<SysMenuResource> {
*/
List<ResourceTreeNode> getMenuResourceTree(Long businessId);
/**
*
*
* @author fengshuonan
* @date 2021/8/10 13:58
*/
void addMenuResourceBind(SysMenuResourceRequest sysMenuResourceRequest);
}

View File

@ -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<SysMenuResourceMappe
return sysResourceService.getResourceList(resourceCodes, true);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void addMenuResourceBind(SysMenuResourceRequest sysMenuResourceRequest) {
// 先将该业务下,模块下的所有资源删除掉
List<String> modularTotalResource = sysMenuResourceRequest.getModularTotalResource();
if (ObjectUtil.isNotEmpty(modularTotalResource)) {
LambdaUpdateWrapper<SysMenuResource> wrapper = new LambdaUpdateWrapper<>();
wrapper.in(SysMenuResource::getResourceCode, modularTotalResource);
wrapper.eq(SysMenuResource::getBusinessId, sysMenuResourceRequest.getBusinessId());
this.remove(wrapper);
}
// 再将该业务下,需要绑定的资源添加上
List<String> selectedResource = sysMenuResourceRequest.getSelectedResource();
if (ObjectUtil.isNotEmpty(selectedResource)) {
ArrayList<SysMenuResource> 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());
}
}
}