/// <summary> /// 重新添加权限到角色 /// </summary> /// <param name="dto"></param> /// <returns></returns> public async Task <Result> ReAddPermissonsToRoleAsync(ReAddPermissonsToRoleDto dto) { if (dto is null) { throw new ArgumentNullException(nameof(dto)); } var existRole = await applicationDbContext.Roles.AnyAsync(e => e.Id == dto.RoleId).ConfigureAwait(false); if (!existRole) { return(FailedResult("角色不存在")); } dto.PermissonIds = dto.PermissonIds.Distinct().ToList(); //先清空清空rolePermissions 即可 var rolePermissons = applicationDbContext.RolePermissons .Where(e => e.RoleId == dto.RoleId); applicationDbContext.RolePermissons.RemoveRange(rolePermissons); //再添加到rolePermissions表 foreach (var permissionId in dto.PermissonIds) { var existPermisson = await applicationDbContext.Permissons.AnyAsync(e => e.Id == permissionId).ConfigureAwait(false); if (!existPermisson) { return(FailedResult($"不存在权限id[{permissionId}]")); } await applicationDbContext.RolePermissons.AddAsync(new RolePermisson { RoleId = dto.RoleId, PermissonId = permissionId }).ConfigureAwait(false); } try { await applicationDbContext.SaveChangesAsync().ConfigureAwait(false); return(OkResult()); } catch (DbUpdateException ex) { return(FailedResult(ex)); } }
public async Task <IActionResult> ReAddPermissonsToRoleAsync(string roleId, ReAddPermissonsToRoleDto dto) { if (roleId != dto.RoleId) { ModelState.AddModelError(string.Empty, "roleId参数不一致"); } var result = await roleService.ReAddPermissonsToRoleAsync(dto).ConfigureAwait(false); if (result.Succeeded) { return(Ok()); } ModelState.AddModelError(string.Empty, result.ErrorMessage); return(BadRequest(ModelState)); }