mirror of https://gitee.com/stylefeng/roses
【7.2.3】新增角色绑定或取消绑定菜单和按钮接口
parent
7269f9bee1
commit
ba05e1a960
|
@ -31,6 +31,7 @@ import lombok.Data;
|
|||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Null;
|
||||
import java.math.BigDecimal;
|
||||
|
@ -50,7 +51,7 @@ 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, grantMenu.class, grantButton.class})
|
||||
grantResourceV2.class, grantDataScope.class, grantMenuButton.class, grantMenu.class, grantButton.class, grantMenusAndButtons.class})
|
||||
@ChineseDescription("主键")
|
||||
private Long roleId;
|
||||
|
||||
|
@ -142,7 +143,7 @@ public class SysRoleRequest extends BaseRequest {
|
|||
/**
|
||||
* 授权菜单
|
||||
*/
|
||||
@NotNull(message = "授权菜单Id不能为空", groups = {grantMenuButton.class})
|
||||
@NotEmpty(message = "授权菜单Id不能为空", groups = {grantMenuButton.class, grantMenusAndButtons.class})
|
||||
@ChineseDescription("授权菜单")
|
||||
private List<Long> grantMenuIdList;
|
||||
|
||||
|
@ -179,6 +180,13 @@ public class SysRoleRequest extends BaseRequest {
|
|||
@ChineseDescription("模块下选中的按钮id")
|
||||
private List<Long> selectedButtonIds;
|
||||
|
||||
/**
|
||||
* 绑定标识,true-新增绑定菜单,false-取消绑定菜单
|
||||
*/
|
||||
@ChineseDescription("绑定标识,true-新增绑定菜单,false-取消绑定菜单")
|
||||
@NotNull(message = "绑定标识不能为空", groups = grantMenusAndButtons.class)
|
||||
private Boolean selectBindFlag;
|
||||
|
||||
/**
|
||||
* 参数校验分组:授权菜单和按钮
|
||||
*/
|
||||
|
@ -221,4 +229,11 @@ public class SysRoleRequest extends BaseRequest {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* 参数校验分组:授权菜单和按钮集合
|
||||
*/
|
||||
public @interface grantMenusAndButtons {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -182,6 +182,18 @@ public class SysRoleController {
|
|||
return new SuccessResponseData<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 角色绑定或取消绑定菜单和按钮
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2021/8/11 9:58
|
||||
*/
|
||||
@PostResource(name = "角色绑定或取消绑定菜单和按钮", path = "/sysRole/grantMenusAndButtons")
|
||||
public ResponseData<?> grantMenusAndButtons(@RequestBody @Validated(SysRoleRequest.grantMenusAndButtons.class) SysRoleRequest sysRoleRequest) {
|
||||
sysRoleService.grantMenusAndButtons(sysRoleRequest);
|
||||
return new SuccessResponseData<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置角色绑定的数据范围类型和数据范围
|
||||
*
|
||||
|
|
|
@ -151,4 +151,11 @@ public interface SysRoleService extends IService<SysRole>, RoleServiceApi {
|
|||
*/
|
||||
List<Long> getRoleDataScope(SysRoleRequest sysRoleRequest);
|
||||
|
||||
/**
|
||||
* 授权菜单和按钮集合
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/6/21 9:55
|
||||
*/
|
||||
void grantMenusAndButtons(SysRoleRequest sysRoleRequest);
|
||||
}
|
||||
|
|
|
@ -415,6 +415,40 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
|||
return sysRoleDataScopeService.getRoleDataScopeIdList(CollectionUtil.newArrayList(sysRole.getRoleId()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void grantMenusAndButtons(SysRoleRequest sysRoleRequest) {
|
||||
// 获取新增绑定还是取消绑定菜单
|
||||
Boolean selectBindFlag = sysRoleRequest.getSelectBindFlag();
|
||||
|
||||
// 获取角色和绑定菜单
|
||||
Long roleId = sysRoleRequest.getRoleId();
|
||||
List<Long> grantMenuIdList = sysRoleRequest.getGrantMenuIdList();
|
||||
|
||||
// 如果是新增绑定菜单
|
||||
if (selectBindFlag) {
|
||||
// 批量保存绑定的菜单集合
|
||||
List<SysRoleMenu> sysRoleMenus = new ArrayList<>();
|
||||
for (Long menuId : grantMenuIdList) {
|
||||
SysRoleMenu item = new SysRoleMenu();
|
||||
item.setRoleId(roleId);
|
||||
item.setMenuId(menuId);
|
||||
sysRoleMenus.add(item);
|
||||
}
|
||||
this.roleMenuService.saveBatch(sysRoleMenus);
|
||||
} else {
|
||||
// 如果是解除绑定菜单
|
||||
LambdaUpdateWrapper<SysRoleMenu> wrapper = new LambdaUpdateWrapper<>();
|
||||
wrapper.eq(SysRoleMenu::getRoleId, roleId);
|
||||
wrapper.in(SysRoleMenu::getMenuId, grantMenuIdList);
|
||||
this.roleMenuService.remove(wrapper);
|
||||
}
|
||||
|
||||
// 授权按钮
|
||||
if (ObjectUtil.isNotEmpty(sysRoleRequest.getModularButtonIds())) {
|
||||
this.grantButton(sysRoleRequest);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysRoleDTO> getRolesByIds(List<Long> roleIds) {
|
||||
ArrayList<SysRoleDTO> sysRoleResponses = new ArrayList<>();
|
||||
|
|
Loading…
Reference in New Issue