using ApiTools.Core;
|
using Mapster;
|
using MediatR;
|
using Microsoft.EntityFrameworkCore;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace ApiTools.Application
|
{
|
/// <summary>
|
/// 查询渠道钱包交易详情
|
/// </summary>
|
public class ChannelWalletQueryHandler(
|
ChannelWalletRepository channelWalletRepository,
|
ChannelWalletTransactionRepository channelWalletTransactionRepository
|
) :
|
IRequestHandler<GetChannelPingAnPayWalletQuery, GetChannelPingAnPayWalletQueryResult>,
|
IRequestHandler<GetChannelWalletTransactionQuery, GetChannelWalletTransactionQueryResult>,
|
IRequestHandler<GetChannelWalletTransactionsQuery, GetChannelWalletTransactionsQueryResult>
|
{
|
private readonly ChannelWalletRepository channelWalletRepository = channelWalletRepository;
|
private readonly ChannelWalletTransactionRepository channelWalletTransactionRepository = channelWalletTransactionRepository;
|
|
/// <summary>
|
/// 查询渠道平安银行钱包
|
/// </summary>
|
/// <param name="request"></param>
|
/// <param name="cancellationToken"></param>
|
/// <returns></returns>
|
public async Task<GetChannelPingAnPayWalletQueryResult> Handle(GetChannelPingAnPayWalletQuery request, CancellationToken cancellationToken)
|
{
|
return await channelWalletRepository.GetQueryable()
|
.Where(it => it.OutWalletId == request.OutWalletId)
|
.ProjectToType<GetChannelPingAnPayWalletQueryResult>()
|
.FirstOrDefaultAsync();
|
}
|
|
/// <summary>
|
/// 查询渠道钱包交易详情
|
/// </summary>
|
/// <param name="request"></param>
|
/// <param name="cancellationToken"></param>
|
/// <returns></returns>
|
public async Task<GetChannelWalletTransactionQueryResult> Handle(GetChannelWalletTransactionQuery request, CancellationToken cancellationToken)
|
{
|
return await channelWalletTransactionRepository.GetQueryable()
|
.Where(it => it.OutCode == request.OutCode)
|
.ProjectToType<GetChannelWalletTransactionQueryResult>()
|
.FirstOrDefaultAsync();
|
}
|
|
/// <summary>
|
/// 查询渠道钱包交易详情
|
/// </summary>
|
/// <param name="request"></param>
|
/// <param name="cancellationToken"></param>
|
/// <returns></returns>
|
public async Task<GetChannelWalletTransactionsQueryResult> Handle(GetChannelWalletTransactionsQuery request, CancellationToken cancellationToken)
|
{
|
var list = new GetChannelWalletTransactionsQueryResult();
|
list.Items = await channelWalletTransactionRepository.GetQueryable()
|
.Where(it => request.OutCodes.Contains(it.OutCode))
|
.ProjectToType<GetChannelWalletTransactionsQueryResultItem>()
|
.ToListAsync();
|
foreach (var item in list.Items)
|
{
|
if (item.EreceiptStatus == EnumWalletTransactionEreceiptStatus.SUCCESS
|
&& item.EreceiptDownloadOssUrl.IsNotNull())
|
{
|
item.EreceiptDownloadOssFullUrl = AliyunOSSUtils.GetUrl(item.EreceiptDownloadOssUrl);
|
}
|
}
|
return list;
|
}
|
}
|
}
|