SysRoleController
/**
* 新增角色
* @param sysRole 角色对象
* @return
*/
@ApiOperation("新增角色")
@PostMapping
@PreAuthorize("hasAuthority('sys:role:save')")
public Result<String> saveSysRole(@RequestBody SysRole sysRole) {
Boolean saved = sysRoleService.saveSysRole(sysRole);
return Result.handle(saved);
}
SysRoleServiceImpl
/**
* 新增角色
* 1.新增角色
* 2.新增角色与权限的关系集合
* @param sysRole
* @return
*/
@Override
@CacheEvict(key = ManagerConstants.SYS_ALL_ROLE_KEY)
@Transactional(rollbackFor = Exception.class)
public Boolean saveSysRole(SysRole sysRole) {
// 新增角色
sysRole.setCreateTime(new Date());
sysRole.setCreateUserId(AuthUtils.getLoginUserId());
int i = sysRoleMapper.insert(sysRole);
if (i > 0) {
// 获取角色id
Long roleId = sysRole.getRoleId();
// 新增角色与权限的关系记录
// 获取角色对应的权限id集合
List<Long> menuIdList = sysRole.getMenuIdList();
// 创建角色与权限关系集合对象
List<SysRoleMenu> sysRoleMenuList = new ArrayList<>();
// 判断是否有值
if (CollectionUtil.isNotEmpty(menuIdList) && menuIdList.size() != 0) {
// 循环遍历权限id集合
menuIdList.forEach(menuId -> {
// 创建角色与权限关系记录
SysRoleMenu sysRoleMenu = new SysRoleMenu();
sysRoleMenu.setRoleId(roleId);
sysRoleMenu.setMenuId(menuId);
// 收集角色与权限的关系记录
sysRoleMenuList.add(sysRoleMenu);
});
// 批量添加角色与权限关系集合
sysRoleMenuService.saveBatch(sysRoleMenuList);
}
}
return i>0;
}