Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
 /// <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;
 }