Пример #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);
        }
Пример #2
0
        /// <summary>
        /// 删除功能角色映射信息
        /// </summary>
        /// <param name="id">功能角色映射编号</param>
        /// <returns>业务操作结果</returns>
        public virtual async Task <OperationResult> DeleteFunctionRoleMapAsync(TFunctionRoleMapKey id)
        {
            TFunctionRoleMap map = await FunctionRoleMapRepository.GetByKeyAsync(id);

            if (map == null)
            {
                return(OperationResult.NoChanged);
            }
            return(await FunctionRoleMapRepository.DeleteAsync(map) > 0
                ? new OperationResult(OperationResultType.Success, "功能角色映射信息删除成功")
                : OperationResult.NoChanged);
        }