sunpengfei
8 天以前 a22af1da254b90c79fd3e1433ed98f51c0a39a65
ApiTools.Application/ChannelWallets/Commands/ChannelWalletCommandHandler.cs
@@ -1,7 +1,10 @@
using Aop.Api.Domain;
using ApiTools.Core;
using Baidu.Aip;
using Consul;
using Furion.DistributedIDGenerator;
using Furion.FriendlyException;
using Furion.UnifyResult;
using Mapster;
using Medallion.Threading;
using MediatR;
@@ -12,6 +15,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Runtime.InteropServices.JavaScript.JSType;
namespace ApiTools.Application
{
@@ -19,15 +23,19 @@
            IDistributedLockProvider distributedLockProvider,
            ChannelWalletRepository channelWalletRepository,
            ChannelWalletTransactionRepository channelWalletTransactionRepository,
            ChannelWalletService channelWalletService
            ChannelWalletService channelWalletService,
            NongYePayUtils nongYePayUtils
        ) :
        IRequestHandler<SaveChannelPingAnPayWalletCommand, SaveChannelPingAnPayWalletCommandResult>,
        IRequestHandler<SubmitChannelWalletTransferCommand, SubmitChannelWalletTransferCommandResult>
        IRequestHandler<SaveChannelNongYePayWalletCommand, SaveChannelNongYePayWalletCommandResult>,
        IRequestHandler<SubmitChannelWalletTransferCommand, SubmitChannelWalletTransferCommandResult>,
        IRequestHandler<TestNongYePayCommand, bool>
    {
        private readonly IDistributedLockProvider distributedLockProvider = distributedLockProvider;
        private readonly ChannelWalletRepository channelWalletRepository = channelWalletRepository;
        private readonly ChannelWalletTransactionRepository channelWalletTransactionRepository = channelWalletTransactionRepository;
        private readonly ChannelWalletService channelWalletService = channelWalletService;
        private readonly NongYePayUtils nongYePayUtils = nongYePayUtils;
        /// <summary>
        /// 保存渠道平安银行钱包
@@ -67,6 +75,45 @@
        }
        /// <summary>
        /// 保存渠道农业银行钱包
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task<SaveChannelNongYePayWalletCommandResult> Handle(SaveChannelNongYePayWalletCommand request, CancellationToken cancellationToken)
        {
            var logier = JwtUtils.GetCurrentLogier();
            var wallet = await channelWalletRepository.GetQueryable(false)
                .Where(it => it.ChannelId == logier.ChannelId && it.OutWalletId == request.OutWalletId)
                .FirstOrDefaultAsync();
            if (wallet == null)
            {
                wallet = new ChannelWallet();
                wallet.ChannelId = logier.ChannelId;
                wallet.Access = EnumWalletAccess.NongYePay;
                wallet.Bank = "农业银行";
                wallet.Currency = "01";
                wallet.CurrencyName = "人民币";
                wallet.SignStatus = EnumWalletSignStatus.Apply;
                request.Adapt(wallet);
                await channelWalletRepository.SetCode(wallet);
                await channelWalletRepository.InsertNowAsync(wallet);
            }
            else
            {
                wallet.SignStatus = EnumWalletSignStatus.Apply;
                request.Adapt(wallet);
                await channelWalletRepository.UpdateNowAsync(wallet);
            }
            await channelWalletService.GetEnterpriseWalletBalance(wallet);
            return new SaveChannelNongYePayWalletCommandResult
            {
                Id = wallet.Id,
                Balance = wallet.Balance,
            };
        }
        /// <summary>
        /// 提交渠道钱包转账
        /// </summary>
        /// <param name="request"></param>
@@ -88,9 +135,25 @@
            if (wallet == null) throw Oops.Oh(EnumErrorCodeType.s404, "未开通钱包");
            if (wallet.SignStatus != EnumWalletSignStatus.Normal) throw Oops.Oh(EnumErrorCodeType.s404, "钱包未签约");
            await channelWalletService.GetEnterpriseWalletBalance(wallet);
            if (request.Amount > wallet.Balance) throw Oops.Oh(EnumErrorCodeType.s404, "余额不足");
            if (request.Amount > wallet.Balance)
            {
                UnifyContext.Fill(new
                {
                    request.Amount,
                    wallet.Balance,
                    wallet.Id
                });
                throw Oops.Oh(EnumErrorCodeType.s510, "余额不足");
            }
            if (wallet.Access == EnumWalletAccess.NongYePay
                && request.Currency.IsNull())
            {
                request.Currency = "01";
            }
            var transaction = await channelWalletTransactionRepository.GetQueryable()
                .Include(it => it.PingAnPay)
                .Where(it => it.WalletId == wallet.Id && it.OutCode == request.OutCode)
                .FirstOrDefaultAsync();
            if (transaction == null)
