public async Task <JsonResponse> SaveRolePermission([FromBody] SaveRolePermissionViewModel vm) { var roleInfo = (await _roleServices.Query(p => p.Id == vm.RoleId)).SingleOrDefault(); if (roleInfo == null) { throw new UserOperationException("角色不存在"); } var permissionIds = await _rolePermissionServices.GetPermissionIds(roleInfo.Id); var removeIds = permissionIds.Where(id => !vm.PermissionIds.Contains(id)).ToList(); _unitOfWork.Begin(); var resultCount = 0; foreach (var id in removeIds) { resultCount += await _rolePermissionServices.Delete(p => p.RoleId == roleInfo.Id && p.PermissionId == id); } var addIds = vm.PermissionIds.Where(id => !permissionIds.Contains(id)).ToList(); foreach (var id in addIds) { var rolePermisId = _rolePermissionServices.Add(new SysRolePermission { RoleId = roleInfo.Id, PermissionId = id }); resultCount += rolePermisId > 0 ? 1 : 0; } if (resultCount != removeIds.Count + addIds.Count) { _unitOfWork.Rollback(); throw new UserOperationException("操作失败"); } _unitOfWork.Commit(); return(new JsonResponse(true)); }