mirror of https://gitee.com/stylefeng/roses
【7.2.5】【menu】增加角色绑定菜单的接口
parent
8e1c230f45
commit
5bd415155a
|
@ -24,6 +24,7 @@
|
|||
*/
|
||||
package cn.stylefeng.roses.kernel.system.api;
|
||||
|
||||
import cn.stylefeng.roses.kernel.system.api.enums.AntdvFrontTypeEnum;
|
||||
import cn.stylefeng.roses.kernel.system.api.pojo.login.v3.IndexMenuInfo;
|
||||
import cn.stylefeng.roses.kernel.system.api.pojo.menu.MenuAndButtonTreeResponse;
|
||||
import cn.stylefeng.roses.kernel.system.api.pojo.role.request.SysRoleRequest;
|
||||
|
@ -116,4 +117,13 @@ public interface MenuServiceApi {
|
|||
*/
|
||||
List<MenuAndButtonTreeResponse> getRoleBindOperateList(SysRoleRequest sysRoleRequest);
|
||||
|
||||
/**
|
||||
* 获取所有菜单id集合
|
||||
*
|
||||
* @param antdvFrontTypeEnum 前台还是后台菜单
|
||||
* @author fengshuonan
|
||||
* @date 2022/9/29 9:56
|
||||
*/
|
||||
List<Long> getTotalMenuIdList(AntdvFrontTypeEnum antdvFrontTypeEnum);
|
||||
|
||||
}
|
||||
|
|
|
@ -51,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, grantMenusAndButtons.class, roleBindMenuList.class, grantRoleMenus.class})
|
||||
grantMenuButton.class, grantMenu.class, grantButton.class, grantMenusAndButtons.class, roleBindMenuList.class, grantRoleMenus.class, grantAll.class})
|
||||
@ChineseDescription("主键")
|
||||
private Long roleId;
|
||||
|
||||
|
@ -187,6 +187,13 @@ public class SysRoleRequest extends BaseRequest {
|
|||
@ChineseDescription("资源的业务类型:1-业务类型,2-系统类型")
|
||||
private Integer resourceBizType;
|
||||
|
||||
/**
|
||||
* 全选标识:true-全选,false-取消全选
|
||||
*/
|
||||
@ChineseDescription("全选标识:true-全选,false-取消全选")
|
||||
@NotNull(message = "全选标识不能为空", groups = {grantAll.class})
|
||||
private Boolean totalSelectFlag;
|
||||
|
||||
/**
|
||||
* 参数校验分组:授权菜单和按钮
|
||||
*/
|
||||
|
@ -248,4 +255,10 @@ public class SysRoleRequest extends BaseRequest {
|
|||
public @interface grantRoleMenus {
|
||||
}
|
||||
|
||||
/**
|
||||
* 角色分配菜单,绑定全部菜单或取消绑定全部菜单
|
||||
*/
|
||||
public @interface grantAll {
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -510,6 +510,21 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
return AntdMenusFactory.fillButtonsChecked(menuAndButtonTreeResponses, roleMenuButtonList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Long> getTotalMenuIdList(AntdvFrontTypeEnum antdvFrontTypeEnum) {
|
||||
|
||||
// 查询所有菜单列表,根据前台传递参数,可选择前台还是后台菜单
|
||||
LambdaQueryWrapper<SysMenu> menuWrapper = new LambdaQueryWrapper<>();
|
||||
menuWrapper.select(SysMenu::getMenuId);
|
||||
|
||||
menuWrapper.eq(SysMenu::getDelFlag, YesOrNotEnum.N.getCode());
|
||||
menuWrapper.eq(SysMenu::getStatusFlag, StatusEnum.ENABLE.getCode());
|
||||
menuWrapper.nested(i -> i.eq(SysMenu::getAntdvFrontType, antdvFrontTypeEnum.getCode()).or().eq(SysMenu::getAntdvFrontType, AntdvFrontTypeEnum.TOTAL_SHOW.getCode()));
|
||||
|
||||
List<SysMenu> sysMenuList = this.list(menuWrapper);
|
||||
return sysMenuList.stream().map(SysMenu::getMenuId).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysMenu> getCurrentUserMenus(List<String> appCodeList, Boolean layuiVisibleFlag, Integer antdvFrontType) {
|
||||
|
||||
|
|
|
@ -263,4 +263,15 @@ public class SysRoleController {
|
|||
return new SuccessResponseData<>(sysRoleService.grantRoleMenus(sysRoleRequest));
|
||||
}
|
||||
|
||||
/**
|
||||
* 角色权限界面:角色绑定菜单权限(全选操作)
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/9/28 20:28
|
||||
*/
|
||||
@PostResource(name = "角色权限界面:角色绑定菜单权限(全选操作)", path = "/sysRole/grantRoleMenus/grantAll")
|
||||
public ResponseData<List<MenuAndButtonTreeResponse>> grantRoleMenusGrantAll(@RequestBody @Validated(SysRoleRequest.grantAll.class) SysRoleRequest sysRoleRequest) {
|
||||
return new SuccessResponseData<>(sysRoleService.grantRoleMenusGrantAll(sysRoleRequest));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -176,4 +176,12 @@ public interface SysRoleService extends IService<SysRole>, RoleServiceApi {
|
|||
*/
|
||||
List<MenuAndButtonTreeResponse> grantRoleMenus(SysRoleRequest sysRoleRequest);
|
||||
|
||||
/**
|
||||
* 角色权限界面,绑定角色的菜单权限,全选操作
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/9/29 9:43
|
||||
*/
|
||||
List<MenuAndButtonTreeResponse> grantRoleMenusGrantAll(SysRoleRequest sysRoleRequest);
|
||||
|
||||
}
|
||||
|
|
|
@ -44,6 +44,7 @@ import cn.stylefeng.roses.kernel.rule.pojo.dict.SimpleDict;
|
|||
import cn.stylefeng.roses.kernel.system.api.MenuServiceApi;
|
||||
import cn.stylefeng.roses.kernel.system.api.UserServiceApi;
|
||||
import cn.stylefeng.roses.kernel.system.api.constants.SystemConstants;
|
||||
import cn.stylefeng.roses.kernel.system.api.enums.AntdvFrontTypeEnum;
|
||||
import cn.stylefeng.roses.kernel.system.api.exception.SystemModularException;
|
||||
import cn.stylefeng.roses.kernel.system.api.exception.enums.role.SysRoleExceptionEnum;
|
||||
import cn.stylefeng.roses.kernel.system.api.pojo.menu.MenuAndButtonTreeResponse;
|
||||
|
@ -62,6 +63,7 @@ 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;
|
||||
import org.springframework.transaction.annotation.Isolation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
@ -472,6 +474,36 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
|||
return menuServiceApi.getRoleBindMenuList(sysRoleRequest);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_UNCOMMITTED)
|
||||
public List<MenuAndButtonTreeResponse> grantRoleMenusGrantAll(SysRoleRequest sysRoleRequest) {
|
||||
|
||||
// 删除角色绑定的所有菜单
|
||||
LambdaUpdateWrapper<SysRoleMenu> wrapper = new LambdaUpdateWrapper<>();
|
||||
wrapper.eq(SysRoleMenu::getRoleId, sysRoleRequest.getRoleId());
|
||||
this.roleMenuService.remove(wrapper);
|
||||
|
||||
// 如果是全部选中
|
||||
if (sysRoleRequest.getTotalSelectFlag()) {
|
||||
|
||||
// 获取所有前台菜单id
|
||||
List<Long> totalMenuIdList = this.menuServiceApi.getTotalMenuIdList(AntdvFrontTypeEnum.FRONT);
|
||||
|
||||
// 批量保存绑定的菜单集合
|
||||
List<SysRoleMenu> sysRoleMenus = new ArrayList<>();
|
||||
for (Long menuId : totalMenuIdList) {
|
||||
SysRoleMenu item = new SysRoleMenu();
|
||||
item.setRoleId(sysRoleRequest.getRoleId());
|
||||
item.setMenuId(menuId);
|
||||
sysRoleMenus.add(item);
|
||||
}
|
||||
this.roleMenuService.saveBatch(sysRoleMenus);
|
||||
}
|
||||
|
||||
// 获取当前角色分配的菜单权限
|
||||
return menuServiceApi.getRoleBindMenuList(sysRoleRequest);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysRoleDTO> getRolesByIds(List<Long> roleIds) {
|
||||
ArrayList<SysRoleDTO> sysRoleResponses = new ArrayList<>();
|
||||
|
|
Loading…
Reference in New Issue