【7.2.3】新增角色绑定或取消绑定菜单和按钮接口

pull/30/head
fengshuonan 2022-06-21 11:52:48 +08:00
parent 7269f9bee1
commit ba05e1a960
4 changed files with 70 additions and 2 deletions

View File

@ -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 {
}
}

View File

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

View File

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

View File

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