/// <summary> /// 设置角色功能 /// </summary> /// <param name="roleId">角色Id</param> /// <param name="functionIds">功能Id集合</param> /// <returns>业务操作结果</returns> public async Task <OperationResult> SetRoleFunctions(int roleId, Guid[] functionIds) { SysRole role = await RoleRepository.GetByKeyAsync(roleId); if (role == null) { return(new OperationResult(OperationResultType.QueryNull, "指定编号的角色信息不存在")); } Guid[] existIds = FunctionRoleMapRepository.Entities.Where(m => m.Role.Id == roleId).Select(m => m.Function.Id).ToArray(); Guid[] addIds = functionIds.Except(existIds).ToArray(); Guid[] removeIds = existIds.Except(functionIds).ToArray(); FunctionRoleMapRepository.UnitOfWork.TransactionEnabled = true; foreach (Guid addId in addIds) { Function function = await FunctionRepository.GetByKeyAsync(addId); if (function == null) { return(new OperationResult(OperationResultType.QueryNull, "指定编号的功能信息不存在")); } FunctionRoleMap map = new FunctionRoleMap() { Function = function, Role = role, BeginTime = DateTime.Now }; await FunctionRoleMapRepository.InsertAsync(map); } await FunctionRoleMapRepository.DeleteAsync(m => m.Role.Id == roleId && removeIds.Contains(m.Function.Id)); return(await FunctionRoleMapRepository.UnitOfWork.SaveChangesAsync() > 0 ? new OperationResult(OperationResultType.Success, "角色“{0}”指派功能操作成功".FormatWith(role.Name)) : OperationResult.NoChanged); }
/// <summary> /// 设置角色功能 /// </summary> /// <param name="roleId">角色Id</param> /// <param name="functionIds">功能Id集合</param> /// <returns>业务操作结果</returns> public async Task<OperationResult> SetRoleFunctions(int roleId, Guid[] functionIds) { SysRole role = await RoleRepository.GetByKeyAsync(roleId); if (role == null) { return new OperationResult(OperationResultType.QueryNull, "指定编号的角色信息不存在"); } Guid[] existIds = FunctionRoleMapRepository.Entities.Where(m => m.Role.Id == roleId).Select(m => m.Function.Id).ToArray(); Guid[] addIds = functionIds.Except(existIds).ToArray(); Guid[] removeIds = existIds.Except(functionIds).ToArray(); FunctionRoleMapRepository.UnitOfWork.TransactionEnabled = true; foreach (Guid addId in addIds) { Function function = await FunctionRepository.GetByKeyAsync(addId); if (function == null) { return new OperationResult(OperationResultType.QueryNull, "指定编号的功能信息不存在"); } FunctionRoleMap map = new FunctionRoleMap() { Function = function, Role = role, BeginTime = DateTime.Now }; await FunctionRoleMapRepository.InsertAsync(map); } await FunctionRoleMapRepository.DeleteAsync(m => m.Role.Id == roleId && removeIds.Contains(m.Function.Id)); return await FunctionRoleMapRepository.UnitOfWork.SaveChangesAsync() > 0 ? new OperationResult(OperationResultType.Success, "角色“{0}”指派功能操作成功".FormatWith(role.Name)) : OperationResult.NoChanged; }