mirror of https://gitee.com/stylefeng/roses
【7.1.1】【menu】更新菜单绑定资源的接口
parent
ecb05b30e5
commit
0fe0d0010f
|
@ -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<String> modularTotalResource;
|
||||
|
||||
/**
|
||||
* 模块下选中的资源
|
||||
*/
|
||||
@ChineseDescription("模块下选中的资源")
|
||||
private List<String> selectedResource;
|
||||
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -64,7 +64,7 @@ public class SysMenuResource extends BaseEntity implements Serializable {
|
|||
*/
|
||||
@TableField(value = "business_id")
|
||||
@ChineseDescription("菜单或按钮id")
|
||||
private String businessId;
|
||||
private Long businessId;
|
||||
|
||||
/**
|
||||
* 资源的编码
|
||||
|
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue