mirror of https://gitee.com/stylefeng/roses
【7.1.1】【role】更新角色绑定菜单和按钮的逻辑
parent
6c91261417
commit
6bb4b0b407
|
@ -63,4 +63,12 @@ public interface MenuServiceApi {
|
|||
**/
|
||||
Set<Long> getMenuAllParentMenuId(Set<Long> menuIds);
|
||||
|
||||
/**
|
||||
* 通过按钮id获取按钮code
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2021/8/11 10:40
|
||||
*/
|
||||
String getMenuButtonCodeByButtonId(Long buttonId);
|
||||
|
||||
}
|
||||
|
|
|
@ -49,7 +49,8 @@ public class SysRoleRequest extends BaseRequest {
|
|||
/**
|
||||
* 主键
|
||||
*/
|
||||
@NotNull(message = "roleId不能为空", groups = {edit.class, delete.class, detail.class, updateStatus.class, grantResource.class, grantResourceV2.class, grantDataScope.class, grantMenuButton.class})
|
||||
@NotNull(message = "roleId不能为空", groups = {edit.class, delete.class, detail.class, updateStatus.class, grantResource.class,
|
||||
grantResourceV2.class, grantDataScope.class, grantMenuButton.class, grantMenu.class, grantButton.class})
|
||||
@ChineseDescription("主键")
|
||||
private Long roleId;
|
||||
|
||||
|
@ -152,6 +153,28 @@ public class SysRoleRequest extends BaseRequest {
|
|||
@ChineseDescription("授权菜单按钮")
|
||||
private List<SysRoleMenuButtonRequest> grantMenuButtonIdList;
|
||||
|
||||
/**
|
||||
* 是否是新增绑定菜单,true-新增绑定菜单,false-取消绑定菜单
|
||||
*/
|
||||
@NotNull(message = "是否是新增绑定菜单", groups = {grantMenu.class})
|
||||
private Boolean grantAddMenuFlag;
|
||||
|
||||
/**
|
||||
* 绑定菜单的id
|
||||
*/
|
||||
@NotNull(message = "绑定菜单的id", groups = {grantMenu.class})
|
||||
private Long grantMenuId;
|
||||
|
||||
/**
|
||||
* 模块下所有的按钮id
|
||||
*/
|
||||
private List<Long> modularButtonIds;
|
||||
|
||||
/**
|
||||
* 模块下选中的按钮id
|
||||
*/
|
||||
private List<Long> selectedButtonIds;
|
||||
|
||||
/**
|
||||
* 参数校验分组:授权菜单和按钮
|
||||
*/
|
||||
|
@ -159,6 +182,20 @@ public class SysRoleRequest extends BaseRequest {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* 参数校验分组:角色授权菜单
|
||||
*/
|
||||
public @interface grantMenu {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 参数校验分组:角色授权按钮
|
||||
*/
|
||||
public @interface grantButton {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 参数校验分组:授权资源
|
||||
*/
|
||||
|
@ -177,6 +214,7 @@ public class SysRoleRequest extends BaseRequest {
|
|||
* 参数校验分组:授权数据
|
||||
*/
|
||||
public @interface grantDataScope {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -538,6 +538,16 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
return parentMenuIds;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMenuButtonCodeByButtonId(Long buttonId) {
|
||||
SysMenuButton sysMenuButton = this.sysMenuButtonService.getById(buttonId);
|
||||
if (sysMenuButton != null) {
|
||||
return sysMenuButton.getButtonCode();
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取系统菜单
|
||||
*
|
||||
|
|
|
@ -146,12 +146,36 @@ public class SysRoleController {
|
|||
* @author majianguo
|
||||
* @date 2021/1/9 18:04
|
||||
*/
|
||||
@PostResource(name = "授权资源", path = "/sysRole/grantMenuAndButton")
|
||||
@PostResource(name = "角色授权菜单和按钮", path = "/sysRole/grantMenuAndButton")
|
||||
public ResponseData grantMenuAndButton(@RequestBody @Validated(SysRoleRequest.grantMenuButton.class) SysRoleRequest sysRoleRequest) {
|
||||
sysRoleService.grantMenuAndButton(sysRoleRequest);
|
||||
return new SuccessResponseData();
|
||||
}
|
||||
|
||||
/**
|
||||
* 角色授权菜单,新版界面用
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2021/8/11 9:58
|
||||
*/
|
||||
@PostResource(name = "角色授权菜单", path = "/sysRole/grantMenu")
|
||||
public ResponseData grantMenu(@RequestBody @Validated(SysRoleRequest.grantMenu.class) SysRoleRequest sysRoleRequest) {
|
||||
sysRoleService.grantMenu(sysRoleRequest);
|
||||
return new SuccessResponseData();
|
||||
}
|
||||
|
||||
/**
|
||||
* 角色授权按钮,新版界面用
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2021/8/11 9:58
|
||||
*/
|
||||
@PostResource(name = "角色授权按钮", path = "/sysRole/grantButton")
|
||||
public ResponseData grantButton(@RequestBody @Validated(SysRoleRequest.grantButton.class) SysRoleRequest sysRoleRequest) {
|
||||
sysRoleService.grantButton(sysRoleRequest);
|
||||
return new SuccessResponseData();
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置角色绑定的数据范围类型和数据范围
|
||||
*
|
||||
|
|
|
@ -27,9 +27,9 @@ package cn.stylefeng.roses.kernel.system.modular.role.service;
|
|||
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
|
||||
import cn.stylefeng.roses.kernel.rule.pojo.dict.SimpleDict;
|
||||
import cn.stylefeng.roses.kernel.system.api.RoleServiceApi;
|
||||
import cn.stylefeng.roses.kernel.system.modular.role.entity.SysRole;
|
||||
import cn.stylefeng.roses.kernel.system.api.pojo.role.dto.SysRoleDTO;
|
||||
import cn.stylefeng.roses.kernel.system.api.pojo.role.request.SysRoleRequest;
|
||||
import cn.stylefeng.roses.kernel.system.modular.role.entity.SysRole;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -107,6 +107,22 @@ public interface SysRoleService extends IService<SysRole>, RoleServiceApi {
|
|||
*/
|
||||
void grantMenuAndButton(SysRoleRequest sysRoleMenuButtonRequest);
|
||||
|
||||
/**
|
||||
* 角色绑定菜单,新界面用
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2021/8/11 10:02
|
||||
*/
|
||||
void grantMenu(SysRoleRequest sysRoleMenuButtonRequest);
|
||||
|
||||
/**
|
||||
* 角色绑定按钮,新界面用
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2021/8/11 10:02
|
||||
*/
|
||||
void grantButton(SysRoleRequest sysRoleMenuButtonRequest);
|
||||
|
||||
/**
|
||||
* 授权数据范围(组织机构)
|
||||
*
|
||||
|
|
|
@ -57,6 +57,7 @@ import cn.stylefeng.roses.kernel.system.modular.role.entity.*;
|
|||
import cn.stylefeng.roses.kernel.system.modular.role.mapper.SysRoleMapper;
|
||||
import cn.stylefeng.roses.kernel.system.modular.role.service.*;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
@ -284,6 +285,57 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void grantMenu(SysRoleRequest sysRoleMenuButtonRequest) {
|
||||
|
||||
// 获取新增还是取消绑定
|
||||
Boolean grantAddMenuFlag = sysRoleMenuButtonRequest.getGrantAddMenuFlag();
|
||||
|
||||
// 如果是新增绑定菜单
|
||||
if (grantAddMenuFlag) {
|
||||
SysRoleMenu item = new SysRoleMenu();
|
||||
item.setRoleId(sysRoleMenuButtonRequest.getRoleId());
|
||||
item.setMenuId(sysRoleMenuButtonRequest.getGrantMenuId());
|
||||
this.roleMenuService.save(item);
|
||||
} else {
|
||||
//如果是解除绑定菜单
|
||||
LambdaUpdateWrapper<SysRoleMenu> wrapper = new LambdaUpdateWrapper<>();
|
||||
wrapper.eq(SysRoleMenu::getRoleId, sysRoleMenuButtonRequest.getRoleId());
|
||||
wrapper.eq(SysRoleMenu::getMenuId, sysRoleMenuButtonRequest.getGrantMenuId());
|
||||
this.roleMenuService.remove(wrapper);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void grantButton(SysRoleRequest sysRoleMenuButtonRequest) {
|
||||
// 该模块下角色绑定的按钮全部删除
|
||||
List<Long> modularButtonIds = sysRoleMenuButtonRequest.getModularButtonIds();
|
||||
if (ObjectUtil.isNotEmpty(modularButtonIds)) {
|
||||
LambdaUpdateWrapper<SysRoleMenuButton> wrapper = new LambdaUpdateWrapper<>();
|
||||
wrapper.in(SysRoleMenuButton::getButtonId, modularButtonIds);
|
||||
wrapper.eq(SysRoleMenuButton::getRoleId, sysRoleMenuButtonRequest.getRoleId());
|
||||
this.sysRoleMenuButtonService.remove(wrapper);
|
||||
}
|
||||
|
||||
// 该模块下,勾选的按钮,添加到角色绑定
|
||||
List<Long> selectedButtonIds = sysRoleMenuButtonRequest.getSelectedButtonIds();
|
||||
if (ObjectUtil.isNotEmpty(selectedButtonIds)) {
|
||||
ArrayList<SysRoleMenuButton> sysRoleMenuButtons = new ArrayList<>();
|
||||
for (Long selectButtonId : selectedButtonIds) {
|
||||
SysRoleMenuButton sysRoleMenuButton = new SysRoleMenuButton();
|
||||
sysRoleMenuButton.setRoleId(sysRoleMenuButtonRequest.getRoleId());
|
||||
sysRoleMenuButton.setButtonId(selectButtonId);
|
||||
|
||||
// 通过buttonId获取buttonCode
|
||||
String buttonCode = this.menuServiceApi.getMenuButtonCodeByButtonId(selectButtonId);
|
||||
sysRoleMenuButton.setButtonCode(buttonCode);
|
||||
|
||||
sysRoleMenuButtons.add(sysRoleMenuButton);
|
||||
}
|
||||
this.sysRoleMenuButtonService.saveBatch(sysRoleMenuButtons, sysRoleMenuButtons.size());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void grantDataScope(SysRoleRequest sysRoleRequest) {
|
||||
|
|
Loading…
Reference in New Issue