@@ -170,5 +233,152 @@
                FailReason = transaction.FailReason,
            };
        }
        /// <summary>
        /// 测试农业银行接口
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task<bool> Handle(TestNongYePayCommand request, CancellationToken cancellationToken)
        {
            //var res = await nongYePayUtils.GetBalance(new Core.Utils.NongYePayUtils.Models.NongYePayGetBalanceRequest
            //{
            //    Cmp = new Core.Utils.NongYePayUtils.Models.NongYePayGetBalanceRequestCmp
            //    {
            //        DbAccNo = "314101046433493",
            //        DbCur = "01",
            //        DbProv = "14"
            //    }
            //});
            //var seqNo = nongYePayUtils.GetSeqNo();
            //var res2 = await nongYePayUtils.SingleCorporateTransfer(new Core.Utils.NongYePayUtils.Models.NongYePaySingleCorporateTransferRequest
            //{
            //    ReqSeqNo = seqNo,
            //    Amt = 3,
            //    Corp = new Core.Utils.NongYePayUtils.Models.NongYePaySingleCorporateTransferRequestCorp
            //    {
            //        BookingFlag = "0",
            //        Postscript = "出账",
            //        OthBankFlag = "1",
            //        CrAccName = "兰兴托仪蹬笔予慊观速",
            //        CrBankNo = "105",
            //        DbAccName = "孔小土伊箭旺策夕余慊冠宋",
            //    },
            //    Cmp = new Core.Utils.NongYePayUtils.Models.NongYePaySingleCorporateTransferRequestCmp
            //    {
            //        DbAccNo = "314101046433493",
            //        DbProv = "14",
            //        DbCur = "01",
            //        CrAccNo = "3141010464105171",
            //        CrCur = "01",
            //        ConFlag = "1"
            //    }
            //});
            //var res3 = await nongYePayUtils.GetTransferStatus(new Core.Utils.NongYePayUtils.Models.NongYePayGetTransferStatusRequest
            //{
            //    Cme = new Core.Utils.NongYePayUtils.Models.NongYePayGetTransferStatusRequestCme
            //    {
            //        SerialNo = seqNo
            //    }
            //});
            //Console.WriteLine();
            //var res4 = await nongYePayUtils.GetEreceipts(new Core.Utils.NongYePayUtils.Models.NongYePayGetEreceiptsRequest
            //{
            //    Cmp = new Core.Utils.NongYePayUtils.Models.NongYePayGetEreceiptsRequestCmp
            //    {
            //        DbProv = "14",
            //        DbAccNo = "314101046433493",
            //        DbCur = "01"
            //    },
            //    Corp = new Core.Utils.NongYePayUtils.Models.NongYePayGetEreceiptsRequestCorp
            //    {
            //        StartDate = "20251217",
            //        EndDate = "20251217",
            //        IntAmt = 1,
            //        PrtAmt = 3
            //    }
            //});
            var res6 = await nongYePayUtils.GetTransferDetails(new Core.Utils.NongYePayUtils.Models.NongYePayGetTransferDetailsRequest
            {
                Corp = new Core.Utils.NongYePayUtils.Models.NongYePayGetTransferDetailsRequestCorp
                {
                    StartDate = "20251217",
                    EndDate = "20251217",
                },
                Cmp = new Core.Utils.NongYePayUtils.Models.NongYePayGetTransferDetailsRequestCmp
                {
                    DbProv = "14",
                    DbAccNo = "314101046433493",
                    DbCur = "01",
                }
            });
            //var res9 = await nongYePayUtils.DownloadEreceipt(new Core.Utils.NongYePayUtils.Models.NongYePayDownloadEreceiptRequest
            //{
            //    Corp = new Core.Utils.NongYePayUtils.Models.NongYePayDownloadEreceiptRequestCorp
            //    {
            //        StartDate = "20251218",
            //        AlterFlag = "1"
            //    }
            //});
            //foreach (var item in res9.Items)
            //{
            //    var url = AliyunOSSUtils.Upload(
            //        "NongYePay",
            //        item.Stream,
            //        $"电子回单-{IDGen.NextID()}.pdf")
            //        .Url;
            //    url = AliyunOSSUtils.GetUrl(url);
            //    Console.WriteLine();
            //}
            Console.WriteLine();
            //var a = res6.Items.FirstOrDefault().TrJrn;
            //var res8 = await nongYePayUtils.RealTimeDownloadEreceipt(new Core.Utils.NongYePayUtils.Models.NongYePayRealTimeDownloadEreceiptRequest
            //{
            //    Amt = "3",
            //    Cmp = new Core.Utils.NongYePayUtils.Models.NongYePayRealTimeDownloadEreceiptRequestCmp
            //    {
            //        DbAccNo = res6.Items[0].AccNo,
            //        DbProv = res6.Items[0].ProCode,
            //        DbCur = res6.Items[0].Cur,
            //        CrAccNo = res6.Items[0].OppAccNo,
            //        CrProv = res6.Items[0].OppProCode,
            //        CrCur = res6.Items[0].OppCur,
            //        TrDate = res6.Items[0].TrDate,
            //        JrnNo = res6.Items[0].TrJrn
            //    }
            //});
            //Console.WriteLine();
            //var res5 = await nongYePayUtils.DownloadEreceipt(new Core.Utils.NongYePayUtils.Models.NongYePayDownloadEreceiptRequest
            //{
            //    Corp = new Core.Utils.NongYePayUtils.Models.NongYePayDownloadEreceiptRequestCorp
            //    {
            //        StartDate = "20251215",
            //        AlterFlag = "1"
            //    }
            //});
            var res7 = await nongYePayUtils.GetBanks(new Core.Utils.NongYePayUtils.Models.NongYePayGetBanksRequest
            {
                Corp = new Core.Utils.NongYePayUtils.Models.NongYePayGetBanksRequestCorp
                {
                    CrBankName = "建设银行宁波鄞州支行",
                }
            });
            return true;
        }
    }
}