【7.1.1】【role】更新角色绑定菜单和按钮的逻辑

pull/22/head
fengshuonan 2021-08-11 11:21:18 +08:00
parent 6c91261417
commit 6bb4b0b407
6 changed files with 151 additions and 3 deletions

View File

@ -63,4 +63,12 @@ public interface MenuServiceApi {
**/
Set<Long> getMenuAllParentMenuId(Set<Long> menuIds);
/**
* idcode
*
* @author fengshuonan
* @date 2021/8/11 10:40
*/
String getMenuButtonCodeByButtonId(Long buttonId);
}

View File

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

View File

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

View File

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

View File

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

View File

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