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 lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import javax.validation.constraints.NotEmpty;
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
import javax.validation.constraints.Null;
|
import javax.validation.constraints.Null;
|
||||||
import java.math.BigDecimal;
|
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,
|
@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("主键")
|
@ChineseDescription("主键")
|
||||||
private Long roleId;
|
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("授权菜单")
|
@ChineseDescription("授权菜单")
|
||||||
private List<Long> grantMenuIdList;
|
private List<Long> grantMenuIdList;
|
||||||
|
|
||||||
|
@ -179,6 +180,13 @@ public class SysRoleRequest extends BaseRequest {
|
||||||
@ChineseDescription("模块下选中的按钮id")
|
@ChineseDescription("模块下选中的按钮id")
|
||||||
private List<Long> selectedButtonIds;
|
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<>();
|
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);
|
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()));
|
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
|
@Override
|
||||||
public List<SysRoleDTO> getRolesByIds(List<Long> roleIds) {
|
public List<SysRoleDTO> getRolesByIds(List<Long> roleIds) {
|
||||||
ArrayList<SysRoleDTO> sysRoleResponses = new ArrayList<>();
|
ArrayList<SysRoleDTO> sysRoleResponses = new ArrayList<>();
|
||||||
|
|
Loading…
Reference in New Issue