/// <summary>
        /// 导出交易日志
        /// </summary>
        public async Task <FileDto> GetTransactionLogsToExcel(GetTransactionLogsInput input)
        {
            async Task <List <TransactionLogExportDto> > getListFunc(bool isLoadSoftDeleteData)
            {
                var query   = CreateTransactionLogsQuery(input);
                var results = await query
                              .OrderBy(input.Sorting)
                              .ToListAsync();

                var exportListDtos = results.MapTo <List <TransactionLogExportDto> >();

                if (exportListDtos.Count == 0)
                {
                    throw new UserFriendlyException(L("NoDataToExport"));
                }
                return(exportListDtos);
            }

            List <TransactionLogExportDto> exportData = null;


            exportData = await getListFunc(false);

            var fileDto   = new FileDto(L("TransactionLog") + L("ExportData") + ".xlsx", MimeTypeNames.ApplicationVndOpenxmlformatsOfficedocumentSpreadsheetmlSheet);
            var byteArray = await _excelExporter.ExportAsByteArray(exportData);

            _tempFileCacheManager.SetFile(fileDto.FileToken, byteArray);
            return(fileDto);
        }
        /// <summary>
        ///
        /// </summary>
        private IQueryable <TransactionLog> CreateTransactionLogsQuery(GetTransactionLogsInput input)
        {
            var query = _transactionLogRepository.GetAllIncluding(p => p.Currency);

            //关键字搜索
            query = query
                    .WhereIf(
                !input.Filter.IsNullOrEmpty(),
                p => p.Name.Contains(input.Filter) || p.ClientIpAddress.Contains(input.Filter) || p.ClientName.Contains(input.Filter) || p.CustomData.Contains(input.Filter) || p.OutTradeNo.Contains(input.Filter) || p.TransactionId.Contains(input.Filter) || p.Exception.Contains(input.Filter));


            //创建时间范围搜索
            query = query
                    .WhereIf(input.CreationDateStart.HasValue, t => t.CreationTime >= input.CreationDateStart.Value)
                    .WhereIf(input.CreationDateEnd.HasValue, t => t.CreationTime <= input.CreationDateEnd.Value);


            return(query);
        }
        /// <summary>
        /// 获取交易日志列表
        /// </summary>
        public async Task <PagedResultDto <TransactionLogListDto> > GetTransactionLogs(GetTransactionLogsInput input)
        {
            async Task <PagedResultDto <TransactionLogListDto> > getListFunc(bool isLoadSoftDeleteData)
            {
                var query = CreateTransactionLogsQuery(input);


                var resultCount = await query.CountAsync();

                var results = await query
                              .OrderBy(input.Sorting)
                              .PageBy(input)
                              .Select(i => new TransactionLogListDto
                {
                    Id               = i.Id,
                    ClientName       = i.ClientName,
                    ClientIpAddress  = i.ClientIpAddress,
                    CustomData       = i.CustomData,
                    CreationTime     = i.CreationTime,
                    CultureValue     = i.Currency.ToString(),
                    PayChannel       = i.PayChannel,
                    Exception        = i.Exception,
                    IsFreeze         = i.IsFreeze,
                    OutTradeNo       = i.OutTradeNo,
                    PayTime          = i.PayTime,
                    Terminal         = i.Terminal,
                    TransactionState = i.TransactionState
                })
                              .ToListAsync();

                return(new PagedResultDto <TransactionLogListDto>(resultCount, results));
            }

            //是否仅加载回收站数据
            if (input.IsOnlyGetRecycleData)
            {
                using (UnitOfWorkManager.Current.DisableFilter(AbpDataFilters.SoftDelete))
                {
                    return(await getListFunc(true));
                }
            }
            return(await getListFunc(false));
        }