From a62b3247a44963907a7f84c4d1de87fc8bd5d718 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期三, 19 十一月 2025 09:18:32 +0800
Subject: [PATCH] feat:平安转账开发
---
ApiTools.Core/ApiTools.Core.csproj | 2
ApiTools.Core/Enums/Users/EnumWalletSignStatus.cs | 31
ApiTools.Core/Repositories/ChannelWalletRepository.cs | 66
ApiTools.Core/Enums/Users/EnumWalletTransactionEreceiptStatus.cs | 31
ApiTools.Application/ChannelWallets/Queries/ChannelWalletQueryHandler.cs | 38
ApiTools.Application/ApiTools.Application.xml | 58
ApiTools.Core/Enums/Resources/EnumResourceController.cs | 5
ApiTools.Core/Services/ChannelWalletService.cs | 109 +
ApiTools.Core/Services/IChannelWalletService.cs | 45
ApiTools.Core/Utils/CollectionUtils/CollectionUtils.cs | 27
ApiTools.Core/Models/ChannelWallets/Queries/GetChannelWalletTransactionQuery.cs | 192 ++
ApiTools.Core/Services/ChannelPingAnPayWalletService.cs | 285 +++
ApiTools.Core/Entities/Users/ChannelWalletTransaction.cs | 204 ++
ApiTools.Core/Enums/Users/EnumWalletTransactionType.cs | 20
ApiTools.Core/Utils/PingAnPayUtils/PingAnPayUtils.cs | 30
ApiTools.Web.Entry/Startup.cs | 1
ApiTools.Application/ChannelWallets/Commands/ChannelWalletCommandHandler.cs | 129 +
ApiTools.Core/Models/ChannelWallets/Commands/SubmitChannelWalletTransferCommand.cs | 118 +
ApiTools.Core/Repositories/EnterpriseWalletTransactionRepository.cs | 41
/dev/null | 487 ------
ApiTools.Core/Models/ChannelWallets/Commands/SaveChannelPingAnPayWalletCommand.cs | 65
ApiTools.Core/Entities/Users/ChannelWalletTransactionPingAnPay.cs | 165 ++
ApiTools.Core/Utils/DistributedCacheUtils/DistributedLock.cs | 20
ApiTools.Core/Utils/DistributedCacheUtils/DistributedLockServiceComponent.cs | 24
ApiTools.Core/ApiTools.Core.xml | 2005 +++++++++++++-----------
ApiTools.Core/Enums/Users/EnumWalletTransactionStatus.cs | 39
ApiTools.Core/Repositories/BaseRepository.cs | 351 ++++
ApiTools.Core/Enums/Users/EnumWalletAccess.cs | 27
ApiTools.Core/Entities/Users/ChannelWallet.cs | 81 +
29 files changed, 3,237 insertions(+), 1,459 deletions(-)
diff --git a/ApiTools.Application/ApiTools.Application.xml b/ApiTools.Application/ApiTools.Application.xml
index 5c51fb0..ebd1a2b 100644
--- a/ApiTools.Application/ApiTools.Application.xml
+++ b/ApiTools.Application/ApiTools.Application.xml
@@ -149,6 +149,48 @@
<param name="cancellationToken"></param>
<returns></returns>
</member>
+ <member name="M:ApiTools.Application.ChannelWalletCommandHandler.Handle(ApiTools.Core.SubmitChannelWalletTransferCommand,System.Threading.CancellationToken)">
+ <summary>
+ 鎻愪氦娓犻亾閽卞寘杞处
+ </summary>
+ <param name="request"></param>
+ <param name="cancellationToken"></param>
+ <returns></returns>
+ </member>
+ <member name="T:ApiTools.Application.ChannelWalletQueryHandler">
+ <summary>
+ 鏌ヨ娓犻亾閽卞寘浜ゆ槗璇︽儏
+ </summary>
+ </member>
+ <member name="M:ApiTools.Application.ChannelWalletQueryHandler.#ctor(ApiTools.Core.ChannelWalletTransactionRepository)">
+ <summary>
+ 鏌ヨ娓犻亾閽卞寘浜ゆ槗璇︽儏
+ </summary>
+ </member>
+ <member name="M:ApiTools.Application.ChannelWalletQueryHandler.Handle(ApiTools.Core.GetChannelWalletTransactionQuery,System.Threading.CancellationToken)">
+ <summary>
+ 鏌ヨ娓犻亾閽卞寘浜ゆ槗璇︽儏
+ </summary>
+ <param name="request"></param>
+ <param name="cancellationToken"></param>
+ <returns></returns>
+ </member>
+ <member name="M:ApiTools.Application.SendSmsCommandHandler.Handle(ApiTools.Core.SendSmsCommand,System.Threading.CancellationToken)">
+ <summary>
+ 鍙戦�佺煭淇�
+ </summary>
+ <param name="request"></param>
+ <param name="cancellationToken"></param>
+ <returns></returns>
+ </member>
+ <member name="M:ApiTools.Application.SendSmsCommandHandler.Handle(ApiTools.Core.CheckVerifyCodeSmsCommand,System.Threading.CancellationToken)">
+ <summary>
+ 鏍¢獙楠岃瘉鐮�
+ </summary>
+ <param name="request"></param>
+ <param name="cancellationToken"></param>
+ <returns></returns>
+ </member>
<member name="T:ApiTools.CommonServer.Application.SaveSmsSettingCommandHandler">
<summary>
淇濆瓨鐭俊閰嶇疆
@@ -216,22 +258,6 @@
<member name="M:ApiTools.CommonServer.Application.GetSmsSettingQueryHandler.Handle(ApiTools.Core.GetSmsSettingQuery,System.Threading.CancellationToken)">
<summary>
鏌ヨ鐭俊閰嶇疆
- </summary>
- <param name="request"></param>
- <param name="cancellationToken"></param>
- <returns></returns>
- </member>
- <member name="M:ApiTools.Application.SendSmsCommandHandler.Handle(ApiTools.Core.SendSmsCommand,System.Threading.CancellationToken)">
- <summary>
- 鍙戦�佺煭淇�
- </summary>
- <param name="request"></param>
- <param name="cancellationToken"></param>
- <returns></returns>
- </member>
- <member name="M:ApiTools.Application.SendSmsCommandHandler.Handle(ApiTools.Core.CheckVerifyCodeSmsCommand,System.Threading.CancellationToken)">
- <summary>
- 鏍¢獙楠岃瘉鐮�
</summary>
<param name="request"></param>
<param name="cancellationToken"></param>
diff --git a/ApiTools.Application/ChannelWallets/Commands/ChannelWalletCommandHandler.cs b/ApiTools.Application/ChannelWallets/Commands/ChannelWalletCommandHandler.cs
new file mode 100644
index 0000000..3feb977
--- /dev/null
+++ b/ApiTools.Application/ChannelWallets/Commands/ChannelWalletCommandHandler.cs
@@ -0,0 +1,129 @@
+锘縰sing Aop.Api.Domain;
+using ApiTools.Core;
+using Consul;
+using Furion.FriendlyException;
+using Mapster;
+using Medallion.Threading;
+using MediatR;
+using Microsoft.EntityFrameworkCore;
+using StackExchange.Redis;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ApiTools.Application
+{
+ public class ChannelWalletCommandHandler(
+ IDistributedLockProvider distributedLockProvider,
+ ChannelWalletRepository channelWalletRepository,
+ ChannelWalletTransactionRepository channelWalletTransactionRepository,
+ ChannelWalletService channelWalletService
+ ) :
+ IRequestHandler<SaveChannelPingAnPayWalletCommand, SaveChannelPingAnPayWalletCommandResult>,
+ IRequestHandler<SubmitChannelWalletTransferCommand, SubmitChannelWalletTransferCommandResult>
+ {
+ private readonly IDistributedLockProvider distributedLockProvider = distributedLockProvider;
+ private readonly ChannelWalletRepository channelWalletRepository = channelWalletRepository;
+ private readonly ChannelWalletTransactionRepository channelWalletTransactionRepository = channelWalletTransactionRepository;
+ private readonly ChannelWalletService channelWalletService = channelWalletService;
+
+ public async Task<SaveChannelPingAnPayWalletCommandResult> Handle(SaveChannelPingAnPayWalletCommand 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.PingAnPay;
+ wallet.SignStatus = EnumWalletSignStatus.Normal;
+ request.Adapt(wallet);
+ await channelWalletRepository.SetCode(wallet);
+ await channelWalletRepository.InsertNowAsync(wallet);
+ }
+ else
+ {
+ request.Adapt(wallet);
+ await channelWalletRepository.UpdateNowAsync(wallet);
+ }
+ await channelWalletService.GetEnterpriseWalletBalance(wallet);
+ return new SaveChannelPingAnPayWalletCommandResult
+ {
+ WalletId = wallet.Id,
+ Balance = wallet.Balance,
+ ErrorCode = wallet.ErrorCode,
+ FailReason = wallet.FailReason
+ };
+ }
+
+ /// <summary>
+ /// 鎻愪氦娓犻亾閽卞寘杞处
+ /// </summary>
+ /// <param name="request"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ public async Task<SubmitChannelWalletTransferCommandResult> Handle(SubmitChannelWalletTransferCommand request, CancellationToken cancellationToken)
+ {
+ var logier = JwtUtils.GetCurrentLogier();
+
+ await using var handle = await distributedLockProvider.TryAcquireAsync(
+ channelWalletService.GetLockKey(logier.ChannelId.Value, request.OutWalletId),
+ TimeSpan.FromMinutes(30));
+ if (handle == null) throw Oops.Oh(EnumErrorCodeType.s429);
+
+ var wallet = await channelWalletRepository.GetQueryable(false)
+ .Where(it => it.ChannelId == logier.ChannelId && it.OutWalletId == request.OutWalletId)
+ .FirstOrDefaultAsync();
+
+ if (wallet == null) throw Oops.Oh(EnumErrorCodeType.s404, "鏈紑閫氶挶鍖�");
+
+ await channelWalletService.GetEnterpriseWalletBalance(wallet);
+ if (request.Amount > wallet.Balance) throw Oops.Oh(EnumErrorCodeType.s404, "浣欓涓嶈冻");
+
+ var checkExist = await channelWalletTransactionRepository.GetQueryable()
+ .AnyAsync(it => it.WalletId == wallet.Id && it.OutCode == request.OutCode);
+ if (checkExist) throw Oops.Oh(EnumErrorCodeType.s405, "浜ゆ槗鍗曞彿");
+
+ var transaction = new ChannelWalletTransaction();
+ transaction.Type = EnumWalletTransactionType.Transfer;
+ transaction.WalletId = wallet.Id;
+ transaction.OutCode = request.OutCode;
+ transaction.ConcurrencyLock = $"{logier.ChannelId}:{transaction.OutCode}";
+ transaction.Amount = request.Amount;
+ transaction.Remark = request.Remark;
+ transaction.TransactionStatus = EnumWalletTransactionStatus.WaitSubmit;
+ transaction.Balance = wallet.Balance;
+ transaction.AfterBalance = wallet.Balance - transaction.Amount;
+ transaction.OutOperatorId = request.OutOperatorId;
+ transaction.OperatorTime = request.OperatorTime;
+ transaction.PayerName = wallet.Name;
+ transaction.PayerAccount = wallet.Identity;
+ transaction.PayerBank = wallet.Bank;
+ transaction.PayerBankBranch = wallet.BankBranch;
+ transaction.OutReceiveId = request.OutReceiveId;
+ transaction.ReceiveBank = request.ReceiveBank;
+ transaction.ReceiveBankBranch = request.ReceiveBankBranch;
+ transaction.ReceiveName = request.ReceiveName;
+ transaction.ReceiveIdentity = request.ReceiveIdentity;
+ transaction.ReceiveAccount = request.ReceiveAccount;
+ transaction.Currency = request.Currency;
+ transaction.Purpose = request.Purpose;
+ transaction.Remark = request.Remark;
+ await channelWalletTransactionRepository.SetCode(transaction);
+ await channelWalletTransactionRepository.InsertNowAsync(transaction);
+ await channelWalletService.Transfer(wallet, transaction);
+ return new SubmitChannelWalletTransferCommandResult
+ {
+ Id = transaction.Id,
+ Code = transaction.Code,
+ TransactionStatus = transaction.TransactionStatus,
+ ErrorCode = transaction.ErrorCode,
+ FailReason = transaction.FailReason,
+ };
+ }
+ }
+}
diff --git a/ApiTools.Application/ChannelWallets/Queries/ChannelWalletQueryHandler.cs b/ApiTools.Application/ChannelWallets/Queries/ChannelWalletQueryHandler.cs
new file mode 100644
index 0000000..cbc93a4
--- /dev/null
+++ b/ApiTools.Application/ChannelWallets/Queries/ChannelWalletQueryHandler.cs
@@ -0,0 +1,38 @@
+锘縰sing 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(
+ ChannelWalletTransactionRepository channelWalletTransactionRepository
+ ) :
+ IRequestHandler<GetChannelWalletTransactionQuery, GetChannelWalletTransactionQueryResult>
+ {
+ private readonly ChannelWalletTransactionRepository channelWalletTransactionRepository = channelWalletTransactionRepository;
+
+ /// <summary>
+ /// 鏌ヨ娓犻亾閽卞寘浜ゆ槗璇︽儏
+ /// </summary>
+ /// <param name="request"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ public async Task<GetChannelWalletTransactionQueryResult> Handle(GetChannelWalletTransactionQuery request, CancellationToken cancellationToken)
+ {
+ var logier = JwtUtils.GetCurrentLogier();
+ return await channelWalletTransactionRepository.GetQueryable()
+ .Where(it => it.Wallet.ChannelId == logier.ChannelId && it.OutCode == request.OutCode)
+ .ProjectToType<GetChannelWalletTransactionQueryResult>()
+ .FirstOrDefaultAsync();
+ }
+ }
+}
diff --git a/ApiTools.Core/ApiTools.Core.csproj b/ApiTools.Core/ApiTools.Core.csproj
index 90d13b5..bea4bf4 100644
--- a/ApiTools.Core/ApiTools.Core.csproj
+++ b/ApiTools.Core/ApiTools.Core.csproj
@@ -19,6 +19,8 @@
<PackageReference Include="Aliyun.OSS.SDK.NetCore" Version="2.14.1" />
<PackageReference Include="Baidu.AI" Version="4.15.16" />
<PackageReference Include="Consul" Version="1.7.14.8" />
+ <PackageReference Include="DistributedLock.Core" Version="1.0.8" />
+ <PackageReference Include="DistributedLock.Redis" Version="1.1.0" />
<PackageReference Include="EFCore.BulkExtensions" Version="9.0.1" />
<PackageReference Include="Furion" Version="4.9.7.106" />
<PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.9.7.106" />
diff --git a/ApiTools.Core/ApiTools.Core.xml b/ApiTools.Core/ApiTools.Core.xml
index 870eae2..534a73a 100644
--- a/ApiTools.Core/ApiTools.Core.xml
+++ b/ApiTools.Core/ApiTools.Core.xml
@@ -809,6 +809,411 @@
鏄惁绂佺敤
</summary>
</member>
+ <member name="T:ApiTools.Core.ChannelWallet">
+ <summary>
+ 娓犻亾閽卞寘
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWallet.ChannelId">
+ <summary>
+ 娓犻亾Id
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWallet.Channel">
+ <summary>
+ 娓犻亾
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWallet.OutWalletId">
+ <summary>
+ 澶栭儴閽卞寘Id
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWallet.Access">
+ <summary>
+ 閫氶亾
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWallet.Code">
+ <summary>
+ 缂栧彿
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWallet.Bank">
+ <summary>
+ 鎵�灞為摱琛�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWallet.BankBranch">
+ <summary>
+ 鎵�灞炴敮琛�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWallet.Name">
+ <summary>
+ 鎴峰悕
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWallet.Identity">
+ <summary>
+ 璐﹀彿
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWallet.Balance">
+ <summary>
+ 浣欓
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWallet.SignStatus">
+ <summary>
+ 绛剧害鐘舵��
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWallet.ErrorCode">
+ <summary>
+ 閿欒浠g爜
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWallet.FailReason">
+ <summary>
+ 杩斿洖鍏蜂綋鐨勫師鍥犮��
+ </summary>
+ </member>
+ <member name="T:ApiTools.Core.ChannelWalletTransaction">
+ <summary>
+ 娓犻亾閽卞寘浜ゆ槗
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.WalletId">
+ <summary>
+ 閽卞寘Id
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.Wallet">
+ <summary>
+ 閽卞寘
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.PingAnPay">
+ <summary>
+ 骞冲畨淇℃伅
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.Type">
+ <summary>
+ 绫诲瀷
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.Code">
+ <summary>
+ 璁㈠崟鍙�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.OutCode">
+ <summary>
+ 澶栭儴璁㈠崟鍙�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.ConcurrencyLock">
+ <summary>
+ 骞跺彂閿�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.Amount">
+ <summary>
+ 閲戦
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.Balance">
+ <summary>
+ 浣欓
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.AfterBalance">
+ <summary>
+ 鏀舵敮鍚庝綑棰�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.OutOperatorId">
+ <summary>
+ 澶栭儴鎿嶄綔浜篒d
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.OperatorTime">
+ <summary>
+ 鎿嶄綔鏃堕棿
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.PayerAccount">
+ <summary>
+ 浠樻浜鸿处鎴�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.PayerName">
+ <summary>
+ 浠樻浜哄悕绉�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.PayerBank">
+ <summary>
+ 浠樻浜哄紑鎴疯
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.PayerBankBranch">
+ <summary>
+ 浠樻浜烘敮琛�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.OutReceiveId">
+ <summary>
+ 澶栭儴鏀舵浜篒d
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.ReceiveName">
+ <summary>
+ 鏀舵浜哄鍚�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.ReceiveIdentity">
+ <summary>
+ 鏀舵浜鸿韩浠借瘉鍙�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.ReceiveAccount">
+ <summary>
+ 鏀舵璐︽埛
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.ReceiveBank">
+ <summary>
+ 鏀舵浜哄紑鎴疯
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.ReceiveBankBranch">
+ <summary>
+ 鏀舵浜烘敮琛�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.Currency">
+ <summary>
+ 甯佺
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.Purpose">
+ <summary>
+ 鐢ㄩ��
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.ErrorCode">
+ <summary>
+ 鏌ヨ鍒扮殑璁㈠崟鐘舵�佷负FAIL澶辫触鎴朢EFUND閫�绁ㄦ椂锛岃繑鍥為敊璇唬鐮�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.FailReason">
+ <summary>
+ 鏌ヨ鍒扮殑璁㈠崟鐘舵�佷负FAIL澶辫触鎴朢EFUND閫�绁ㄦ椂锛岃繑鍥炲叿浣撶殑鍘熷洜銆�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.TransDate">
+ <summary>
+ 璁㈠崟鏀粯鏃堕棿
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.OrderFee">
+ <summary>
+ 棰勮鏀惰垂閲戦锛堝厓锛夛紝杞处鍒伴摱琛屽崱涓撶敤
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.EreceiptFileId">
+ <summary>
+ 鐢靛瓙鏀舵嵁Id
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.EreceiptDownloadUrl">
+ <summary>
+ 鐢靛瓙鏀舵嵁涓嬭浇閾炬帴
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.EreceiptDownloadOssUrl">
+ <summary>
+ 鐢靛瓙鏀舵嵁涓嬭浇閾炬帴
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.EreceiptStatus">
+ <summary>
+ 鐢靛瓙鏀舵嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.EreceiptErrorMessage">
+ <summary>
+ 鐢靛瓙鏀舵嵁閿欒淇℃伅
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransaction.TransactionStatus">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="T:ApiTools.Core.ChannelWalletTransactionPingAnPay">
+ <summary>
+ 娓犻亾閽卞寘浜ゆ槗璁板綍骞冲畨鏀粯淇℃伅
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransactionPingAnPay.Transaction">
+ <summary>
+ 浜ゆ槗
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransactionPingAnPay.FreezeNo">
+ <summary>
+ 姝粯缂栧彿 鏈夋晥鐘舵�佺殑骞冲畨鏄撴浠樼紪鍙凤紝浠嶫GF001姝粯鍚庤繑鍥炵殑
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransactionPingAnPay.StopStt">
+ <summary>
+ 姝粯鐘舵�佺爜
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransactionPingAnPay.StopFailReason">
+ <summary>
+ 姝粯澶辫触鍘熷洜
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransactionPingAnPay.RemoveStopStt">
+ <summary>
+ 瑙i櫎姝粯鐘舵�佺爜
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransactionPingAnPay.RemoveStopFailReason">
+ <summary>
+ 瑙i櫎姝粯澶辫触鍘熷洜
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransactionPingAnPay.ThirdVoucher">
+ <summary>
+ 杞处鍑瘉鍙�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransactionPingAnPay.FrontLogNo">
+ <summary>
+ 閾惰娴佹按鍙� 閾惰涓氬姟娴佹按鍙凤紱鍙互鐢ㄤ簬瀵硅处
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransactionPingAnPay.CstInnerFlowNo">
+ <summary>
+ 瀹㈡埛鑷畾涔夊嚟璇佸彿 鐢ㄤ簬瀹㈡埛杞处鐧昏鍜屽唴閮ㄨ瘑鍒紝閫氳繃杞处缁撴灉鏌ヨ鍙互杩斿洖銆傞摱琛屼笉妫�鏌ュ敮涓�鎬�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransactionPingAnPay.IsBack">
+ <summary>
+ 杞处閫�绁ㄦ爣蹇�
+ "0:鏈��绁�; 榛樿涓�0
+ 1:閫�绁�;"
+ 鏁版嵁闀垮害锛�1锛屾槸鍚﹀繀杈擄細N
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransactionPingAnPay.BackRem">
+ <summary>
+ 鏀粯澶辫触鎴栭��绁ㄥ師鍥犳弿杩�
+ "濡傛灉鏄秴绾х綉閾跺垯杩斿洖濡備笅淇℃伅:
+ RJ01瀵规柟杩斿洖锛氳处鍙蜂笉瀛樺湪
+ RJ02瀵规柟杩斿洖锛氳处鍙枫�佹埛鍚嶄笉绗�
+ 澶у皬棰濇敮浠樺垯杩斿洖澶辫触鎻忚堪"
+ 鏁版嵁闀垮害锛�20锛屾槸鍚﹀繀杈擄細N
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransactionPingAnPay.Yhcljg">
+ <summary>
+ 閾惰澶勭悊缁撴灉
+ "鏍煎紡涓猴細鈥滃叚浣嶄唬鐮�:涓枃鎻忚堪鈥濄�傚啋鍙蜂负鍗婅銆傚锛�000000锛氳浆璐︽垚鍔�
+ 澶勭悊涓殑杩斿洖(浠ュ涓嬭繑鍥炲紑澶�)锛�
+ MA9111:浜ゆ槗姝e湪鍙楃悊涓�
+ 000000:浜ゆ槗鍙楃悊鎴愬姛寰呭鐞�
+ 000000:浜ゆ槗澶勭悊涓�
+ 000000:浜ゆ槗鍙楃悊鎴愬姛澶勭悊涓�
+ 鎴愬姛鐨勮繑鍥烇細
+ 000000:杞处浜ゆ槗鎴愬姛
+ 鍏朵粬鐨勮繑鍥為兘涓哄け璐�:
+ MA9112:杞处澶辫触"
+ 鏁版嵁闀垮害锛�40锛屾槸鍚﹀繀杈擄細Y
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransactionPingAnPay.SysFlag">
+ <summary>
+ 杞处鍔犳�ユ爣蹇�
+ Y锛氬姞鎬� N锛氭櫘閫歋锛氱壒鎬�
+ 鏁版嵁闀垮害锛�1锛屾槸鍚﹀繀杈擄細Y
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransactionPingAnPay.Fee">
+ <summary>
+ 杞处鎵嬬画璐�
+ 鏁版嵁闀垮害锛�13锛屾槸鍚﹀繀杈擄細Y
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransactionPingAnPay.TransBsn">
+ <summary>
+ 杞处浠g爜绫诲瀷
+ "4004锛氬崟绗旇浆璐︼紱
+ 4014锛氬崟绗旀壒閲忥紱
+ 4034锛氭眹鎬绘壒閲�"
+ 鏁版嵁闀垮害锛�4锛屾槸鍚﹀繀杈擄細Y
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransactionPingAnPay.SubmitTime">
+ <summary>
+ 浜ゆ槗鍙楃悊鏃堕棿
+ 浜ゆ槗鍙楃悊鏃堕棿
+ 鏁版嵁闀垮害锛�14锛屾槸鍚﹀繀杈擄細N
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransactionPingAnPay.AccountDate">
+ <summary>
+ 璁拌处鏃ユ湡
+ 涓绘満璁拌处鏃ユ湡
+ 鏁版嵁闀垮害锛�8锛屾槸鍚﹀繀杈擄細N
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransactionPingAnPay.HostFlowNo">
+ <summary>
+ 涓绘満璁拌处娴佹按鍙�
+ 涓绘満璁拌处娴佹按
+ 鏁版嵁闀垮害锛�32锛屾槸鍚﹀繀杈擄細N
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransactionPingAnPay.HostErrorCode">
+ <summary>
+ 閿欒鐮�
+ 浜ゆ槗澶辫触鐨勯敊璇唬鐮�
+ 鏁版嵁闀垮害锛�20锛屾槸鍚﹀繀杈擄細N
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransactionPingAnPay.ProxyPayName">
+ <summary>
+ 浠g悊浜烘埛鍚�
+ 鐢ㄤ簬浠g悊琛屾敮浠樺姛鑳�
+ 鏁版嵁闀垮害锛�60锛屾槸鍚﹀繀杈擄細N
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransactionPingAnPay.ProxyPayAcc">
+ <summary>
+ 浠g悊浜鸿处鍙�
+ 鐢ㄤ簬浠g悊琛屾敮浠樺姛鑳�
+ 鏁版嵁闀垮害锛�30锛屾槸鍚﹀繀杈擄細N
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.ChannelWalletTransactionPingAnPay.ProxyPayBankName">
+ <summary>
+ 浠g悊浜洪摱琛屽悕绉�
+ 鐢ㄤ簬浠g悊琛屾敮浠樺姛鑳�
+ 鏁版嵁闀垮害锛�30锛屾槸鍚﹀繀杈擄細N
+ </summary>
+ </member>
<member name="T:ApiTools.Core.User">
<summary>
鐢ㄦ埛
@@ -1115,6 +1520,11 @@
娓犻亾淇℃伅
</summary>
</member>
+ <member name="F:ApiTools.Core.EnumResourceController.UserServerChannelWallet">
+ <summary>
+ 娓犻亾閽卞寘
+ </summary>
+ </member>
<member name="F:ApiTools.Core.EnumResourceController.UserServerChannelUser">
<summary>
娓犻亾鐢ㄦ埛
@@ -1400,6 +1810,121 @@
<member name="F:ApiTools.Core.EnumUserType.Operation">
<summary>
杩愯惀
+ </summary>
+ </member>
+ <member name="T:ApiTools.Core.EnumWalletAccess">
+ <summary>
+ 娓犻亾閽卞寘閫氶亾
+ </summary>
+ </member>
+ <member name="F:ApiTools.Core.EnumWalletAccess.Alipay">
+ <summary>
+ 鏀粯瀹�
+ </summary>
+ </member>
+ <member name="F:ApiTools.Core.EnumWalletAccess.PingAnPay">
+ <summary>
+ 骞冲畨閾惰
+ </summary>
+ </member>
+ <member name="F:ApiTools.Core.EnumWalletAccess.WeChatPay">
+ <summary>
+ 寰俊
+ </summary>
+ </member>
+ <member name="T:ApiTools.Core.EnumWalletSignStatus">
+ <summary>
+ 娓犻亾閽卞寘绛剧害鐘舵��
+ </summary>
+ </member>
+ <member name="F:ApiTools.Core.EnumWalletSignStatus.Wait">
+ <summary>
+ 鏈绾�
+ </summary>
+ </member>
+ <member name="F:ApiTools.Core.EnumWalletSignStatus.Apply">
+ <summary>
+ 鐢宠涓�
+ </summary>
+ </member>
+ <member name="F:ApiTools.Core.EnumWalletSignStatus.Normal">
+ <summary>
+ 宸茬绾�
+ </summary>
+ </member>
+ <member name="F:ApiTools.Core.EnumWalletSignStatus.Stop">
+ <summary>
+ 缁堟
+ </summary>
+ </member>
+ <member name="T:ApiTools.Core.EnumWalletTransactionEreceiptStatus">
+ <summary>
+ 閽卞寘浜ゆ槗鐢靛瓙鏀舵嵁鐘舵��
+ </summary>
+ </member>
+ <member name="F:ApiTools.Core.EnumWalletTransactionEreceiptStatus.INIT">
+ <summary>
+ 鍒濆鍖�
+ </summary>
+ </member>
+ <member name="F:ApiTools.Core.EnumWalletTransactionEreceiptStatus.PROCESS">
+ <summary>
+ 澶勭悊涓�
+ </summary>
+ </member>
+ <member name="F:ApiTools.Core.EnumWalletTransactionEreceiptStatus.SUCCESS">
+ <summary>
+ 鎴愬姛
+ </summary>
+ </member>
+ <member name="F:ApiTools.Core.EnumWalletTransactionEreceiptStatus.FAIL">
+ <summary>
+ 澶辫触
+ </summary>
+ </member>
+ <member name="T:ApiTools.Core.EnumWalletTransactionStatus">
+ <summary>
+ 閽卞寘浜ゆ槗鐘舵��
+ </summary>
+ </member>
+ <member name="F:ApiTools.Core.EnumWalletTransactionStatus.WaitSubmit">
+ <summary>
+ 寰呮彁浜�
+ </summary>
+ </member>
+ <member name="F:ApiTools.Core.EnumWalletTransactionStatus.WaitPay">
+ <summary>
+ 寰呮敮浠�
+ </summary>
+ </member>
+ <member name="F:ApiTools.Core.EnumWalletTransactionStatus.Dealing">
+ <summary>
+ 澶勭悊涓�
+ </summary>
+ </member>
+ <member name="F:ApiTools.Core.EnumWalletTransactionStatus.Success">
+ <summary>
+ 鎴愬姛
+ </summary>
+ </member>
+ <member name="F:ApiTools.Core.EnumWalletTransactionStatus.Refund">
+ <summary>
+ 閫�绁�
+ </summary>
+ </member>
+ <member name="F:ApiTools.Core.EnumWalletTransactionStatus.Fail">
+ <summary>
+ 澶辫触
+ </summary>
+ </member>
+ <member name="F:ApiTools.Core.EnumWalletTransactionType.Recharge">
+ <summary>
+ 鍏呭��
+ </summary>
+ </member>
+ <member name="F:ApiTools.Core.EnumWalletTransactionType.Transfer">
+ <summary>
+ 杞处
</summary>
</member>
<member name="T:ApiTools.Core.IIsDisabled">
@@ -1714,6 +2239,336 @@
</summary>
</member>
<member name="P:ApiTools.Core.GetChannelUsersQueryResultItem.Status">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="T:ApiTools.Core.SaveChannelPingAnPayWalletCommand">
+ <summary>
+ 淇濆瓨娓犻亾骞冲畨閾惰閽卞寘
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SaveChannelPingAnPayWalletCommand.OutWalletId">
+ <summary>
+ 澶栭儴閽卞寘Id
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SaveChannelPingAnPayWalletCommand.Bank">
+ <summary>
+ 鎵�灞為摱琛�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SaveChannelPingAnPayWalletCommand.BankBranch">
+ <summary>
+ 鎵�灞炴敮琛�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SaveChannelPingAnPayWalletCommand.Name">
+ <summary>
+ 鎴峰悕
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SaveChannelPingAnPayWalletCommand.Identity">
+ <summary>
+ 璐﹀彿
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SaveChannelPingAnPayWalletCommandResult.WalletId">
+ <summary>
+ 閽卞寘Id
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SaveChannelPingAnPayWalletCommandResult.Balance">
+ <summary>
+ 浣欓
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SaveChannelPingAnPayWalletCommandResult.ErrorCode">
+ <summary>
+ 閿欒浠g爜
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SaveChannelPingAnPayWalletCommandResult.FailReason">
+ <summary>
+ 杩斿洖鍏蜂綋鐨勫師鍥犮��
+ </summary>
+ </member>
+ <member name="T:ApiTools.Core.SubmitChannelWalletTransferCommand">
+ <summary>
+ 鎻愪氦娓犻亾閽卞寘杞处
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SubmitChannelWalletTransferCommand.OutWalletId">
+ <summary>
+ 澶栭儴閽卞寘Id
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SubmitChannelWalletTransferCommand.OutCode">
+ <summary>
+ 澶栭儴璁㈠崟鍙�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SubmitChannelWalletTransferCommand.OutOperatorId">
+ <summary>
+ 澶栭儴鎿嶄綔浜篒d
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SubmitChannelWalletTransferCommand.OperatorTime">
+ <summary>
+ 鎿嶄綔鏃堕棿
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SubmitChannelWalletTransferCommand.OutReceiveId">
+ <summary>
+ 澶栭儴鏀舵浜篒d
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SubmitChannelWalletTransferCommand.Amount">
+ <summary>
+ 閲戦
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SubmitChannelWalletTransferCommand.ReceiveName">
+ <summary>
+ 鏀舵浜哄鍚�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SubmitChannelWalletTransferCommand.ReceiveIdentity">
+ <summary>
+ 鏀舵浜鸿韩浠借瘉鍙�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SubmitChannelWalletTransferCommand.ReceiveAccount">
+ <summary>
+ 鏀舵璐︽埛
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SubmitChannelWalletTransferCommand.ReceiveBank">
+ <summary>
+ 鏀舵浜哄紑鎴疯
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SubmitChannelWalletTransferCommand.ReceiveBankBranch">
+ <summary>
+ 鏀舵浜烘敮琛�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SubmitChannelWalletTransferCommand.Currency">
+ <summary>
+ 甯佺
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SubmitChannelWalletTransferCommand.Purpose">
+ <summary>
+ 鐢ㄩ��
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SubmitChannelWalletTransferCommand.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SubmitChannelWalletTransferCommandResult.Id">
+ <summary>
+ 浜ゆ槗Id
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SubmitChannelWalletTransferCommandResult.Code">
+ <summary>
+ 璁㈠崟鍙�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SubmitChannelWalletTransferCommandResult.TransactionStatus">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SubmitChannelWalletTransferCommandResult.ErrorCode">
+ <summary>
+ 鏌ヨ鍒扮殑璁㈠崟鐘舵�佷负FAIL澶辫触鎴朢EFUND閫�绁ㄦ椂锛岃繑鍥為敊璇唬鐮�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SubmitChannelWalletTransferCommandResult.FailReason">
+ <summary>
+ 鏌ヨ鍒扮殑璁㈠崟鐘舵�佷负FAIL澶辫触鎴朢EFUND閫�绁ㄦ椂锛岃繑鍥炲叿浣撶殑鍘熷洜銆�
+ </summary>
+ </member>
+ <member name="T:ApiTools.Core.GetChannelWalletTransactionQuery">
+ <summary>
+ 鏌ヨ娓犻亾閽卞寘浜ゆ槗璇︽儏
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQuery.OutCode">
+ <summary>
+ 澶栭儴璁㈠崟鍙�
+ </summary>
+ </member>
+ <member name="T:ApiTools.Core.GetChannelWalletTransactionQueryResult">
+ <summary>
+ 鏌ヨ娓犻亾閽卞寘浜ゆ槗璇︽儏
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.Id">
+ <summary>
+ 浜ゆ槗Id
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.Type">
+ <summary>
+ 绫诲瀷
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.Code">
+ <summary>
+ 璁㈠崟鍙�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.OutCode">
+ <summary>
+ 澶栭儴璁㈠崟鍙�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.ConcurrencyLock">
+ <summary>
+ 骞跺彂閿�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.Amount">
+ <summary>
+ 閲戦
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.Balance">
+ <summary>
+ 浣欓
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.AfterBalance">
+ <summary>
+ 鏀舵敮鍚庝綑棰�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.OutOperatorId">
+ <summary>
+ 澶栭儴鎿嶄綔浜篒d
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.OperatorTime">
+ <summary>
+ 鎿嶄綔鏃堕棿
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.PayerAccount">
+ <summary>
+ 浠樻浜鸿处鎴�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.PayerName">
+ <summary>
+ 浠樻浜哄悕绉�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.PayerBank">
+ <summary>
+ 浠樻浜哄紑鎴疯
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.PayerBankBranch">
+ <summary>
+ 浠樻浜烘敮琛�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.OutReceiveId">
+ <summary>
+ 澶栭儴鏀舵浜篒d
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.ReceiveName">
+ <summary>
+ 鏀舵浜哄鍚�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.ReceiveIdentity">
+ <summary>
+ 鏀舵浜鸿韩浠借瘉鍙�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.ReceiveAccount">
+ <summary>
+ 鏀舵璐︽埛
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.ReceiveBank">
+ <summary>
+ 鏀舵浜哄紑鎴疯
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.ReceiveBankBranch">
+ <summary>
+ 鏀舵浜烘敮琛�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.Currency">
+ <summary>
+ 甯佺
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.Purpose">
+ <summary>
+ 鐢ㄩ��
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.ErrorCode">
+ <summary>
+ 鏌ヨ鍒扮殑璁㈠崟鐘舵�佷负FAIL澶辫触鎴朢EFUND閫�绁ㄦ椂锛岃繑鍥為敊璇唬鐮�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.FailReason">
+ <summary>
+ 鏌ヨ鍒扮殑璁㈠崟鐘舵�佷负FAIL澶辫触鎴朢EFUND閫�绁ㄦ椂锛岃繑鍥炲叿浣撶殑鍘熷洜銆�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.TransDate">
+ <summary>
+ 璁㈠崟鏀粯鏃堕棿
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.OrderFee">
+ <summary>
+ 棰勮鏀惰垂閲戦锛堝厓锛夛紝杞处鍒伴摱琛屽崱涓撶敤
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.EreceiptFileId">
+ <summary>
+ 鐢靛瓙鏀舵嵁Id
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.EreceiptDownloadUrl">
+ <summary>
+ 鐢靛瓙鏀舵嵁涓嬭浇閾炬帴
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.EreceiptDownloadOssUrl">
+ <summary>
+ 鐢靛瓙鏀舵嵁涓嬭浇閾炬帴
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.EreceiptStatus">
+ <summary>
+ 鐢靛瓙鏀舵嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.EreceiptErrorMessage">
+ <summary>
+ 鐢靛瓙鏀舵嵁閿欒淇℃伅
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.GetChannelWalletTransactionQueryResult.TransactionStatus">
<summary>
鐘舵��
</summary>
@@ -2157,6 +3012,231 @@
<summary>
绛惧悕鍚嶇О
</summary>
+ </member>
+ <member name="M:ApiTools.Core.BaseRepository`2.GetQueryable(System.Boolean)">
+ <summary>
+ 鑾峰彇鏌ヨ
+ </summary>
+ <param name="noTracking"></param>
+ <returns></returns>
+ </member>
+ <member name="M:ApiTools.Core.BaseRepository`2.GetQueryable(System.Boolean,System.Func{System.Linq.IQueryable{`0},System.Linq.IQueryable{`0}})">
+ <summary>
+ 鑾峰彇鏌ヨ
+ </summary>
+ <param name="noTracking"></param>
+ <param name="query"></param>
+ <returns></returns>
+ </member>
+ <member name="M:ApiTools.Core.BaseRepository`2.Get(System.Guid,System.Func{System.Linq.IQueryable{`0},System.Linq.IQueryable{`0}},System.Threading.CancellationToken)">
+ <summary>
+ 鑾峰彇瀹炰綋
+ </summary>
+ <param name="id"></param>
+ <param name="query"></param>
+ <param name="cancellationToken"></param>
+ <returns></returns>
+ </member>
+ <member name="M:ApiTools.Core.BaseRepository`2.Get(System.Collections.Generic.List{System.Guid},System.Func{System.Linq.IQueryable{`0},System.Linq.IQueryable{`0}},System.Threading.CancellationToken)">
+ <summary>
+ 鑾峰彇瀹炰綋
+ </summary>
+ <param name="ids"></param>
+ <param name="query"></param>
+ <param name="cancellationToken"></param>
+ <returns></returns>
+ </member>
+ <member name="M:ApiTools.Core.BaseRepository`2.GetSelect``2(ApiTools.Core.SelectQuery{``0,``1},System.Func{``1,``0},System.Func{``1,System.String},System.Func{System.Linq.IQueryable{`0},System.Linq.IQueryable{`0}},System.Threading.CancellationToken)">
+ <summary>
+ 鏌ヨ閫夋嫨鍣ㄦ暟鎹�
+ </summary>
+ <typeparam name="TValue"></typeparam>
+ <typeparam name="TData"></typeparam>
+ <param name="request"></param>
+ <param name="getValue"></param>
+ <param name="getLabel"></param>
+ <param name="query"></param>
+ <param name="cancellationToken"></param>
+ <returns></returns>
+ </member>
+ <member name="M:ApiTools.Core.BaseRepository`2.SetIsDisabled(ApiTools.Core.SetIsDisabledCommand,System.Func{System.Linq.IQueryable{`0},System.Linq.IQueryable{`0}},System.Threading.CancellationToken)">
+ <summary>
+ 璁剧疆鏄惁绂佺敤
+ </summary>
+ <param name="request"></param>
+ <param name="query"></param>
+ <param name="cancellationToken"></param>
+ <returns></returns>
+ </member>
+ <member name="M:ApiTools.Core.BaseRepository`2.DeleteData(ApiTools.Core.DeleteDataCommand,System.Func{System.Linq.IQueryable{`0},System.Linq.IQueryable{`0}},System.Threading.CancellationToken)">
+ <summary>
+ 鍒犻櫎鏁版嵁
+ </summary>
+ <param name="request"></param>
+ <param name="query"></param>
+ <param name="cancellationToken"></param>
+ <returns></returns>
+ </member>
+ <member name="M:ApiTools.Core.BaseRepository`2.UpdateData``1(System.Linq.IQueryable{`0},``0,System.Action{`0},System.Threading.CancellationToken)">
+ <summary>
+ 鏇存柊鏁版嵁
+ </summary>
+ <typeparam name="TRequest"></typeparam>
+ <param name="q"></param>
+ <param name="request"></param>
+ <param name="update"></param>
+ <param name="cancellationToken"></param>
+ <returns></returns>
+ </member>
+ <member name="M:ApiTools.Core.BaseRepository`2.SaveData``1(``0,System.Func{System.Linq.IQueryable{`0},System.Linq.IQueryable{`0}},System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}},System.Action{`0},System.Threading.CancellationToken)">
+ <summary>
+ 淇濆瓨鏁版嵁
+ </summary>
+ <typeparam name="TRequest"></typeparam>
+ <param name="request"></param>
+ <param name="query"></param>
+ <param name="checkExist"></param>
+ <param name="update"></param>
+ <param name="cancellationToken"></param>
+ <returns></returns>
+ </member>
+ <member name="T:ApiTools.Core.ChannelWalletRepository">
+ <summary>
+ 浼佷笟閽卞寘浠撳簱
+ </summary>
+ </member>
+ <member name="M:ApiTools.Core.ChannelWalletRepository.SetCode(ApiTools.Core.ChannelWallet)">
+ <summary>
+ 璁剧疆缂栧彿
+ </summary>
+ <param name="entity"></param>
+ <returns></returns>
+ </member>
+ <member name="M:ApiTools.Core.ChannelWalletTransactionRepository.SetCode(ApiTools.Core.ChannelWalletTransaction)">
+ <summary>
+ 璁剧疆缂栧彿
+ </summary>
+ <param name="entity"></param>
+ <returns></returns>
+ </member>
+ <member name="M:ApiTools.Core.ChannelPingAnPayWalletService.GetEnterpriseWalletBalance(ApiTools.Core.ChannelWallet)">
+ <summary>
+ 鏌ヨ浼佷笟閽卞寘浣欓
+ </summary>
+ <param name="wallet"></param>
+ <returns></returns>
+ </member>
+ <member name="M:ApiTools.Core.ChannelPingAnPayWalletService.Transfer(ApiTools.Core.ChannelWallet,ApiTools.Core.ChannelWalletTransaction)">
+ <summary>
+ 杞处
+ </summary>
+ <param name="wallet"></param>
+ <param name="transaction"></param>
+ <returns></returns>
+ </member>
+ <member name="M:ApiTools.Core.ChannelPingAnPayWalletService.GetTransactionDetail(ApiTools.Core.ChannelWallet,ApiTools.Core.ChannelWalletTransaction)">
+ <summary>
+ 鏌ヨ浜ゆ槗璁板綍
+ </summary>
+ <param name="wallet"></param>
+ <param name="transaction"></param>
+ <returns></returns>
+ </member>
+ <member name="M:ApiTools.Core.ChannelPingAnPayWalletService.DownloadEreceiptUrl(ApiTools.Core.ChannelWallet,ApiTools.Core.ChannelWalletTransaction)">
+ <summary>
+ 涓嬭浇鐢靛瓙鏀舵嵁
+ </summary>
+ <param name="wallet"></param>
+ <param name="transaction"></param>
+ <returns></returns>
+ </member>
+ <member name="T:ApiTools.Core.ChannelWalletService">
+ <summary>
+ 娓犻亾閽卞寘鏈嶅姟
+ </summary>
+ <param name="channelWalletRepository"></param>
+ <param name="channelPingAnPayWalletService"></param>
+ </member>
+ <member name="M:ApiTools.Core.ChannelWalletService.#ctor(ApiTools.Core.ChannelWalletRepository,ApiTools.Core.ChannelPingAnPayWalletService)">
+ <summary>
+ 娓犻亾閽卞寘鏈嶅姟
+ </summary>
+ <param name="channelWalletRepository"></param>
+ <param name="channelPingAnPayWalletService"></param>
+ </member>
+ <member name="M:ApiTools.Core.ChannelWalletService.GetEnterpriseWallet(System.String)">
+ <summary>
+ 鏌ヨ浼佷笟閽卞寘浣欓
+ </summary>
+ <param name="outWalletId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:ApiTools.Core.ChannelWalletService.GetEnterpriseWalletBalance(ApiTools.Core.ChannelWallet)">
+ <summary>
+ 鏌ヨ浼佷笟閽卞寘浣欓
+ </summary>
+ <param name="wallet"></param>
+ <returns></returns>
+ </member>
+ <member name="M:ApiTools.Core.ChannelWalletService.Transfer(ApiTools.Core.ChannelWallet,ApiTools.Core.ChannelWalletTransaction)">
+ <summary>
+ 杞处
+ </summary>
+ <param name="wallet"></param>
+ <param name="transaction"></param>
+ <returns></returns>
+ </member>
+ <member name="M:ApiTools.Core.ChannelWalletService.GetTransactionDetail(ApiTools.Core.ChannelWallet,ApiTools.Core.ChannelWalletTransaction)">
+ <summary>
+ 鏌ヨ浜ゆ槗璁板綍
+ </summary>
+ <param name="wallet"></param>
+ <param name="transaction"></param>
+ <returns></returns>
+ </member>
+ <member name="M:ApiTools.Core.ChannelWalletService.DownloadEreceiptUrl(ApiTools.Core.ChannelWallet,ApiTools.Core.ChannelWalletTransaction)">
+ <summary>
+ 涓嬭浇鐢靛瓙鏀舵嵁
+ </summary>
+ <param name="wallet"></param>
+ <param name="transaction"></param>
+ <returns></returns>
+ </member>
+ <member name="T:ApiTools.Core.IChannelWalletService">
+ <summary>
+ 娓犻亾閽卞寘鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:ApiTools.Core.IChannelWalletService.GetEnterpriseWalletBalance(ApiTools.Core.ChannelWallet)">
+ <summary>
+ 鏌ヨ娓犻亾閽卞寘浣欓
+ </summary>
+ <param name="wallet"></param>
+ <returns></returns>
+ </member>
+ <member name="M:ApiTools.Core.IChannelWalletService.Transfer(ApiTools.Core.ChannelWallet,ApiTools.Core.ChannelWalletTransaction)">
+ <summary>
+ 杞处
+ </summary>
+ <param name="wallet"></param>
+ <param name="transaction"></param>
+ <returns></returns>
+ </member>
+ <member name="M:ApiTools.Core.IChannelWalletService.GetTransactionDetail(ApiTools.Core.ChannelWallet,ApiTools.Core.ChannelWalletTransaction)">
+ <summary>
+ 鏌ヨ浜ゆ槗璁板綍
+ </summary>
+ <param name="wallet"></param>
+ <param name="transaction"></param>
+ <returns></returns>
+ </member>
+ <member name="M:ApiTools.Core.IChannelWalletService.DownloadEreceiptUrl(ApiTools.Core.ChannelWallet,ApiTools.Core.ChannelWalletTransaction)">
+ <summary>
+ 涓嬭浇鐢靛瓙鏀舵嵁
+ </summary>
+ <param name="wallet"></param>
+ <param name="transaction"></param>
+ <returns></returns>
</member>
<member name="T:ApiTools.Core.AlipayUtils">
<summary>
@@ -3858,460 +4938,6 @@
鏁版嵁闀垮害锛�30锛屾槸鍚﹀繀杈擄細N
</summary>
</member>
- <member name="T:ApiTools.Core.HistoryBalanceQueryRequest">
- <summary>
- 鍘嗗彶浣欓鏌ヨ_閾朵紒鐩磋仈
- </summary>
- </member>
- <member name="P:ApiTools.Core.HistoryBalanceQueryRequest.Account">
- <summary>
- 璐﹀彿
- </summary>
- </member>
- <member name="P:ApiTools.Core.HistoryBalanceQueryRequest.RptDate">
- <summary>
- 鍘嗗彶鏃ユ湡 yyyyMMdd闄愬埗鏌ヨ褰撳墠鏃ユ湡鐨勫墠360澶╁唴鐨�
- </summary>
- </member>
- <member name="P:ApiTools.Core.HistoryBalanceQueryRequest.Reserve">
- <summary>
- 淇濈暀鍩�
- </summary>
- </member>
- <member name="T:ApiTools.Core.HistoryBalanceQueryResponse">
- <summary>
- 鍘嗗彶浣欓鏌ヨ_閾朵紒鐩磋仈
- </summary>
- </member>
- <member name="P:ApiTools.Core.HistoryBalanceQueryResponse.AcctNo">
- <summary>
- 璐﹀彿
- 鏁版嵁闀垮害锛�20锛屾槸鍚﹀繀杈擄細Y
- </summary>
- </member>
- <member name="P:ApiTools.Core.HistoryBalanceQueryResponse.CcyCode">
- <summary>
- 甯佺
- 鏁版嵁闀垮害锛�3锛屾槸鍚﹀繀杈擄細Y
- </summary>
- </member>
- <member name="P:ApiTools.Core.HistoryBalanceQueryResponse.BeginDate">
- <summary>
- 寮�濮嬫棩鏈�
- "鑻ユ煡璇㈠綋鏃ユ槑缁嗭紝寮�濮嬨�佺粨鏉熸棩鏈熷繀椤讳负褰撳ぉ锛涜嫢鏌ヨ鍘嗗彶鏄庣粏锛屽紑濮嬨�佺粨鏉熸棩鏈熷繀椤绘槸鍘嗗彶鏃ユ湡銆�
- 鏍煎紡yyyyMMdd"
- 鏁版嵁闀垮害锛�8锛屾槸鍚﹀繀杈擄細Y
- </summary>
- </member>
- <member name="P:ApiTools.Core.HistoryBalanceQueryResponse.EndDate">
- <summary>
- 缁撴潫鏃ユ湡
- 鏍煎紡yyyyMMdd
- 鏁版嵁闀垮害锛�8锛屾槸鍚﹀繀杈擄細Y
- </summary>
- </member>
- <member name="P:ApiTools.Core.HistoryBalanceQueryResponse.PageNo">
- <summary>
- 鏌ヨ椤电爜
- 1锛氱涓�椤碉紝渚濇閫掑
- 鏁版嵁闀垮害锛�6锛屾槸鍚﹀繀杈擄細Y
- </summary>
- </member>
- <member name="P:ApiTools.Core.HistoryBalanceQueryResponse.PageSize">
- <summary>
- 姣忛〉鏄庣粏鏁伴噺
- "褰撴棩鏄庣粏榛樿姣忛〉30鏉¤褰曪紝鏀寔鏈�澶ф瘡椤�100鏉★紝鑻ヤ笂閫丳ageSize>100鏃犳晥锛岀瓑鍚�100锛�
- 鍘嗗彶鏄庣粏榛樿姣忛〉30鏉¤褰曪紝鏀寔鏈�澶ф瘡椤�1000鏉★紝鑻ヤ笂閫丳ageSize>1000鍒欐彁绀鸿緭鍏ラ敊璇紱
- 涓旀瘡娆℃煡璇㈠繀椤诲浐瀹氫负姝ゅ�硷紝鍚﹀垯鍑虹幇鏄庣粏閬楁紡"
- 鏁版嵁闀垮害锛�6锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.HistoryBalanceQueryResponse.Reserve">
- <summary>
- 棰勭暀瀛楁
- 鏁版嵁闀垮害锛�120锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.HistoryBalanceQueryResponse.OrderMode">
- <summary>
- 璁板綍鎺掑簭鏍囧織
- "001锛氭寜浜ゆ槗鏃堕棿闄嶅簭锛�
- 002锛氭寜浜ゆ槗鏃堕棿鍗囧簭锛�
- 璇存槑锛�
- 鈶� 褰撲负鍘嗗彶浜ゆ槗鏄庣粏鏌ヨ鏃讹紝榛樿鎸夌収001锛氭寜浜ゆ槗鏃堕棿闄嶅簭锛�
- 鈶� 褰撲负褰撴棩鏄庣粏鏌ヨ鏃讹紝榛樿鎸夌収002锛氭寜浜ゆ槗鏃堕棿鍗囧簭锛�
- 锛堟敞锛氬綋鏃ユ槑缁嗗湪浜ゆ槗閲忓ぇ鐨勬儏鍐典笅锛屽繀椤婚噰鐢ㄦ搴忔煡璇紝鍚﹀垯浼氬鑷翠氦鏄撻仐婕忓拰閲嶅锛�"
- 鏁版嵁闀垮害锛�3锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.HistoryBalanceQueryResponse.BankTranFlowNo">
- <summary>
- 閾惰浜ゆ槗娴佹按鍙�
- 杈撳叆鍒欐煡璇㈣繃婊ゆ寚瀹氭潯浠剁殑璁板綍
- 鏁版嵁闀垮害锛�30锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.HistoryBalanceQueryResponse.OppAcctNo">
- <summary>
- 浜ゆ槗瀵规墜璐﹀彿
- 杈撳叆鍒欐煡璇㈣繃婊ゆ寚瀹氭潯浠剁殑璁板綍
- 鏁版嵁闀垮害锛�30锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="T:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsRequest">
- <summary>
- 鏌ヨ璐︽埛褰撴棩鍘嗗彶浜ゆ槗鏄庣粏_閾朵紒鐩磋仈
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsRequest.AcctNo">
- <summary>
- 璐﹀彿
- 鏁版嵁闀垮害锛�20锛屾槸鍚﹀繀杈擄細Y
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsRequest.CcyCode">
- <summary>
- 甯佺
- 鏁版嵁闀垮害锛�3锛屾槸鍚﹀繀杈擄細Y
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsRequest.BeginDate">
- <summary>
- 寮�濮嬫棩鏈�
- "鑻ユ煡璇㈠綋鏃ユ槑缁嗭紝寮�濮嬨�佺粨鏉熸棩鏈熷繀椤讳负褰撳ぉ锛涜嫢鏌ヨ鍘嗗彶鏄庣粏锛屽紑濮嬨�佺粨鏉熸棩鏈熷繀椤绘槸鍘嗗彶鏃ユ湡銆�
- 鏍煎紡yyyyMMdd"
- 鏁版嵁闀垮害锛�8锛屾槸鍚﹀繀杈擄細Y
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsRequest.EndDate">
- <summary>
- 缁撴潫鏃ユ湡
- 鏍煎紡yyyyMMdd
- 鏁版嵁闀垮害锛�8锛屾槸鍚﹀繀杈擄細Y
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsRequest.PageNo">
- <summary>
- 鏌ヨ椤电爜
- 1锛氱涓�椤碉紝渚濇閫掑
- 鏁版嵁闀垮害锛�6锛屾槸鍚﹀繀杈擄細Y
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsRequest.PageSize">
- <summary>
- 姣忛〉鏄庣粏鏁伴噺
- "褰撴棩鏄庣粏榛樿姣忛〉30鏉¤褰曪紝鏀寔鏈�澶ф瘡椤�100鏉★紝鑻ヤ笂閫丳ageSize>100鏃犳晥锛岀瓑鍚�100锛�
- 鍘嗗彶鏄庣粏榛樿姣忛〉30鏉¤褰曪紝鏀寔鏈�澶ф瘡椤�1000鏉★紝鑻ヤ笂閫丳ageSize>1000鍒欐彁绀鸿緭鍏ラ敊璇紱
- 涓旀瘡娆℃煡璇㈠繀椤诲浐瀹氫负姝ゅ�硷紝鍚﹀垯鍑虹幇鏄庣粏閬楁紡"
- 鏁版嵁闀垮害锛�6锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsRequest.Reserve">
- <summary>
- 棰勭暀瀛楁
- 鏁版嵁闀垮害锛�120锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsRequest.OrderMode">
- <summary>
- 璁板綍鎺掑簭鏍囧織
- "001锛氭寜浜ゆ槗鏃堕棿闄嶅簭锛�
- 002锛氭寜浜ゆ槗鏃堕棿鍗囧簭锛�
- 璇存槑锛�
- 鈶� 褰撲负鍘嗗彶浜ゆ槗鏄庣粏鏌ヨ鏃讹紝榛樿鎸夌収001锛氭寜浜ゆ槗鏃堕棿闄嶅簭锛�
- 鈶� 褰撲负褰撴棩鏄庣粏鏌ヨ鏃讹紝榛樿鎸夌収002锛氭寜浜ゆ槗鏃堕棿鍗囧簭锛�
- 锛堟敞锛氬綋鏃ユ槑缁嗗湪浜ゆ槗閲忓ぇ鐨勬儏鍐典笅锛屽繀椤婚噰鐢ㄦ搴忔煡璇紝鍚﹀垯浼氬鑷翠氦鏄撻仐婕忓拰閲嶅锛�"
- 鏁版嵁闀垮害锛�3锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsRequest.BankTranFlowNo">
- <summary>
- 閾惰浜ゆ槗娴佹按鍙�
- 杈撳叆鍒欐煡璇㈣繃婊ゆ寚瀹氭潯浠剁殑璁板綍
- 鏁版嵁闀垮害锛�30锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsRequest.OppAcctNo">
- <summary>
- 浜ゆ槗瀵规墜璐﹀彿
- 杈撳叆鍒欐煡璇㈣繃婊ゆ寚瀹氭潯浠剁殑璁板綍
- 鏁版嵁闀垮害锛�30锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="T:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponse">
- <summary>
- 鏌ヨ璐︽埛褰撴棩鍘嗗彶浜ゆ槗鏄庣粏_閾朵紒鐩磋仈
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponse.AcctNo">
- <summary>
- 璐﹀彿
- 鏁版嵁闀垮害锛�20锛屾槸鍚﹀繀杈擄細Y
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponse.CcyCode">
- <summary>
- 璐у竵绫诲瀷
- 鏁版嵁闀垮害锛�3锛屾槸鍚﹀繀杈擄細Y
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponse.EndFlag">
- <summary>
- 鏁版嵁缁撴潫鏍囧織
- "鈥淵鈥�---琛ㄧず鏌ヨ缁撴灉宸插叏閮ㄨ緭鍑哄畬姣曪紱
- 鈥淣鈥�---琛ㄧず鏌ヨ缁撴灉鍙緭鍑轰竴閮ㄥ垎锛屽悗缁儴鍒嗘湁寰呰姹傝緭鍑猴紱"
- 鏁版嵁闀垮害锛�1锛屾槸鍚﹀繀杈擄細Y
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponse.Reserve">
- <summary>
- 棰勭暀瀛楁
- 鏁版嵁闀垮害锛�120锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponse.PageNo">
- <summary>
- 鏌ヨ椤电爜
- 鍚屼笂閫�
- 鏁版嵁闀垮害锛�6锛屾槸鍚﹀繀杈擄細Y
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponse.PageRecCount">
- <summary>
- 璁板綍绗旀暟
- 鏈杩斿洖鐨勭瑪鏁�
- 鏁版嵁闀垮害锛�2锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="T:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem">
- <summary>
- 鏌ヨ璐︽埛褰撴棩鍘嗗彶浜ゆ槗鏄庣粏_閾朵紒鐩磋仈
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.AcctDate">
- <summary>
- 涓绘満璁拌处鏃ユ湡
- 璁拌处鏃ユ湡
- 鏁版嵁闀垮害锛�8锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.TxTime">
- <summary>
- 浜ゆ槗鏃堕棿
- 鏁版嵁闀垮害锛�6锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.HostTrace">
- <summary>
- 涓绘満娴佹按鍙�
- 閾惰璁拌处娴佹按鍙�
- 鏁版嵁闀垮害锛�32锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.BussSeqNo">
- <summary>
- 涓氬姟娴佹按鍙�
- 閾惰涓氬姟娴佹按鍙�
- 鏁版嵁闀垮害锛�32锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.DetailSerialNo">
- <summary>
- 鏄庣粏搴忓彿
- 鏄庣粏搴忓彿锛屽師鏉ュ拰鏍稿績姘村彿涓�璧峰尯鍒嗕氦鏄撳敮涓�鎬�
- 鏁版嵁闀垮害锛�19锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.OutNode">
- <summary>
- 浠樻鏂圭綉鐐瑰彿
- 鏁版嵁闀垮害锛�9锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.OutBankNo">
- <summary>
- 浠樻鏂硅仈琛屽彿
- 鏁版嵁闀垮害锛�16锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.OutBankName">
- <summary>
- 浠樻琛屽悕绉�
- 鏁版嵁闀垮害锛�120锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.OutAcctNo">
- <summary>
- 浠樻鏂硅处鍙�
- 鏁版嵁闀垮害锛�32锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.OutAcctName">
- <summary>
- 浠樻鏂规埛鍚�
- 鏁版嵁闀垮害锛�120锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.CcyCode">
- <summary>
- 缁撶畻甯佺
- 鏁版嵁闀垮害锛�3锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.TranAmount">
- <summary>
- 浜ゆ槗閲戦
- 鏁版嵁闀垮害锛�15锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.InNode">
- <summary>
- 鏀舵鏂圭綉鐐瑰彿
- 鏁版嵁闀垮害锛�9锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.InBankNo">
- <summary>
- 鏀舵鏂硅仈琛屽彿
- 鏁版嵁闀垮害锛�16锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.InBankName">
- <summary>
- 鏀舵鏂硅鍚�
- 鏁版嵁闀垮害锛�120锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.InAcctNo">
- <summary>
- 鏀舵鏂硅处鍙�
- 鏁版嵁闀垮害锛�32锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.InAcctName">
- <summary>
- 鏀舵鏂规埛鍚�
- 鏁版嵁闀垮害锛�120锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.DcFlag">
- <summary>
- 鍊熻捶鏍囧織
- D 鍊燂紱C 璐�
- 鏁版嵁闀垮害锛�1锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.AbstractStr">
- <summary>
- 鎽樿锛屾湭缈昏瘧鐨勬憳瑕侊紝濡俆RS
- 鏁版嵁闀垮害锛�120锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.VoucherNo">
- <summary>
- 鍑瘉鍙�
- 绌�
- 鏁版嵁闀垮害锛�20锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.TranFee">
- <summary>
- 鎵嬬画璐�
- 鏁版嵁闀垮害锛�15锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.PostFee">
- <summary>
- 閭數璐�
- 鏁版嵁闀垮害锛�15锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.AcctBalance">
- <summary>
- 璐﹂潰浣欓
- 鏁版嵁闀垮害锛�15锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.Purpose">
- <summary>
- 鐢ㄩ�旓紝闄勮█
- 瀹㈡埛杞处涓婇�佺殑璧勯噾鐢ㄩ�斻��
- 鏁版嵁闀垮害锛�300锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.AbstractStr_Desc">
- <summary>
- 涓枃鎽樿锛孉bstractStr鐨勪腑鏂囩炕璇�
- 鏁版嵁闀垮害锛�100锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.ProxyPayName">
- <summary>
- 浠g悊浜烘埛鍚�
- 鐢ㄤ簬浠g悊琛屾敮浠樺姛鑳�
- 鏁版嵁闀垮害锛�100锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.ProxyPayAcc">
- <summary>
- 浠g悊浜鸿处鍙�
- 鐢ㄤ簬浠g悊琛屾敮浠樺姛鑳�
- 鏁版嵁闀垮害锛�100锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.ProxyPayBankName">
- <summary>
- 浠g悊浜洪摱琛屽悕绉�
- 鐢ㄤ簬浠g悊琛屾敮浠樺姛鑳�
- 鏁版嵁闀垮害锛�100锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.HostDate">
- <summary>
- 涓绘満鏃ユ湡
- 浜ゆ槗鑷劧鏃ユ湡
- 鏁版嵁闀垮害锛�8锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.TranSeqNo">
- <summary>
- 浜ゆ槗娴佹按鍙�
- 鏁版嵁闀垮害锛�32锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.Remark1">
- <summary>
- 澶囨敞1
- 鏁版嵁闀垮害锛�300锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.Remark2">
- <summary>
- 澶囨敞2
- 鏁版嵁闀垮害锛�300锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.BeReverseFlag">
- <summary>
- 琚啿姝f爣蹇�
- "0--鏃犲叧锛�
- 1--琚啿姝o紱
- 2--鍐叉"
- 鏁版嵁闀垮害锛�2锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.SeqTime">
- <summary>
- 鏃跺簭鏃堕棿
- 鏁版嵁闀垮害锛�30锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
- <member name="P:ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsResponseItem.FeeCode">
- <summary>
- 璐圭敤浠g爜
- 鏁版嵁闀垮害锛�20锛屾槸鍚﹀繀杈擄細N
- </summary>
- </member>
<member name="T:ApiTools.Core.InquiryAccountStopPaymentDetailsRequest">
<summary>
璐︽埛姝粯璇︽儏鏌ヨ_閾朵紒鐩磋仈 瀵瑰叕璐︽埛灞傜殑鍐荤粨/姝粯璇︽儏鏌ヨ锛屾瘡椤垫渶澶�100鏉°��
@@ -4798,456 +5424,6 @@
浜ゆ槗鐘舵�佹爣蹇� 20锛氫氦鏄撴垚鍔� 30锛氬け璐ワ紱鍏朵粬涓洪摱琛屽彈鐞嗘垚鍔熷鐞嗕腑锛岃浣跨敤鈥滀氦鏄撹繘搴︽煡璇�4005鈥濇帴鍙h幏鍙栨渶缁堢姸鎬�
</summary>
</member>
- <member name="T:ApiTools.Core.SingleDataQueryRequest">
- <summary>
- 鍥炲崟鏁版嵁鏌ヨ_閾朵紒鐩磋仈
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryRequest.AcctNo">
- <summary>
- 璐﹀彿
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryRequest.ReceiptType">
- <summary>
- 鍥炲崟绫诲瀷 鍙傜収鍥炲崟绫诲瀷 娉細鏌ュ叏閮ㄥ彲閫佲�淎LL鈥�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryRequest.SubType">
- <summary>
- 瀛愮被鍨� 鍙傜収鍥炲崟绫诲瀷 娉細鏌ュ叏閮ㄥ彲閫佲�淎LL鈥�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryRequest.StartDate">
- <summary>
- 璧峰鏃ユ湡 鏍煎紡yyyyMMdd锛堣璐︽棩鏈燂級
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryRequest.EndDate">
- <summary>
- 缁撴潫鏃ユ湡 鏍煎紡yyyyMMdd锛堣璐︽棩鏈燂級
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryRequest.StartRecord">
- <summary>
- 璧峰璁板綍鏁� 璧峰鍊间负1锛屼笉鑳介��0
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryRequest.RecordNum">
- <summary>
- 鏈壒璁板綍鏁�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryRequest.StartAmt">
- <summary>
- 寮�濮嬮噾棰� 锛堜氦鏄撻噾棰濓級double(20,4)
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryRequest.EntAmt">
- <summary>
- 缁撴潫閲戦 锛堜氦鏄撻噾棰濓級double(20,5)
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryRequest.OrderMode">
- <summary>
- 鎺掑簭鏂瑰紡 001锛氫氦鏄撴椂闂翠粠杩戝埌杩�
- 002锛氫氦鏄撴椂闂翠粠杩滃埌杩�
- 003锛氶噾棰濆崌搴忥紙浠庡皬鍒板ぇ锛�
- 004锛氶噾棰濋檷搴忥紙浠庡ぇ鍒板皬锛�
- 005锛氬洖鍗曞彿鍗囧簭
- 006锛氬洖鍗曞彿闄嶅簭
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryRequest.PayeeAcctNo">
- <summary>
- 鏀舵浜鸿处鍙�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryRequest.PayeeName">
- <summary>
- 鏀舵浜哄悕绉�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryRequest.DrCrFlag">
- <summary>
- 鍊熻捶鏍囧織 D锛氬�熸柟浜ゆ槗 C锛氳捶鏂逛氦鏄�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryRequest.Ccy">
- <summary>
- 甯佺
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryRequest.SerialNo">
- <summary>
- 椤哄簭鍙�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryRequest.PrintBranchId">
- <summary>
- 鎵撳嵃缃戠偣 浠g爜閲岄潰娌℃湁
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryRequest.ReceiptNo">
- <summary>
- 鍥炲崟鍙�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryRequest.PrintFlag">
- <summary>
- 鎵撳嵃鏍囧織 0锛氶娆℃墦鍗� 1锛氳ˉ鎵�
- </summary>
- </member>
- <member name="T:ApiTools.Core.SingleDataQueryResponse">
- <summary>
- 鍥炲崟鏁版嵁鏌ヨ_閾朵紒鐩磋仈
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponse.RecordTotalCount">
- <summary>
- 璁板綍鎬绘暟
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponse.StartRecord">
- <summary>
- 璧峰璁板綍鏁�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponse.ResultNum">
- <summary>
- 鏈杩斿洖璁板綍鏁�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponse.EndFlag">
- <summary>
- 缁撴潫鏍囧織 Y:鏃犲墿浣欒褰� N:鏈夊墿浣欒褰�
- </summary>
- </member>
- <member name="T:ApiTools.Core.SingleDataQueryResponseItem">
- <summary>
- 鍥炲崟鏁版嵁鏌ヨ_閾朵紒鐩磋仈
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.ReceiptNo">
- <summary>
- 鍥炲崟鍙�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.CheckCode">
- <summary>
- 楠岃瘉鐮�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.ReceiptType">
- <summary>
- 鍥炲崟绫诲瀷
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.SubType">
- <summary>
- 鍥炲崟瀛愮被
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.BookingDate">
- <summary>
- 璁拌处鏃ユ湡
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.PayerName">
- <summary>
- 浠樻浜哄悕绉�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.PayeeName">
- <summary>
- 鏀舵浜哄悕绉�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.PayerAccNo">
- <summary>
- 浠樻浜鸿处鍙�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.PayeeAccNo">
- <summary>
- 鏀舵浜鸿处鍙�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.PayerAcctOpenBranchID">
- <summary>
- 浠樻浜哄紑鎴疯
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.PayeeAcctOpenBranchID">
- <summary>
- 鏀舵浜哄紑鎴疯
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.PayerAcctOpenBranchName">
- <summary>
- 浠樻浜哄紑鎴疯鍚嶇О
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.PayeeAcctOpenBranchName">
- <summary>
- 鏀舵浜哄紑鎴疯鍚嶇О
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.MainAcctNo">
- <summary>
- 涓昏处鍙�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.SubAcctNo">
- <summary>
- 瀛愯处鍙�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.OldAcctNo">
- <summary>
- 鍘熻处鍙�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.Ccy">
- <summary>
- 甯佺
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.TranAmt">
- <summary>
- 浜ゆ槗閲戦
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.SubBranchID">
- <summary>
- 缃戠偣鍙�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.DrCrFlag">
- <summary>
- 鍊熻捶鏍囧織
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.Crpp">
- <summary>
- 璧勯噾鐢ㄩ��
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.Corpus">
- <summary>
- 鏈噾
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.DepositIntRate">
- <summary>
- 瀛樻鍒╃巼
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.DepositReceiptNo">
- <summary>
- 瀛樺崟鍙�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.StartPeriod">
- <summary>
- 璧峰鏈�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.EndPeriod">
- <summary>
- 缁撴潫鏈�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.InterestTax">
- <summary>
- 鍒╂伅绋�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.IntInterest">
- <summary>
- 鍒╂伅
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.OverdraftInterest">
- <summary>
- 閫忔敮鍒╂伅
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.TaxRate">
- <summary>
- 绋庣巼
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.LoanAcctNo">
- <summary>
- 璐锋璐﹀彿
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.DuebillNo">
- <summary>
- 鍊熸嵁鍙�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.PaidAmt">
- <summary>
- 杩樻閲戦
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.RepayCorpus">
- <summary>
- 杩樻鏈噾
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.ReplyInterest">
- <summary>
- 杩樻鍒╂伅
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.ComInterest">
- <summary>
- 澶嶅埄
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.CorpusBalance">
- <summary>
- 鏈噾浣欓
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.DueRepayCorpus">
- <summary>
- 搴旇繕鏈噾
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.RepayCount">
- <summary>
- 杩樻鏈熸暟
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.Commission">
- <summary>
- 鎵嬬画璐归噾棰�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.MaterialFee">
- <summary>
- 宸ユ湰璐�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.TaxedInterest">
- <summary>
- 绋庡悗鍒╂伅
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.HostSeqNo">
- <summary>
- 涓绘満娴佹按鍙�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.LoanIntRate">
- <summary>
- 璐锋鍒╃巼
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.ReceivableInterest">
- <summary>
- 搴旀敹鍒╂伅
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.TellerNo">
- <summary>
- 鏌滃憳鍙�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.AuthTellerNo">
- <summary>
- 鎺堟潈鏌滃憳鍙�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.PrintClientName">
- <summary>
- 鎵撳嵃瀹㈡埛绔悕绉�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.PrintTime">
- <summary>
- 鎵撳嵃鏃堕棿
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.PrintTimes">
- <summary>
- 鎵撳嵃娆℃暟
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.RegionNo">
- <summary>
- 鍦板尯鍙�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.TermNo">
- <summary>
- 缁堢鍙�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.PrintNote">
- <summary>
- 鎵撳嵃鑺傜偣
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.BussType">
- <summary>
- 涓氬姟绫诲瀷
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.IntSettleAcctNo">
- <summary>
- 缁撴伅璐﹀彿
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.AcctOpenBranchID">
- <summary>
- 璐︽埛寮�鎴疯琛屽彿
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.TranDate">
- <summary>
- 浜ゆ槗鏃ユ湡
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.TranTime">
- <summary>
- 浜ゆ槗鏃堕棿
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.BranchId">
- <summary>
- 鏈烘瀯鍙�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.SerialNo">
- <summary>
- 椤哄簭鍙�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.RecordType">
- <summary>
- 璁板綍绫诲瀷
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.FrontEndCode">
- <summary>
- 鍓嶇疆鏈轰唬鐮�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.RemarkCode">
- <summary>
- 鎽樿鐮�
- </summary>
- </member>
- <member name="P:ApiTools.Core.SingleDataQueryResponseItem.Summary">
- <summary>
- 鎽樿
- </summary>
- </member>
<member name="T:ApiTools.Core.SingleOrBatchReceiptPDFMergeDownloadNewRequest">
<summary>
鍗曠瑪鎴栧绗斿洖鍗昉DF鍚堝苟涓嬭浇锛堟柊锛塤閾朵紒鐩磋仈
@@ -5398,20 +5574,6 @@
<param name="request"></param>
<returns></returns>
</member>
- <member name="M:ApiTools.Core.PingAnPayUtils.HistoryBalanceQuery(ApiTools.Core.HistoryBalanceQueryRequest)">
- <summary>
- 鍘嗗彶浣欓鏌ヨ_閾朵紒鐩磋仈
- </summary>
- <param name="request"></param>
- <returns></returns>
- </member>
- <member name="M:ApiTools.Core.PingAnPayUtils.InquiryAccountDayHistoryTransactionDetails(ApiTools.Core.InquiryAccountDayHistoryTransactionDetailsRequest)">
- <summary>
- 鏌ヨ璐︽埛褰撴棩鍘嗗彶浜ゆ槗鏄庣粏_閾朵紒鐩磋仈
- </summary>
- <param name="request"></param>
- <returns></returns>
- </member>
<member name="M:ApiTools.Core.PingAnPayUtils.StopPaymentAndSettlementAccounts(ApiTools.Core.StopPaymentAndSettlementAccountsRequest)">
<summary>
璐︽埛姝粯鍜岃В姝粯_閾朵紒鐩磋仈 瀵瑰叕璐︽埛灞傜殑姝粯銆佽В闄ゆ浠�
@@ -5436,13 +5598,6 @@
<member name="M:ApiTools.Core.PingAnPayUtils.CorSingleTransferQuery(ApiTools.Core.CorSingleTransferQueryRequest)">
<summary>
鍗曠瑪杞处鎸囦护鏌ヨ_閾朵紒鐩磋仈
- </summary>
- <param name="request"></param>
- <returns></returns>
- </member>
- <member name="M:ApiTools.Core.PingAnPayUtils.SingleDataQuery(ApiTools.Core.SingleDataQueryRequest)">
- <summary>
- 褰撴棩鍘嗗彶鍥炲崟鏁版嵁鏌ヨ鎺ュ彛_閾朵紒鐩磋仈
</summary>
<param name="request"></param>
<returns></returns>
diff --git a/ApiTools.Core/Entities/Users/ChannelWallet.cs b/ApiTools.Core/Entities/Users/ChannelWallet.cs
new file mode 100644
index 0000000..c591694
--- /dev/null
+++ b/ApiTools.Core/Entities/Users/ChannelWallet.cs
@@ -0,0 +1,81 @@
+锘縰sing Furion.DatabaseAccessor;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ApiTools.Core
+{
+ /// <summary>
+ /// 娓犻亾閽卞寘
+ /// </summary>
+ public class ChannelWallet : CommonEntity<MasterDbContextLocator>
+ {
+ /// <summary>
+ /// 娓犻亾Id
+ /// </summary>
+ public Guid? ChannelId { get; set; }
+
+ /// <summary>
+ /// 娓犻亾
+ /// </summary>
+ public Channel Channel { get; set; }
+
+ /// <summary>
+ /// 澶栭儴閽卞寘Id
+ /// </summary>
+ public string OutWalletId { get; set; }
+
+ /// <summary>
+ /// 閫氶亾
+ /// </summary>
+ public EnumWalletAccess Access { get; set; }
+
+ /// <summary>
+ /// 缂栧彿
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鎵�灞為摱琛�
+ /// </summary>
+ public string Bank { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炴敮琛�
+ /// </summary>
+ public string BankBranch { get; set; }
+
+ /// <summary>
+ /// 鎴峰悕
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 璐﹀彿
+ /// </summary>
+ public string Identity { get; set; }
+
+ /// <summary>
+ /// 浣欓
+ /// </summary>
+ public decimal Balance { get; set; }
+
+ /// <summary>
+ /// 绛剧害鐘舵��
+ /// </summary>
+ public EnumWalletSignStatus SignStatus { get; set; }
+
+ /// <summary>
+ /// 閿欒浠g爜
+ /// </summary>
+ public string ErrorCode { get; set; }
+
+ /// <summary>
+ /// 杩斿洖鍏蜂綋鐨勫師鍥犮��
+ /// </summary>
+ public string FailReason { get; set; }
+
+ }
+}
diff --git a/ApiTools.Core/Entities/Users/ChannelWalletTransaction.cs b/ApiTools.Core/Entities/Users/ChannelWalletTransaction.cs
new file mode 100644
index 0000000..1ad65fa
--- /dev/null
+++ b/ApiTools.Core/Entities/Users/ChannelWalletTransaction.cs
@@ -0,0 +1,204 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ApiTools.Core
+{
+ /// <summary>
+ /// 娓犻亾閽卞寘浜ゆ槗
+ /// </summary>
+ public class ChannelWalletTransaction : CommonEntity<MasterDbContextLocator>, IEntityTypeBuilder<ChannelWalletTransaction>
+ {
+ /// <summary>
+ /// 閽卞寘Id
+ /// </summary>
+ public Guid WalletId { get; set; }
+
+ /// <summary>
+ /// 閽卞寘
+ /// </summary>
+ public ChannelWallet Wallet { get; set; }
+
+ /// <summary>
+ /// 骞冲畨淇℃伅
+ /// </summary>
+ public ChannelWalletTransactionPingAnPay PingAnPay { get; set; }
+
+ /// <summary>
+ /// 绫诲瀷
+ /// </summary>
+ public EnumWalletTransactionType Type { get; set; }
+
+ /// <summary>
+ /// 璁㈠崟鍙�
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 澶栭儴璁㈠崟鍙�
+ /// </summary>
+ public string OutCode { get; set; }
+
+ /// <summary>
+ /// 骞跺彂閿�
+ /// </summary>
+ public string ConcurrencyLock { get; set; }
+
+ /// <summary>
+ /// 閲戦
+ /// </summary>
+ public decimal Amount { get; set; }
+
+ /// <summary>
+ /// 浣欓
+ /// </summary>
+ public decimal Balance { get; set; }
+
+ /// <summary>
+ /// 鏀舵敮鍚庝綑棰�
+ /// </summary>
+ public decimal AfterBalance { get; set; }
+
+ /// <summary>
+ /// 澶栭儴鎿嶄綔浜篒d
+ /// </summary>
+ public string OutOperatorId { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔鏃堕棿
+ /// </summary>
+ public DateTime? OperatorTime { get; set; }
+
+ /// <summary>
+ /// 浠樻浜鸿处鎴�
+ /// </summary>
+ public string PayerAccount { get; set; }
+
+ /// <summary>
+ /// 浠樻浜哄悕绉�
+ /// </summary>
+ public string PayerName { get; set; }
+
+ /// <summary>
+ /// 浠樻浜哄紑鎴疯
+ /// </summary>
+ public string PayerBank { get; set; }
+
+ /// <summary>
+ /// 浠樻浜烘敮琛�
+ /// </summary>
+ public string PayerBankBranch { get; set; }
+
+ /// <summary>
+ /// 澶栭儴鏀舵浜篒d
+ /// </summary>
+ public string OutReceiveId { get; set; }
+
+ /// <summary>
+ /// 鏀舵浜哄鍚�
+ /// </summary>
+ public string ReceiveName { get; set; }
+
+ /// <summary>
+ /// 鏀舵浜鸿韩浠借瘉鍙�
+ /// </summary>
+ public string ReceiveIdentity { get; set; }
+
+ /// <summary>
+ /// 鏀舵璐︽埛
+ /// </summary>
+ public string ReceiveAccount { get; set; }
+
+ /// <summary>
+ /// 鏀舵浜哄紑鎴疯
+ /// </summary>
+ public string ReceiveBank { get; set; }
+
+ /// <summary>
+ /// 鏀舵浜烘敮琛�
+ /// </summary>
+ public string ReceiveBankBranch { get; set; }
+
+ /// <summary>
+ /// 甯佺
+ /// </summary>
+ public string Currency { get; set; }
+
+ /// <summary>
+ /// 鐢ㄩ��
+ /// </summary>
+ public string Purpose { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鏌ヨ鍒扮殑璁㈠崟鐘舵�佷负FAIL澶辫触鎴朢EFUND閫�绁ㄦ椂锛岃繑鍥為敊璇唬鐮�
+ /// </summary>
+ public string ErrorCode { get; set; }
+
+ /// <summary>
+ /// 鏌ヨ鍒扮殑璁㈠崟鐘舵�佷负FAIL澶辫触鎴朢EFUND閫�绁ㄦ椂锛岃繑鍥炲叿浣撶殑鍘熷洜銆�
+ /// </summary>
+ public string FailReason { get; set; }
+
+ /// <summary>
+ /// 璁㈠崟鏀粯鏃堕棿
+ /// </summary>
+ public DateTime? TransDate { get; set; }
+
+ /// <summary>
+ /// 棰勮鏀惰垂閲戦锛堝厓锛夛紝杞处鍒伴摱琛屽崱涓撶敤
+ /// </summary>
+ public decimal? OrderFee { get; set; }
+
+ /// <summary>
+ /// 鐢靛瓙鏀舵嵁Id
+ /// </summary>
+ public string EreceiptFileId { get; set; }
+
+ /// <summary>
+ /// 鐢靛瓙鏀舵嵁涓嬭浇閾炬帴
+ /// </summary>
+ public string EreceiptDownloadUrl { get; set; }
+
+ /// <summary>
+ /// 鐢靛瓙鏀舵嵁涓嬭浇閾炬帴
+ /// </summary>
+ public string EreceiptDownloadOssUrl { get; set; }
+
+ /// <summary>
+ /// 鐢靛瓙鏀舵嵁鐘舵��
+ /// </summary>
+ public EnumWalletTransactionEreceiptStatus? EreceiptStatus { get; set; }
+
+ /// <summary>
+ /// 鐢靛瓙鏀舵嵁閿欒淇℃伅
+ /// </summary>
+ public string EreceiptErrorMessage { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public EnumWalletTransactionStatus TransactionStatus { get; set; }
+
+ public void Configure(EntityTypeBuilder<ChannelWalletTransaction> entityBuilder, DbContext dbContext, Type dbContextLocator)
+ {
+ entityBuilder
+ .HasOne(it => it.PingAnPay)
+ .WithOne(it => it.Transaction)
+ .HasForeignKey<ChannelWalletTransactionPingAnPay>(it => it.Id);
+
+ entityBuilder
+ .HasIndex(it => it.ConcurrencyLock)
+ .IsUnique();
+ }
+ }
+}
diff --git a/ApiTools.Core/Entities/Users/ChannelWalletTransactionPingAnPay.cs b/ApiTools.Core/Entities/Users/ChannelWalletTransactionPingAnPay.cs
new file mode 100644
index 0000000..119e60d
--- /dev/null
+++ b/ApiTools.Core/Entities/Users/ChannelWalletTransactionPingAnPay.cs
@@ -0,0 +1,165 @@
+锘縰sing Furion.DatabaseAccessor;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ApiTools.Core
+{
+ /// <summary>
+ /// 娓犻亾閽卞寘浜ゆ槗璁板綍骞冲畨鏀粯淇℃伅
+ /// </summary>
+ public class ChannelWalletTransactionPingAnPay : CommonEntity<MasterDbContextLocator>
+ {
+ /// <summary>
+ /// 浜ゆ槗
+ /// </summary>
+ public ChannelWalletTransaction Transaction { get; set; }
+
+ /// <summary>
+ /// 姝粯缂栧彿 鏈夋晥鐘舵�佺殑骞冲畨鏄撴浠樼紪鍙凤紝浠嶫GF001姝粯鍚庤繑鍥炵殑
+ /// </summary>
+ public string FreezeNo { get; set; }
+
+ /// <summary>
+ /// 姝粯鐘舵�佺爜
+ /// </summary>
+ public string StopStt { get; set; }
+
+ /// <summary>
+ /// 姝粯澶辫触鍘熷洜
+ /// </summary>
+ public string StopFailReason { get; set; }
+
+ /// <summary>
+ /// 瑙i櫎姝粯鐘舵�佺爜
+ /// </summary>
+ public string RemoveStopStt { get; set; }
+
+ /// <summary>
+ /// 瑙i櫎姝粯澶辫触鍘熷洜
+ /// </summary>
+ public string RemoveStopFailReason { get; set; }
+
+ /// <summary>
+ /// 杞处鍑瘉鍙�
+ /// </summary>
+ public string ThirdVoucher { get; set; }
+
+ /// <summary>
+ /// 閾惰娴佹按鍙� 閾惰涓氬姟娴佹按鍙凤紱鍙互鐢ㄤ簬瀵硅处
+ /// </summary>
+ public string FrontLogNo { get; set; }
+
+ /// <summary>
+ /// 瀹㈡埛鑷畾涔夊嚟璇佸彿 鐢ㄤ簬瀹㈡埛杞处鐧昏鍜屽唴閮ㄨ瘑鍒紝閫氳繃杞处缁撴灉鏌ヨ鍙互杩斿洖銆傞摱琛屼笉妫�鏌ュ敮涓�鎬�
+ /// </summary>
+ public string CstInnerFlowNo { get; set; }
+
+ /// <summary>
+ /// 杞处閫�绁ㄦ爣蹇�
+ /// "0:鏈��绁�; 榛樿涓�0
+ /// 1:閫�绁�;"
+ /// 鏁版嵁闀垮害锛�1锛屾槸鍚﹀繀杈擄細N
+ /// </summary>
+ public string IsBack { get; set; }
+
+ /// <summary>
+ /// 鏀粯澶辫触鎴栭��绁ㄥ師鍥犳弿杩�
+ /// "濡傛灉鏄秴绾х綉閾跺垯杩斿洖濡備笅淇℃伅:
+ /// RJ01瀵规柟杩斿洖锛氳处鍙蜂笉瀛樺湪
+ /// RJ02瀵规柟杩斿洖锛氳处鍙枫�佹埛鍚嶄笉绗�
+ /// 澶у皬棰濇敮浠樺垯杩斿洖澶辫触鎻忚堪"
+ /// 鏁版嵁闀垮害锛�20锛屾槸鍚﹀繀杈擄細N
+ /// </summary>
+ public string BackRem { get; set; }
+
+ /// <summary>
+ /// 閾惰澶勭悊缁撴灉
+ /// "鏍煎紡涓猴細鈥滃叚浣嶄唬鐮�:涓枃鎻忚堪鈥濄�傚啋鍙蜂负鍗婅銆傚锛�000000锛氳浆璐︽垚鍔�
+ /// 澶勭悊涓殑杩斿洖(浠ュ涓嬭繑鍥炲紑澶�)锛�
+ /// MA9111:浜ゆ槗姝e湪鍙楃悊涓�
+ /// 000000:浜ゆ槗鍙楃悊鎴愬姛寰呭鐞�
+ /// 000000:浜ゆ槗澶勭悊涓�
+ /// 000000:浜ゆ槗鍙楃悊鎴愬姛澶勭悊涓�
+ /// 鎴愬姛鐨勮繑鍥烇細
+ /// 000000:杞处浜ゆ槗鎴愬姛
+ /// 鍏朵粬鐨勮繑鍥為兘涓哄け璐�:
+ /// MA9112:杞处澶辫触"
+ /// 鏁版嵁闀垮害锛�40锛屾槸鍚﹀繀杈擄細Y
+ /// </summary>
+ public string Yhcljg { get; set; }
+
+ /// <summary>
+ /// 杞处鍔犳�ユ爣蹇�
+ /// Y锛氬姞鎬� N锛氭櫘閫歋锛氱壒鎬�
+ /// 鏁版嵁闀垮害锛�1锛屾槸鍚﹀繀杈擄細Y
+ /// </summary>
+ public string SysFlag { get; set; }
+
+ /// <summary>
+ /// 杞处鎵嬬画璐�
+ /// 鏁版嵁闀垮害锛�13锛屾槸鍚﹀繀杈擄細Y
+ /// </summary>
+ public string Fee { get; set; }
+
+ /// <summary>
+ /// 杞处浠g爜绫诲瀷
+ /// "4004锛氬崟绗旇浆璐︼紱
+ /// 4014锛氬崟绗旀壒閲忥紱
+ /// 4034锛氭眹鎬绘壒閲�"
+ /// 鏁版嵁闀垮害锛�4锛屾槸鍚﹀繀杈擄細Y
+ /// </summary>
+ public string TransBsn { get; set; }
+
+ /// <summary>
+ /// 浜ゆ槗鍙楃悊鏃堕棿
+ /// 浜ゆ槗鍙楃悊鏃堕棿
+ /// 鏁版嵁闀垮害锛�14锛屾槸鍚﹀繀杈擄細N
+ /// </summary>
+ public string SubmitTime { get; set; }
+
+ /// <summary>
+ /// 璁拌处鏃ユ湡
+ /// 涓绘満璁拌处鏃ユ湡
+ /// 鏁版嵁闀垮害锛�8锛屾槸鍚﹀繀杈擄細N
+ /// </summary>
+ public string AccountDate { get; set; }
+
+ /// <summary>
+ /// 涓绘満璁拌处娴佹按鍙�
+ /// 涓绘満璁拌处娴佹按
+ /// 鏁版嵁闀垮害锛�32锛屾槸鍚﹀繀杈擄細N
+ /// </summary>
+ public string HostFlowNo { get; set; }
+
+ /// <summary>
+ /// 閿欒鐮�
+ /// 浜ゆ槗澶辫触鐨勯敊璇唬鐮�
+ /// 鏁版嵁闀垮害锛�20锛屾槸鍚﹀繀杈擄細N
+ /// </summary>
+ public string HostErrorCode { get; set; }
+
+ /// <summary>
+ /// 浠g悊浜烘埛鍚�
+ /// 鐢ㄤ簬浠g悊琛屾敮浠樺姛鑳�
+ /// 鏁版嵁闀垮害锛�60锛屾槸鍚﹀繀杈擄細N
+ /// </summary>
+ public string ProxyPayName { get; set; }
+
+ /// <summary>
+ /// 浠g悊浜鸿处鍙�
+ /// 鐢ㄤ簬浠g悊琛屾敮浠樺姛鑳�
+ /// 鏁版嵁闀垮害锛�30锛屾槸鍚﹀繀杈擄細N
+ /// </summary>
+ public string ProxyPayAcc { get; set; }
+
+ /// <summary>
+ /// 浠g悊浜洪摱琛屽悕绉�
+ /// 鐢ㄤ簬浠g悊琛屾敮浠樺姛鑳�
+ /// 鏁版嵁闀垮害锛�30锛屾槸鍚﹀繀杈擄細N
+ /// </summary>
+ public string ProxyPayBankName { get; set; }
+ }
+}
diff --git a/ApiTools.Core/Enums/Resources/EnumResourceController.cs b/ApiTools.Core/Enums/Resources/EnumResourceController.cs
index a1ae3f7..3827cb7 100644
--- a/ApiTools.Core/Enums/Resources/EnumResourceController.cs
+++ b/ApiTools.Core/Enums/Resources/EnumResourceController.cs
@@ -53,6 +53,11 @@
[ResourceController(EnumResourceService.UserServer, "Channel")]
UserServerChannel,
/// <summary>
+ /// 娓犻亾閽卞寘
+ /// </summary>
+ [ResourceController(EnumResourceService.UserServer, "ChannelWallet")]
+ UserServerChannelWallet,
+ /// <summary>
/// 娓犻亾鐢ㄦ埛
/// </summary>
[ResourceController(EnumResourceService.UserServer, "ChannelUser")]
diff --git a/ApiTools.Core/Enums/Users/EnumWalletAccess.cs b/ApiTools.Core/Enums/Users/EnumWalletAccess.cs
new file mode 100644
index 0000000..c8dc784
--- /dev/null
+++ b/ApiTools.Core/Enums/Users/EnumWalletAccess.cs
@@ -0,0 +1,27 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ApiTools.Core
+{
+ /// <summary>
+ /// 娓犻亾閽卞寘閫氶亾
+ /// </summary>
+ public enum EnumWalletAccess
+ {
+ /// <summary>
+ /// 鏀粯瀹�
+ /// </summary>
+ Alipay = 10,
+ /// <summary>
+ /// 骞冲畨閾惰
+ /// </summary>
+ PingAnPay = 20,
+ /// <summary>
+ /// 寰俊
+ /// </summary>
+ WeChatPay = 30,
+ }
+}
diff --git a/ApiTools.Core/Enums/Users/EnumWalletSignStatus.cs b/ApiTools.Core/Enums/Users/EnumWalletSignStatus.cs
new file mode 100644
index 0000000..a5a3b63
--- /dev/null
+++ b/ApiTools.Core/Enums/Users/EnumWalletSignStatus.cs
@@ -0,0 +1,31 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ApiTools.Core
+{
+ /// <summary>
+ /// 娓犻亾閽卞寘绛剧害鐘舵��
+ /// </summary>
+ public enum EnumWalletSignStatus
+ {
+ /// <summary>
+ /// 鏈绾�
+ /// </summary>
+ Wait = 1,
+ /// <summary>
+ /// 鐢宠涓�
+ /// </summary>
+ Apply = 10,
+ /// <summary>
+ /// 宸茬绾�
+ /// </summary>
+ Normal = 100,
+ /// <summary>
+ /// 缁堟
+ /// </summary>
+ Stop = 999
+ }
+}
diff --git a/ApiTools.Core/Enums/Users/EnumWalletTransactionEreceiptStatus.cs b/ApiTools.Core/Enums/Users/EnumWalletTransactionEreceiptStatus.cs
new file mode 100644
index 0000000..62da48c
--- /dev/null
+++ b/ApiTools.Core/Enums/Users/EnumWalletTransactionEreceiptStatus.cs
@@ -0,0 +1,31 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ApiTools.Core
+{
+ /// <summary>
+ /// 閽卞寘浜ゆ槗鐢靛瓙鏀舵嵁鐘舵��
+ /// </summary>
+ public enum EnumWalletTransactionEreceiptStatus
+ {
+ /// <summary>
+ /// 鍒濆鍖�
+ /// </summary>
+ INIT = 10,
+ /// <summary>
+ /// 澶勭悊涓�
+ /// </summary>
+ PROCESS = 20,
+ /// <summary>
+ /// 鎴愬姛
+ /// </summary>
+ SUCCESS = 30,
+ /// <summary>
+ /// 澶辫触
+ /// </summary>
+ FAIL = 40,
+ }
+}
diff --git a/ApiTools.Core/Enums/Users/EnumWalletTransactionStatus.cs b/ApiTools.Core/Enums/Users/EnumWalletTransactionStatus.cs
new file mode 100644
index 0000000..77cb906
--- /dev/null
+++ b/ApiTools.Core/Enums/Users/EnumWalletTransactionStatus.cs
@@ -0,0 +1,39 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ApiTools.Core
+{
+ /// <summary>
+ /// 閽卞寘浜ゆ槗鐘舵��
+ /// </summary>
+ public enum EnumWalletTransactionStatus
+ {
+ /// <summary>
+ /// 寰呮彁浜�
+ /// </summary>
+ WaitSubmit = 1,
+ /// <summary>
+ /// 寰呮敮浠�
+ /// </summary>
+ WaitPay = 10,
+ /// <summary>
+ /// 澶勭悊涓�
+ /// </summary>
+ Dealing = 20,
+ /// <summary>
+ /// 鎴愬姛
+ /// </summary>
+ Success = 30,
+ /// <summary>
+ /// 閫�绁�
+ /// </summary>
+ Refund = 40,
+ /// <summary>
+ /// 澶辫触
+ /// </summary>
+ Fail = 50,
+ }
+}
diff --git a/ApiTools.Core/Enums/Users/EnumWalletTransactionType.cs b/ApiTools.Core/Enums/Users/EnumWalletTransactionType.cs
new file mode 100644
index 0000000..1c1fcf4
--- /dev/null
+++ b/ApiTools.Core/Enums/Users/EnumWalletTransactionType.cs
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ApiTools.Core
+{
+ public enum EnumWalletTransactionType
+ {
+ /// <summary>
+ /// 鍏呭��
+ /// </summary>
+ Recharge = 10,
+ /// <summary>
+ /// 杞处
+ /// </summary>
+ Transfer = 20
+ }
+}
diff --git a/ApiTools.Core/Models/ChannelWallets/Commands/SaveChannelPingAnPayWalletCommand.cs b/ApiTools.Core/Models/ChannelWallets/Commands/SaveChannelPingAnPayWalletCommand.cs
new file mode 100644
index 0000000..a2a82c2
--- /dev/null
+++ b/ApiTools.Core/Models/ChannelWallets/Commands/SaveChannelPingAnPayWalletCommand.cs
@@ -0,0 +1,65 @@
+锘縰sing MediatR;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ApiTools.Core
+{
+ /// <summary>
+ /// 淇濆瓨娓犻亾骞冲畨閾惰閽卞寘
+ /// </summary>
+ [Resource([EnumResourceController.UserServerChannelWallet])]
+ public class SaveChannelPingAnPayWalletCommand : IRequest<SaveChannelPingAnPayWalletCommandResult>
+ {
+ /// <summary>
+ /// 澶栭儴閽卞寘Id
+ /// </summary>
+ public string OutWalletId { get; set; }
+
+ /// <summary>
+ /// 鎵�灞為摱琛�
+ /// </summary>
+ public string Bank { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炴敮琛�
+ /// </summary>
+ public string BankBranch { get; set; }
+
+ /// <summary>
+ /// 鎴峰悕
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 璐﹀彿
+ /// </summary>
+ public string Identity { get; set; }
+
+ }
+
+ public class SaveChannelPingAnPayWalletCommandResult
+ {
+ /// <summary>
+ /// 閽卞寘Id
+ /// </summary>
+ public Guid WalletId { get; set; }
+
+ /// <summary>
+ /// 浣欓
+ /// </summary>
+ public decimal Balance { get; set; }
+
+ /// <summary>
+ /// 閿欒浠g爜
+ /// </summary>
+ public string ErrorCode { get; set; }
+
+ /// <summary>
+ /// 杩斿洖鍏蜂綋鐨勫師鍥犮��
+ /// </summary>
+ public string FailReason { get; set; }
+ }
+}
diff --git a/ApiTools.Core/Models/ChannelWallets/Commands/SubmitChannelWalletTransferCommand.cs b/ApiTools.Core/Models/ChannelWallets/Commands/SubmitChannelWalletTransferCommand.cs
new file mode 100644
index 0000000..28096fc
--- /dev/null
+++ b/ApiTools.Core/Models/ChannelWallets/Commands/SubmitChannelWalletTransferCommand.cs
@@ -0,0 +1,118 @@
+锘縰sing MediatR;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ApiTools.Core
+{
+ /// <summary>
+ /// 鎻愪氦娓犻亾閽卞寘杞处
+ /// </summary>
+ [Resource([EnumResourceController.UserServerChannelWallet])]
+ public class SubmitChannelWalletTransferCommand : IRequest<SubmitChannelWalletTransferCommandResult>
+ {
+ /// <summary>
+ /// 澶栭儴閽卞寘Id
+ /// </summary>
+ public string OutWalletId { get; set; }
+
+ /// <summary>
+ /// 澶栭儴璁㈠崟鍙�
+ /// </summary>
+ public string OutCode { get; set; }
+
+ /// <summary>
+ /// 澶栭儴鎿嶄綔浜篒d
+ /// </summary>
+ public string OutOperatorId { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔鏃堕棿
+ /// </summary>
+ public DateTime? OperatorTime { get; set; }
+
+ /// <summary>
+ /// 澶栭儴鏀舵浜篒d
+ /// </summary>
+ public string OutReceiveId { get; set; }
+
+ /// <summary>
+ /// 閲戦
+ /// </summary>
+ public decimal Amount { get; set; }
+
+ /// <summary>
+ /// 鏀舵浜哄鍚�
+ /// </summary>
+ public string ReceiveName { get; set; }
+
+ /// <summary>
+ /// 鏀舵浜鸿韩浠借瘉鍙�
+ /// </summary>
+ public string ReceiveIdentity { get; set; }
+
+ /// <summary>
+ /// 鏀舵璐︽埛
+ /// </summary>
+ public string ReceiveAccount { get; set; }
+
+ /// <summary>
+ /// 鏀舵浜哄紑鎴疯
+ /// </summary>
+ public string ReceiveBank { get; set; }
+
+ /// <summary>
+ /// 鏀舵浜烘敮琛�
+ /// </summary>
+ public string ReceiveBankBranch { get; set; }
+
+ /// <summary>
+ /// 甯佺
+ /// </summary>
+ public string Currency { get; set; }
+
+ /// <summary>
+ /// 鐢ㄩ��
+ /// </summary>
+ public string Purpose { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ }
+
+ public class SubmitChannelWalletTransferCommandResult
+ {
+ /// <summary>
+ /// 浜ゆ槗Id
+ /// </summary>
+ public Guid Id { get; set; }
+
+ /// <summary>
+ /// 璁㈠崟鍙�
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public EnumWalletTransactionStatus TransactionStatus { get; set; }
+
+ /// <summary>
+ /// 鏌ヨ鍒扮殑璁㈠崟鐘舵�佷负FAIL澶辫触鎴朢EFUND閫�绁ㄦ椂锛岃繑鍥為敊璇唬鐮�
+ /// </summary>
+ public string ErrorCode { get; set; }
+
+ /// <summary>
+ /// 鏌ヨ鍒扮殑璁㈠崟鐘舵�佷负FAIL澶辫触鎴朢EFUND閫�绁ㄦ椂锛岃繑鍥炲叿浣撶殑鍘熷洜銆�
+ /// </summary>
+ public string FailReason { get; set; }
+
+ }
+}
diff --git a/ApiTools.Core/Models/ChannelWallets/Queries/GetChannelWalletTransactionQuery.cs b/ApiTools.Core/Models/ChannelWallets/Queries/GetChannelWalletTransactionQuery.cs
new file mode 100644
index 0000000..acfce0e
--- /dev/null
+++ b/ApiTools.Core/Models/ChannelWallets/Queries/GetChannelWalletTransactionQuery.cs
@@ -0,0 +1,192 @@
+锘縰sing MediatR;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ApiTools.Core
+{
+ /// <summary>
+ /// 鏌ヨ娓犻亾閽卞寘浜ゆ槗璇︽儏
+ /// </summary>
+ [Resource([EnumResourceController.UserServerChannelWallet])]
+ public class GetChannelWalletTransactionQuery : IRequest<GetChannelWalletTransactionQueryResult>
+ {
+ /// <summary>
+ /// 澶栭儴璁㈠崟鍙�
+ /// </summary>
+ public string OutCode { get; set; }
+ }
+
+ /// <summary>
+ /// 鏌ヨ娓犻亾閽卞寘浜ゆ槗璇︽儏
+ /// </summary>
+ public class GetChannelWalletTransactionQueryResult
+ {
+ /// <summary>
+ /// 浜ゆ槗Id
+ /// </summary>
+ public Guid Id { get; set; }
+
+ /// <summary>
+ /// 绫诲瀷
+ /// </summary>
+ public EnumWalletTransactionType Type { get; set; }
+
+ /// <summary>
+ /// 璁㈠崟鍙�
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 澶栭儴璁㈠崟鍙�
+ /// </summary>
+ public string OutCode { get; set; }
+
+ /// <summary>
+ /// 骞跺彂閿�
+ /// </summary>
+ public string ConcurrencyLock { get; set; }
+
+ /// <summary>
+ /// 閲戦
+ /// </summary>
+ public decimal Amount { get; set; }
+
+ /// <summary>
+ /// 浣欓
+ /// </summary>
+ public decimal Balance { get; set; }
+
+ /// <summary>
+ /// 鏀舵敮鍚庝綑棰�
+ /// </summary>
+ public decimal AfterBalance { get; set; }
+
+ /// <summary>
+ /// 澶栭儴鎿嶄綔浜篒d
+ /// </summary>
+ public string OutOperatorId { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔鏃堕棿
+ /// </summary>
+ public DateTime? OperatorTime { get; set; }
+
+ /// <summary>
+ /// 浠樻浜鸿处鎴�
+ /// </summary>
+ public string PayerAccount { get; set; }
+
+ /// <summary>
+ /// 浠樻浜哄悕绉�
+ /// </summary>
+ public string PayerName { get; set; }
+
+ /// <summary>
+ /// 浠樻浜哄紑鎴疯
+ /// </summary>
+ public string PayerBank { get; set; }
+
+ /// <summary>
+ /// 浠樻浜烘敮琛�
+ /// </summary>
+ public string PayerBankBranch { get; set; }
+
+ /// <summary>
+ /// 澶栭儴鏀舵浜篒d
+ /// </summary>
+ public string OutReceiveId { get; set; }
+
+ /// <summary>
+ /// 鏀舵浜哄鍚�
+ /// </summary>
+ public string ReceiveName { get; set; }
+
+ /// <summary>
+ /// 鏀舵浜鸿韩浠借瘉鍙�
+ /// </summary>
+ public string ReceiveIdentity { get; set; }
+
+ /// <summary>
+ /// 鏀舵璐︽埛
+ /// </summary>
+ public string ReceiveAccount { get; set; }
+
+ /// <summary>
+ /// 鏀舵浜哄紑鎴疯
+ /// </summary>
+ public string ReceiveBank { get; set; }
+
+ /// <summary>
+ /// 鏀舵浜烘敮琛�
+ /// </summary>
+ public string ReceiveBankBranch { get; set; }
+
+ /// <summary>
+ /// 甯佺
+ /// </summary>
+ public string Currency { get; set; }
+
+ /// <summary>
+ /// 鐢ㄩ��
+ /// </summary>
+ public string Purpose { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鏌ヨ鍒扮殑璁㈠崟鐘舵�佷负FAIL澶辫触鎴朢EFUND閫�绁ㄦ椂锛岃繑鍥為敊璇唬鐮�
+ /// </summary>
+ public string ErrorCode { get; set; }
+
+ /// <summary>
+ /// 鏌ヨ鍒扮殑璁㈠崟鐘舵�佷负FAIL澶辫触鎴朢EFUND閫�绁ㄦ椂锛岃繑鍥炲叿浣撶殑鍘熷洜銆�
+ /// </summary>
+ public string FailReason { get; set; }
+
+ /// <summary>
+ /// 璁㈠崟鏀粯鏃堕棿
+ /// </summary>
+ public DateTime? TransDate { get; set; }
+
+ /// <summary>
+ /// 棰勮鏀惰垂閲戦锛堝厓锛夛紝杞处鍒伴摱琛屽崱涓撶敤
+ /// </summary>
+ public decimal? OrderFee { get; set; }
+
+ /// <summary>
+ /// 鐢靛瓙鏀舵嵁Id
+ /// </summary>
+ public string EreceiptFileId { get; set; }
+
+ /// <summary>
+ /// 鐢靛瓙鏀舵嵁涓嬭浇閾炬帴
+ /// </summary>
+ public string EreceiptDownloadUrl { get; set; }
+
+ /// <summary>
+ /// 鐢靛瓙鏀舵嵁涓嬭浇閾炬帴
+ /// </summary>
+ public string EreceiptDownloadOssUrl { get; set; }
+
+ /// <summary>
+ /// 鐢靛瓙鏀舵嵁鐘舵��
+ /// </summary>
+ public EnumWalletTransactionEreceiptStatus? EreceiptStatus { get; set; }
+
+ /// <summary>
+ /// 鐢靛瓙鏀舵嵁閿欒淇℃伅
+ /// </summary>
+ public string EreceiptErrorMessage { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public EnumWalletTransactionStatus TransactionStatus { get; set; }
+ }
+}
diff --git a/ApiTools.Core/Repositories/BaseRepository.cs b/ApiTools.Core/Repositories/BaseRepository.cs
new file mode 100644
index 0000000..981c521
--- /dev/null
+++ b/ApiTools.Core/Repositories/BaseRepository.cs
@@ -0,0 +1,351 @@
+锘縰sing EFCore.BulkExtensions;
+using Furion.DatabaseAccessor;
+using Furion.DistributedIDGenerator;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Internal;
+using Microsoft.EntityFrameworkCore.Storage;
+using System;
+using System.Collections.Generic;
+using System.Data.Common;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace ApiTools.Core
+{
+ public abstract class BaseRepository<TEntity, TDbContextLocator>
+ where TEntity : CommonEntity, new()
+ where TDbContextLocator : class, IDbContextLocator
+ {
+ public readonly IRepository<TEntity, TDbContextLocator> rep;
+ public readonly CurrentLogier logier;
+
+ public BaseRepository(
+ IRepository<TEntity, TDbContextLocator> rep)
+ {
+ this.rep = rep;
+ logier = JwtUtils.GetCurrentLogier();
+ }
+
+ public virtual IQueryable<TEntity> GetQueryableIgnoreFilter(bool noTracking = true)
+ {
+ return rep.GetQueryable(noTracking);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏌ヨ
+ /// </summary>
+ /// <param name="noTracking"></param>
+ /// <returns></returns>
+ public virtual IQueryable<TEntity> GetQueryable(bool noTracking = true)
+ {
+ return rep.GetQueryable(noTracking);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏌ヨ
+ /// </summary>
+ /// <param name="noTracking"></param>
+ /// <param name="query"></param>
+ /// <returns></returns>
+ public virtual IQueryable<TEntity> GetQueryable(
+ bool noTracking,
+ Func<IQueryable<TEntity>, IQueryable<TEntity>> query)
+ {
+ var q = GetQueryable(false);
+ if (query != null)
+ {
+ q = query(q);
+ }
+ return q;
+ }
+
+ /// <summary>
+ /// 鑾峰彇瀹炰綋
+ /// </summary>
+ /// <param name="id"></param>
+ /// <param name="query"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ public virtual Task<TEntity> Get(
+ Guid id,
+ Func<IQueryable<TEntity>, IQueryable<TEntity>> query = null,
+ CancellationToken cancellationToken = default)
+ {
+ return GetQueryable(false, query)
+ .Where(it => it.Id == id)
+ .FirstOrDefaultAsync(cancellationToken);
+ }
+
+ /// <summary>
+ /// 鑾峰彇瀹炰綋
+ /// </summary>
+ /// <param name="ids"></param>
+ /// <param name="query"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ public virtual Task<List<TEntity>> Get(
+ List<Guid> ids,
+ Func<IQueryable<TEntity>, IQueryable<TEntity>> query = null,
+ CancellationToken cancellationToken = default)
+ {
+ return GetQueryable(false, query)
+ .Where(it => ids.Contains(it.Id))
+ .ToListAsync(cancellationToken);
+ }
+
+ /// <summary>
+ /// 鏌ヨ閫夋嫨鍣ㄦ暟鎹�
+ /// </summary>
+ /// <typeparam name="TValue"></typeparam>
+ /// <typeparam name="TData"></typeparam>
+ /// <param name="request"></param>
+ /// <param name="getValue"></param>
+ /// <param name="getLabel"></param>
+ /// <param name="query"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ public async Task<List<SelectOption<TValue, TData>>> GetSelect<TValue, TData>(
+ SelectQuery<TValue, TData> request,
+ Func<TData, TValue> getValue,
+ Func<TData, string> getLabel,
+ Func<IQueryable<TEntity>, IQueryable<TEntity>> query = null,
+ CancellationToken cancellationToken = default)
+ {
+ var q = GetQueryable();
+ if (query != null) q = query(q);
+ else q = q.OrderBy(it => it.Sort).ThenBy(it => it.CreatedTime);
+ var models = await q
+ .ProjectToType<TData>()
+ .ToListAsync(cancellationToken);
+ var options = new List<SelectOption<TValue, TData>>();
+ foreach (var model in models)
+ {
+ var option = new SelectOption<TValue, TData>();
+ option.Data = model;
+ option.Value = getValue(model);
+ option.Label = getLabel(model);
+ options.Add(option);
+ }
+ return options;
+ }
+
+ public async Task<TResult> GetDetail<TResult>(
+ Func<IQueryable<TEntity>, IQueryable<TEntity>> query = null,
+ CancellationToken cancellationToken = default)
+ {
+ var model = await GetQueryable(false, query)
+ .ProjectToType<TResult>()
+ .FirstOrDefaultAsync(cancellationToken);
+ if (model == null)
+ {
+ var summary = await typeof(TEntity).GetSummary();
+ throw Oops.Oh(EnumErrorCodeType.s404, $"{summary ?? "淇℃伅"}");
+ }
+ return model;
+ }
+
+ /// <summary>
+ /// 璁剧疆鏄惁绂佺敤
+ /// </summary>
+ /// <param name="request"></param>
+ /// <param name="query"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ public async Task<int> SetIsDisabled(
+ SetIsDisabledCommand request,
+ Func<IQueryable<TEntity>, IQueryable<TEntity>> query = null,
+ CancellationToken cancellationToken = default)
+ {
+ var q = GetQueryable(false);
+ if (query != null) q = query(q);
+ var entities = await q
+ .Where(it => request.Ids.Contains(it.Id))
+ .ToListAsync();
+ var isDisabledProperty = typeof(TEntity).GetProperty("IsDisabled", typeof(bool));
+ foreach (var entity in entities)
+ {
+ isDisabledProperty.SetValue(entity, request.IsDisabled);
+ }
+ await UpdateAsync(entities);
+ return entities.Count;
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鏁版嵁
+ /// </summary>
+ /// <param name="request"></param>
+ /// <param name="query"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ public async Task<int> DeleteData(
+ DeleteDataCommand request, Func<IQueryable<TEntity>,
+ IQueryable<TEntity>> query = null,
+ CancellationToken cancellationToken = default)
+ {
+ var q = GetQueryable(false);
+ if (query != null) q = query(q);
+ var entities = await q
+ .Where(it => request.Ids.Contains(it.Id))
+ .ToListAsync(cancellationToken);
+ return entities.Any()
+ ? await rep.DeleteNowAsync(entities, cancellationToken)
+ : 0;
+ }
+
+ /// <summary>
+ /// 鏇存柊鏁版嵁
+ /// </summary>
+ /// <typeparam name="TRequest"></typeparam>
+ /// <param name="q"></param>
+ /// <param name="request"></param>
+ /// <param name="update"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ public async Task<Guid> UpdateData<TRequest>(
+ IQueryable<TEntity> q,
+ TRequest request,
+ Action<TEntity> update = null,
+ CancellationToken cancellationToken = default)
+ {
+ var entity = await q.FirstOrDefaultAsync();
+ if (entity == null)
+ {
+ var summary = await typeof(TEntity).GetSummary();
+ throw Oops.Oh(EnumErrorCodeType.s404, $"{summary ?? "淇℃伅"}");
+ }
+
+ if (update != null) update(entity);
+ else request.Adapt(entity);
+ await rep.UpdateAsync(entity);
+ return entity.Id;
+ }
+
+ /// <summary>
+ /// 淇濆瓨鏁版嵁
+ /// </summary>
+ /// <typeparam name="TRequest"></typeparam>
+ /// <param name="request"></param>
+ /// <param name="query"></param>
+ /// <param name="checkExist"></param>
+ /// <param name="update"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ public async Task<TEntity> SaveData<TRequest>(
+ TRequest request,
+ Func<IQueryable<TEntity>, IQueryable<TEntity>> query = null,
+ Expression<Func<TEntity, bool>> checkExist = null,
+ Action<TEntity> update = null,
+ CancellationToken cancellationToken = default)
+ where TRequest : SaveDataCommand, new()
+ {
+ var xmlDoc = await XmlDocUtils.GetXmlDocAsync();
+ var summary = await typeof(TEntity).GetSummary(xmlDoc);
+ if (checkExist != null && await GetQueryableIgnoreFilter().AnyAsync(checkExist))
+ throw Oops.Oh(EnumErrorCodeType.s405, $"{summary ?? "淇℃伅"}");
+ if (request.Id.HasValue)
+ {
+ var q = GetQueryable(false);
+ if (query != null) q = query(q);
+ var entity = await q.FirstOrDefaultAsync(it => it.Id == request.Id, cancellationToken);
+ if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, $"{summary ?? "淇℃伅"}");
+ if (update != null) update(entity);
+ else request.Adapt(entity);
+ await rep.UpdateAsync(entity);
+ return entity;
+ }
+ else
+ {
+ var entity = new TEntity();
+ if (update != null) update(entity);
+ else request.Adapt(entity);
+ await rep.InsertAsync(entity);
+ return entity;
+ }
+ }
+
+ public virtual Task<List<T1>> SqlQueriesAsync<T1>(string sql, object model, CancellationToken cancellationToken = default)
+ {
+ return rep.SqlQueriesAsync<T1>(sql, model, cancellationToken);
+ }
+
+ public virtual IDbContextTransaction BeginTransaction()
+ {
+ return rep.Database.BeginTransaction();
+ }
+
+ public virtual Task InsertAsync(TEntity entity, CancellationToken cancellationToken = default)
+ {
+ return rep.InsertAsync(entity, cancellationToken: cancellationToken);
+ }
+
+ public virtual Task InsertNowAsync(TEntity entity, CancellationToken cancellationToken = default)
+ {
+ return rep.InsertNowAsync(entity, cancellationToken: cancellationToken);
+ }
+
+ public virtual Task InsertAsync(List<TEntity> entities, CancellationToken cancellationToken = default)
+ {
+ return rep.InsertAsync(entities, cancellationToken);
+ }
+
+ public virtual Task<int> InsertNowAsync(List<TEntity> entities, CancellationToken cancellationToken = default)
+ {
+ return rep.InsertNowAsync(entities, cancellationToken);
+ }
+
+ public virtual async Task BulkInsertAsync(List<TEntity> entities, CancellationToken cancellationToken = default)
+ {
+ await rep.Context.BulkInsertAsync(entities, cancellationToken: cancellationToken);
+ }
+
+ public virtual Task UpdateAsync(TEntity entity)
+ {
+ return rep.UpdateAsync(entity);
+ }
+
+ public virtual Task UpdateNowAsync(TEntity entity)
+ {
+ return rep.UpdateNowAsync(entity);
+ }
+
+ public virtual Task UpdateAsync(List<TEntity> entities)
+ {
+ return rep.UpdateAsync(entities);
+ }
+
+ public virtual Task<int> UpdateNowAsync(List<TEntity> entities)
+ {
+ return rep.UpdateNowAsync(entities);
+ }
+
+ public virtual Task DeleteAsync(TEntity entity)
+ {
+ return rep.DeleteAsync(entity);
+ }
+
+ public virtual Task DeleteNowAsync(TEntity entity, CancellationToken cancellationToken = default)
+ {
+ return rep.DeleteNowAsync(entity, cancellationToken);
+ }
+
+ public virtual Task DeleteAsync(List<TEntity> entities)
+ {
+ return rep.DeleteAsync(entities);
+ }
+
+ public virtual Task<int> DeleteNowAsync(List<TEntity> entities, CancellationToken cancellationToken = default)
+ {
+ return rep.DeleteNowAsync(entities, cancellationToken);
+ }
+
+ public virtual Task SaveNowAsync()
+ {
+ return rep.SaveNowAsync();
+ }
+ }
+}
diff --git a/ApiTools.Core/Repositories/ChannelWalletRepository.cs b/ApiTools.Core/Repositories/ChannelWalletRepository.cs
new file mode 100644
index 0000000..244a4e6
--- /dev/null
+++ b/ApiTools.Core/Repositories/ChannelWalletRepository.cs
@@ -0,0 +1,66 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DistributedIDGenerator;
+using Furion.FriendlyException;
+using Microsoft.EntityFrameworkCore;
+using pingan.openbank.api.sdk.enums;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace ApiTools.Core
+{
+ /// <summary>
+ /// 浼佷笟閽卞寘浠撳簱
+ /// </summary>
+ public class ChannelWalletRepository : BaseRepository<ChannelWallet, MasterDbContextLocator>, IScoped
+ {
+ public ChannelWalletRepository(IRepository<ChannelWallet, MasterDbContextLocator> rep) : base(rep)
+ {
+ }
+
+ public override IQueryable<ChannelWallet> GetQueryable(bool noTracking = true)
+ {
+ var q = rep.GetQueryable(noTracking);
+ if (logier != null)
+ {
+ switch (logier.Type)
+ {
+ case EnumUserType.Channel:
+ q = q.Where(it => it.ChannelId == logier.ChannelId);
+ break;
+ case EnumUserType.Operation:
+ break;
+ default:
+ break;
+ }
+ }
+ return q;
+ }
+
+ public Task<bool> CheckExist(string code, Guid? id)
+ {
+ return GetQueryableIgnoreFilter()
+ .AnyAsync(it => it.Code == code && it.Id != id);
+ }
+
+ /// <summary>
+ /// 璁剧疆缂栧彿
+ /// </summary>
+ /// <param name="entity"></param>
+ /// <returns></returns>
+ public async Task SetCode(ChannelWallet entity)
+ {
+ entity.Code = $"{DateTime.Now:yyyyMMddHHmmss}{new Random(IDGen.NextID().GetHashCode()).Next(1000, 9999)}";
+ var exist = await CheckExist(entity.Code, entity.Id);
+ if (exist)
+ {
+ await SetCode(entity);
+ }
+ }
+
+ }
+}
diff --git a/ApiTools.Core/Repositories/EnterpriseWalletTransactionRepository.cs b/ApiTools.Core/Repositories/EnterpriseWalletTransactionRepository.cs
new file mode 100644
index 0000000..169b93e
--- /dev/null
+++ b/ApiTools.Core/Repositories/EnterpriseWalletTransactionRepository.cs
@@ -0,0 +1,41 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DistributedIDGenerator;
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ApiTools.Core
+{
+ public class ChannelWalletTransactionRepository : BaseRepository<ChannelWalletTransaction, MasterDbContextLocator>, IScoped
+ {
+ public ChannelWalletTransactionRepository(IRepository<ChannelWalletTransaction, MasterDbContextLocator> rep) : base(rep)
+ {
+ }
+
+ public Task<bool> CheckExist(string code, Guid? id)
+ {
+ return GetQueryableIgnoreFilter()
+ .AnyAsync(it => it.Code == code && it.Id != id);
+ }
+
+ /// <summary>
+ /// 璁剧疆缂栧彿
+ /// </summary>
+ /// <param name="entity"></param>
+ /// <returns></returns>
+ public async Task SetCode(ChannelWalletTransaction entity)
+ {
+ entity.Code = $"{DateTime.Now:yyyyMMddHHmmss}{new Random(IDGen.NextID().GetHashCode()).Next(1000, 9999)}";
+ var exist = await CheckExist(entity.Code, entity.Id);
+ if (exist)
+ {
+ await SetCode(entity);
+ }
+ }
+
+ }
+}
diff --git a/ApiTools.Core/Services/ChannelPingAnPayWalletService.cs b/ApiTools.Core/Services/ChannelPingAnPayWalletService.cs
new file mode 100644
index 0000000..e49da82
--- /dev/null
+++ b/ApiTools.Core/Services/ChannelPingAnPayWalletService.cs
@@ -0,0 +1,285 @@
+锘縰sing Aop.Api.Domain;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DistributedIDGenerator;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Identity.Client;
+using NetTopologySuite.Index.HPRtree;
+using Org.BouncyCastle.Ocsp;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection.Metadata;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ApiTools.Core
+{
+ public class ChannelPingAnPayWalletService(
+ ChannelWalletRepository channelWalletRepository,
+ ChannelWalletTransactionRepository channelWalletTransactionRepository,
+ PingAnPayUtils utils
+ ) :
+ IChannelWalletService, ITransient
+ {
+ private readonly ChannelWalletRepository channelWalletRepository = channelWalletRepository;
+ private readonly ChannelWalletTransactionRepository channelWalletTransactionRepository = channelWalletTransactionRepository;
+ private readonly PingAnPayUtils utils = utils;
+
+ /// <summary>
+ /// 鏌ヨ浼佷笟閽卞寘浣欓
+ /// </summary>
+ /// <param name="wallet"></param>
+ /// <returns></returns>
+ public async Task<ChannelWallet> GetEnterpriseWalletBalance(ChannelWallet wallet)
+ {
+ if (wallet != null
+ && wallet.Identity.IsNotNull())
+ {
+ var response = await utils.CorAcctBalanceQuery(new CorAcctBalanceQueryRequest
+ {
+ Account = wallet.Identity,
+ CcyCode = "RMB",
+ });
+ if (response.Code.IsNotNull())
+ {
+ wallet.Balance = 0;
+ wallet.ErrorCode = response.Code;
+ wallet.FailReason = response.Message;
+ }
+ else
+ {
+ wallet.Balance = response.AcctBalance.ToDecimal().Value;
+ }
+ }
+ return wallet;
+ }
+
+ /// <summary>
+ /// 杞处
+ /// </summary>
+ /// <param name="wallet"></param>
+ /// <param name="transaction"></param>
+ /// <returns></returns>
+ public async Task Transfer(ChannelWallet wallet, ChannelWalletTransaction transaction)
+ {
+ transaction.PingAnPay = new ChannelWalletTransactionPingAnPay();
+ var responseStop = await utils.StopPaymentAndSettlementAccounts(new StopPaymentAndSettlementAccountsRequest
+ {
+ CnsmrSeqNo = transaction.Code,
+ AccountNo = transaction.PayerAccount,
+ OpType = "A",
+ CcyCode = "RMB",
+ SeqNo = $"{DateTime.Now:yyyyMMddHHmmssfff}{new Random(IDGen.NextID().GetHashCode()).Next(100, 999)}",
+ TradeDate = DateTime.Now.ToString("yyyyMMdd").ToInt()!.Value,
+ TradeTime = DateTime.Now.ToString("HHmmss").ToInt()!.Value,
+ });
+ if (responseStop.Code.IsNotNull())
+ {
+ transaction.ErrorCode = responseStop.Code;
+ transaction.FailReason = responseStop.Errors?.FirstOrDefault()?.ErrorMessage ?? responseStop.Message;
+ transaction.PingAnPay.StopStt = "30";
+ transaction.PingAnPay.StopFailReason = transaction.FailReason;
+ await channelWalletTransactionRepository.UpdateNowAsync(transaction);
+ }
+ else
+ {
+ if (responseStop.StopPayFlw.IsNotNull() && responseStop.Stt == "20")
+ {
+ transaction.PingAnPay.FreezeNo = responseStop.StopPayFlw;
+ }
+ else
+ {
+ var responseStopDetail = await utils.InquiryAccountStopPaymentDetails(new InquiryAccountStopPaymentDetailsRequest
+ {
+ CnsmrSeqNo = transaction.Code,
+ AccountNo = transaction.PayerAccount,
+ PageNo = "1",
+ });
+ if (responseStopDetail.Code.IsNotNull())
+ {
+ transaction.ErrorCode = responseStopDetail.Code;
+ transaction.FailReason = responseStopDetail.Errors?.FirstOrDefault()?.ErrorMessage ?? responseStopDetail.Message;
+ await channelWalletTransactionRepository.UpdateNowAsync(transaction);
+ }
+ else if (responseStopDetail.List.IsNotNull())
+ {
+ transaction.PingAnPay.FreezeNo = responseStopDetail.List.FirstOrDefault(it => it.FreezeStatu == "0")?.StopPayFlw;
+ }
+ else
+ {
+ transaction.FailReason = "姝粯澶辫触骞舵湭鏌ヨ鍒版浠樼紪鍙�";
+ await channelWalletTransactionRepository.UpdateNowAsync(transaction);
+ }
+ }
+ }
+ if (transaction.PingAnPay.FreezeNo.IsNotNull())
+ {
+ transaction.PingAnPay.ThirdVoucher = transaction.Code;
+ await channelWalletTransactionRepository.UpdateNowAsync(transaction);
+
+ var responsePayment = await utils.SingleApplicationSuspensionPayment(new SingleApplicationSuspensionPaymentRequest
+ {
+ CcyCode = "RMB",
+ CnsmrSeqNo = transaction.Code,
+ FreezeNo = transaction.PingAnPay.FreezeNo,
+ ThirdVoucher = transaction.Code,
+ OutAcctName = wallet.Name,
+ OutAcctNo = wallet.Identity,
+ InAcctBankName = transaction.ReceiveBank,
+ InAcctName = transaction.ReceiveName,
+ InAcctNo = transaction.ReceiveAccount,
+ TranAmount = transaction.Amount.ToString(),
+ UseEx = transaction.Purpose,
+ UnionFlag = wallet.Bank == transaction.ReceiveBank ? "1" : "0",
+ AddrFlag = "1"
+ });
+ if (responsePayment.Code.IsNotNull())
+ {
+ transaction.ErrorCode = responsePayment.Code;
+ transaction.FailReason = responsePayment.Errors?.FirstOrDefault()?.ErrorMessage ?? responsePayment.Message;
+ transaction.TransactionStatus = EnumWalletTransactionStatus.Fail;
+ await channelWalletTransactionRepository.UpdateNowAsync(transaction);
+ }
+ else
+ {
+ await GetTransactionDetail(wallet, transaction);
+
+ if (transaction.TransactionStatus == EnumWalletTransactionStatus.Success)
+ {
+ await DownloadEreceiptUrl(wallet, transaction);
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鏌ヨ浜ゆ槗璁板綍
+ /// </summary>
+ /// <param name="wallet"></param>
+ /// <param name="transaction"></param>
+ /// <returns></returns>
+ public async Task GetTransactionDetail(ChannelWallet wallet, ChannelWalletTransaction transaction)
+ {
+ var response = await utils.CorSingleTransferQuery(new CorSingleTransferQueryRequest
+ {
+ OrigThirdVoucher = transaction.Code,
+ });
+ if (response.Code.IsNotNull())
+ {
+ transaction.ErrorCode = response.Code;
+ transaction.FailReason = response.Errors?.FirstOrDefault()?.ErrorMessage ?? response.Message;
+ await channelWalletTransactionRepository.UpdateNowAsync(transaction);
+ }
+ else
+ {
+ response.Adapt(transaction.PingAnPay);
+ transaction.TransDate = response.AccountDate.ToDateTime();
+ transaction.OrderFee = response.Fee.ToDecimal();
+ transaction.TransactionStatus = response.Stt == "20"
+ ? EnumWalletTransactionStatus.Success
+ : response.Stt == "30"
+ ? EnumWalletTransactionStatus.Fail
+ : EnumWalletTransactionStatus.Dealing;
+ if (transaction.TransactionStatus == EnumWalletTransactionStatus.Success && transaction.TransDate == null)
+ {
+ transaction.TransDate = DateTime.Now;
+ }
+ await channelWalletTransactionRepository.UpdateNowAsync(transaction);
+
+ if (transaction.TransactionStatus != EnumWalletTransactionStatus.Dealing)
+ {
+ var responseStop = await utils.StopPaymentAndSettlementAccounts(new StopPaymentAndSettlementAccountsRequest
+ {
+ CnsmrSeqNo = transaction.Code,
+ AccountNo = transaction.PayerAccount,
+ StopPayFlw = transaction.PingAnPay.FreezeNo,
+ OpType = "D",
+ CcyCode = "RMB",
+ SeqNo = $"{DateTime.Now:yyyyMMddHHmmssfff}{new Random(IDGen.NextID().GetHashCode()).Next(100, 999)}",
+ TradeDate = DateTime.Now.ToString("yyyyMMdd").ToInt()!.Value,
+ TradeTime = DateTime.Now.ToString("HHmmss").ToInt()!.Value,
+ });
+ if (responseStop.Code.IsNotNull())
+ {
+ transaction.PingAnPay.RemoveStopStt = "30";
+ transaction.PingAnPay.RemoveStopFailReason = responseStop.Errors?.FirstOrDefault()?.ErrorMessage ?? responseStop.Message;
+ }
+ else
+ {
+ transaction.PingAnPay.RemoveStopStt = responseStop.Stt;
+ transaction.PingAnPay.RemoveStopFailReason = responseStop.SttDesc;
+ }
+ await channelWalletTransactionRepository.UpdateNowAsync(transaction);
+ }
+ }
+ }
+
+ /// <summary>
+ /// 涓嬭浇鐢靛瓙鏀舵嵁
+ /// </summary>
+ /// <param name="wallet"></param>
+ /// <param name="transaction"></param>
+ /// <returns></returns>
+ public async Task DownloadEreceiptUrl(ChannelWallet wallet, ChannelWalletTransaction transaction)
+ {
+ var response = await utils.SameDayHistoryReceiptDataQuery(new SameDayHistoryReceiptDataQueryRequest
+ {
+ OutAccNo = transaction.PayerAccount,
+ AccountBeginDate = transaction.PingAnPay.AccountDate,
+ AccountEndDate = transaction.PingAnPay.AccountDate,
+ InAccNo = transaction.ReceiveAccount,
+ HostFlow = transaction.PingAnPay.HostFlowNo
+ });
+ if (response.Code.IsNotNull())
+ {
+ transaction.EreceiptStatus = EnumWalletTransactionEreceiptStatus.FAIL;
+ transaction.EreceiptErrorMessage = response.Errors?.FirstOrDefault()?.ErrorMessage ?? response.Message;
+ await channelWalletTransactionRepository.UpdateNowAsync(transaction);
+ }
+ else if (response.List.IsNull())
+ {
+ transaction.EreceiptStatus = EnumWalletTransactionEreceiptStatus.FAIL;
+ transaction.EreceiptErrorMessage = "鏈壘鍒板洖鍗曡褰�";
+ await channelWalletTransactionRepository.UpdateNowAsync(transaction);
+ }
+ else
+ {
+ var responseDownload = await utils.SingleOrBatchReceiptPDFMergeDownloadNew(new SingleOrBatchReceiptPDFMergeDownloadNewRequest
+ {
+ OutAccNo = transaction.PayerAccount,
+ List = response.List
+ .Select(it => new SingleOrBatchReceiptPDFMergeDownloadNewRequestItem
+ {
+ RecepitType = it.ReceiptType,
+ SeqNo = it.SeqNo,
+ AccountDate = it.AccountDate
+ })
+ .ToList()
+ });
+ if (responseDownload.Code.IsNotNull())
+ {
+ transaction.EreceiptStatus = EnumWalletTransactionEreceiptStatus.FAIL;
+ transaction.EreceiptErrorMessage = responseDownload.Errors?.FirstOrDefault()?.ErrorMessage ?? responseDownload.Message;
+ await channelWalletTransactionRepository.UpdateNowAsync(transaction);
+ }
+ else
+ {
+
+ transaction.EreceiptFileId = responseDownload.DocID;
+ transaction.EreceiptDownloadUrl = utils.DownloadFile(responseDownload.DocID, responseDownload.FileName);
+ transaction.EreceiptDownloadOssUrl = AliyunOSSUtils.Upload(
+ "PingAnPay",
+ new MemoryStream(File.ReadAllBytes(transaction.EreceiptDownloadUrl)),
+ $"鐢靛瓙鍥炲崟-{transaction.Code}.zip")
+ .Url;
+ transaction.EreceiptStatus = EnumWalletTransactionEreceiptStatus.SUCCESS;
+ await channelWalletTransactionRepository.UpdateNowAsync(transaction);
+ }
+ }
+ }
+ }
+}
diff --git a/ApiTools.Core/Services/ChannelWalletService.cs b/ApiTools.Core/Services/ChannelWalletService.cs
new file mode 100644
index 0000000..9e0046f
--- /dev/null
+++ b/ApiTools.Core/Services/ChannelWalletService.cs
@@ -0,0 +1,109 @@
+锘縰sing Aop.Api.Domain;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.FriendlyException;
+using Microsoft.EntityFrameworkCore;
+using pingan.openbank.api.sdk.enums;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ApiTools.Core
+{
+ /// <summary>
+ /// 娓犻亾閽卞寘鏈嶅姟
+ /// </summary>
+ /// <param name="channelWalletRepository"></param>
+ /// <param name="channelPingAnPayWalletService"></param>
+ public class ChannelWalletService(
+ ChannelWalletRepository channelWalletRepository,
+ ChannelPingAnPayWalletService channelPingAnPayWalletService
+ ) :
+ ITransient
+ {
+ private readonly ChannelWalletRepository channelWalletRepository = channelWalletRepository;
+ private readonly ChannelPingAnPayWalletService channelPingAnPayWalletService = channelPingAnPayWalletService;
+
+ public IChannelWalletService GetService(EnumWalletAccess access)
+ {
+ switch (access)
+ {
+ //case EnumWalletAccess.Alipay:
+ // return enterpriseAliPayWalletService;
+ case EnumWalletAccess.PingAnPay:
+ return channelPingAnPayWalletService;
+ //case EnumWalletAccess.WeChatPay:
+ // return enterpriseWeChatPayWalletService;
+ default:
+ throw Oops.Oh(EnumErrorCodeType.s400, "鏀粯閫氶亾涓嶆敮鎸�");
+ }
+ }
+
+ /// <summary>
+ /// 鏌ヨ浼佷笟閽卞寘浣欓
+ /// </summary>
+ /// <param name="outWalletId"></param>
+ /// <returns></returns>
+ public async Task<ChannelWallet> GetEnterpriseWallet(string outWalletId)
+ {
+ var logier = JwtUtils.GetCurrentLogier();
+ var wallet = await channelWalletRepository.GetQueryable(false)
+ .Where(it => it.ChannelId == logier.ChannelId && it.OutWalletId == outWalletId)
+ .FirstOrDefaultAsync();
+ return await GetService(wallet.Access).GetEnterpriseWalletBalance(wallet);
+ }
+
+ /// <summary>
+ /// 鏌ヨ浼佷笟閽卞寘浣欓
+ /// </summary>
+ /// <param name="wallet"></param>
+ /// <returns></returns>
+ public async Task<ChannelWallet> GetEnterpriseWalletBalance(ChannelWallet wallet)
+ {
+ return await GetService(wallet.Access).GetEnterpriseWalletBalance(wallet);
+ }
+
+ /// <summary>
+ /// 杞处
+ /// </summary>
+ /// <param name="wallet"></param>
+ /// <param name="transaction"></param>
+ /// <returns></returns>
+ public async Task Transfer(ChannelWallet wallet, ChannelWalletTransaction transaction)
+ {
+ await GetService(wallet.Access).Transfer(wallet, transaction);
+ }
+
+ /// <summary>
+ /// 鏌ヨ浜ゆ槗璁板綍
+ /// </summary>
+ /// <param name="wallet"></param>
+ /// <param name="transaction"></param>
+ /// <returns></returns>
+ public async Task GetTransactionDetail(ChannelWallet wallet, ChannelWalletTransaction transaction)
+ {
+ await GetService(wallet.Access).GetTransactionDetail(wallet, transaction);
+ }
+
+ /// <summary>
+ /// 涓嬭浇鐢靛瓙鏀舵嵁
+ /// </summary>
+ /// <param name="wallet"></param>
+ /// <param name="transaction"></param>
+ /// <returns></returns>
+ public async Task DownloadEreceiptUrl(ChannelWallet wallet, ChannelWalletTransaction transaction)
+ {
+ if (transaction.TransactionStatus == EnumWalletTransactionStatus.Success)
+ {
+ await GetService(wallet.Access).DownloadEreceiptUrl(wallet, transaction);
+ }
+ }
+
+ public string GetLockKey(Guid channelId, string outWalletId)
+ {
+ return $"EnterpriseWallet:{channelId}:{outWalletId}";
+ }
+ }
+}
diff --git a/ApiTools.Core/Services/IChannelWalletService.cs b/ApiTools.Core/Services/IChannelWalletService.cs
new file mode 100644
index 0000000..25ebefd
--- /dev/null
+++ b/ApiTools.Core/Services/IChannelWalletService.cs
@@ -0,0 +1,45 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ApiTools.Core
+{
+ /// <summary>
+ /// 娓犻亾閽卞寘鏈嶅姟
+ /// </summary>
+ public interface IChannelWalletService
+ {
+ /// <summary>
+ /// 鏌ヨ娓犻亾閽卞寘浣欓
+ /// </summary>
+ /// <param name="wallet"></param>
+ /// <returns></returns>
+ Task<ChannelWallet> GetEnterpriseWalletBalance(ChannelWallet wallet);
+
+ /// <summary>
+ /// 杞处
+ /// </summary>
+ /// <param name="wallet"></param>
+ /// <param name="transaction"></param>
+ /// <returns></returns>
+ Task Transfer(ChannelWallet wallet, ChannelWalletTransaction transaction);
+
+ /// <summary>
+ /// 鏌ヨ浜ゆ槗璁板綍
+ /// </summary>
+ /// <param name="wallet"></param>
+ /// <param name="transaction"></param>
+ /// <returns></returns>
+ Task GetTransactionDetail(ChannelWallet wallet, ChannelWalletTransaction transaction);
+
+ /// <summary>
+ /// 涓嬭浇鐢靛瓙鏀舵嵁
+ /// </summary>
+ /// <param name="wallet"></param>
+ /// <param name="transaction"></param>
+ /// <returns></returns>
+ Task DownloadEreceiptUrl(ChannelWallet wallet, ChannelWalletTransaction transaction);
+ }
+}
diff --git a/ApiTools.Core/Utils/CollectionUtils/CollectionUtils.cs b/ApiTools.Core/Utils/CollectionUtils/CollectionUtils.cs
index 5c87a72..a00be5e 100644
--- a/ApiTools.Core/Utils/CollectionUtils/CollectionUtils.cs
+++ b/ApiTools.Core/Utils/CollectionUtils/CollectionUtils.cs
@@ -1,4 +1,6 @@
-锘縰sing System;
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
@@ -69,5 +71,28 @@
{
return !list.IsNull();
}
+
+ public static IQueryable<TEntity> GetQueryable<TEntity, TDbContextLocator>(this IRepository<TEntity, TDbContextLocator> rep, bool noTracking = true)
+ where TEntity : class, IPrivateEntity, new()
+ where TDbContextLocator : class, IDbContextLocator
+ {
+ var q = rep.AsQueryable();
+ if (noTracking)
+ {
+ q = q.AsNoTracking();
+ }
+ return q;
+ }
+
+ public static IQueryable<TEntity> GetQueryable<TEntity>(this IRepository<TEntity> rep, bool noTracking = true)
+ where TEntity : class, IPrivateEntity, new()
+ {
+ var q = rep.AsQueryable();
+ if (noTracking)
+ {
+ q = q.AsNoTracking();
+ }
+ return q;
+ }
}
}
diff --git a/ApiTools.Core/Utils/DistributedCacheUtils/DistributedLock.cs b/ApiTools.Core/Utils/DistributedCacheUtils/DistributedLock.cs
new file mode 100644
index 0000000..ad8e657
--- /dev/null
+++ b/ApiTools.Core/Utils/DistributedCacheUtils/DistributedLock.cs
@@ -0,0 +1,20 @@
+锘縰sing Medallion.Threading;
+using Medallion.Threading.Redis;
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace ApiTools.Core
+{
+ public static class DistributedLock
+ {
+ public static ValueTask<IDistributedSynchronizationHandle> TryAcquireAsync(
+ this IDistributedLockProvider provider,
+ string lockKey, TimeSpan timeout, CancellationToken cancellationToken = default)
+ {
+ lockKey = $"DistributedLock:{lockKey}";
+ var @lock = provider.CreateLock(lockKey);
+ return @lock.TryAcquireAsync(timeout, cancellationToken);
+ }
+ }
+}
diff --git a/ApiTools.Core/Utils/DistributedCacheUtils/DistributedLockServiceComponent.cs b/ApiTools.Core/Utils/DistributedCacheUtils/DistributedLockServiceComponent.cs
new file mode 100644
index 0000000..d550b85
--- /dev/null
+++ b/ApiTools.Core/Utils/DistributedCacheUtils/DistributedLockServiceComponent.cs
@@ -0,0 +1,24 @@
+锘縰sing Furion;
+using Medallion.Threading;
+using Medallion.Threading.Redis;
+using Microsoft.Extensions.DependencyInjection;
+using StackExchange.Redis;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ApiTools.Core
+{
+ public sealed class DistributedLockServiceComponent : IServiceComponent
+ {
+ public void Load(IServiceCollection services, ComponentContext componentContext)
+ {
+ var configuration = App.GetConfig<string>("DistributedCache:Configuration");
+ var connection = ConnectionMultiplexer.Connect(configuration);
+ var database = connection.GetDatabase();
+ services.AddSingleton<IDistributedLockProvider>(it => new RedisDistributedSynchronizationProvider(database));
+ }
+ }
+}
diff --git a/ApiTools.Core/Utils/PingAnPayUtils/Models/HistoryBalanceQueryRequest.cs b/ApiTools.Core/Utils/PingAnPayUtils/Models/HistoryBalanceQueryRequest.cs
deleted file mode 100644
index 89d92cc..0000000
--- a/ApiTools.Core/Utils/PingAnPayUtils/Models/HistoryBalanceQueryRequest.cs
+++ /dev/null
@@ -1,131 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace ApiTools.Core
-{
- /// <summary>
- /// 鍘嗗彶浣欓鏌ヨ_閾朵紒鐩磋仈
- /// </summary>
- public class HistoryBalanceQueryRequest : PingAnPayBaseRequest
- {
- /// <summary>
- /// 璐﹀彿
- /// </summary>
- [Required]
- [MaxLength(20)]
- public string Account { get; set; }
-
- /// <summary>
- /// 鍘嗗彶鏃ユ湡 yyyyMMdd闄愬埗鏌ヨ褰撳墠鏃ユ湡鐨勫墠360澶╁唴鐨�
- /// </summary>
- [Required]
- [MaxLength(8)]
- public string RptDate { get; set; }
-
- /// <summary>
- /// 淇濈暀鍩�
- /// </summary>
- [MaxLength(20)]
- public string Reserve { get; set; }
- }
-
- /// <summary>
- /// 鍘嗗彶浣欓鏌ヨ_閾朵紒鐩磋仈
- /// </summary>
- public class HistoryBalanceQueryResponse : PingAnPayBaseResponse
- {
- /// <summary>
- /// 璐﹀彿
- /// 鏁版嵁闀垮害锛�20锛屾槸鍚﹀繀杈擄細Y
- /// </summary>
- [Required]
- [MaxLength(20)]
- public string AcctNo { get; set; }
-
- /// <summary>
- /// 甯佺
- /// 鏁版嵁闀垮害锛�3锛屾槸鍚﹀繀杈擄細Y
- /// </summary>
- [Required]
- [MaxLength(3)]
- public string CcyCode { get; set; }
-
- /// <summary>
- /// 寮�濮嬫棩鏈�
- /// "鑻ユ煡璇㈠綋鏃ユ槑缁嗭紝寮�濮嬨�佺粨鏉熸棩鏈熷繀椤讳负褰撳ぉ锛涜嫢鏌ヨ鍘嗗彶鏄庣粏锛屽紑濮嬨�佺粨鏉熸棩鏈熷繀椤绘槸鍘嗗彶鏃ユ湡銆�
- /// 鏍煎紡yyyyMMdd"
- /// 鏁版嵁闀垮害锛�8锛屾槸鍚﹀繀杈擄細Y
- /// </summary>
- [Required]
- [MaxLength(8)]
- public string BeginDate { get; set; }
-
- /// <summary>
- /// 缁撴潫鏃ユ湡
- /// 鏍煎紡yyyyMMdd
- /// 鏁版嵁闀垮害锛�8锛屾槸鍚﹀繀杈擄細Y
- /// </summary>
- [Required]
- [MaxLength(8)]
- public string EndDate { get; set; }
-
- /// <summary>
- /// 鏌ヨ椤电爜
- /// 1锛氱涓�椤碉紝渚濇閫掑
- /// 鏁版嵁闀垮害锛�6锛屾槸鍚﹀繀杈擄細Y
- /// </summary>
- [Required]
- [MaxLength(6)]
- public string PageNo { get; set; }
-
- /// <summary>
- /// 姣忛〉鏄庣粏鏁伴噺
- /// "褰撴棩鏄庣粏榛樿姣忛〉30鏉¤褰曪紝鏀寔鏈�澶ф瘡椤�100鏉★紝鑻ヤ笂閫丳ageSize>100鏃犳晥锛岀瓑鍚�100锛�
- /// 鍘嗗彶鏄庣粏榛樿姣忛〉30鏉¤褰曪紝鏀寔鏈�澶ф瘡椤�1000鏉★紝鑻ヤ笂閫丳ageSize>1000鍒欐彁绀鸿緭鍏ラ敊璇紱
- /// 涓旀瘡娆℃煡璇㈠繀椤诲浐瀹氫负姝ゅ�硷紝鍚﹀垯鍑虹幇鏄庣粏閬楁紡"
- /// 鏁版嵁闀垮害锛�6锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- [MaxLength(6)]
- public string PageSize { get; set; }
-
- /// <summary>
- /// 棰勭暀瀛楁
- /// 鏁版嵁闀垮害锛�120锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- [MaxLength(120)]
- public string Reserve { get; set; }
-
- /// <summary>
- /// 璁板綍鎺掑簭鏍囧織
- /// "001锛氭寜浜ゆ槗鏃堕棿闄嶅簭锛�
- /// 002锛氭寜浜ゆ槗鏃堕棿鍗囧簭锛�
- /// 璇存槑锛�
- /// 鈶� 褰撲负鍘嗗彶浜ゆ槗鏄庣粏鏌ヨ鏃讹紝榛樿鎸夌収001锛氭寜浜ゆ槗鏃堕棿闄嶅簭锛�
- /// 鈶� 褰撲负褰撴棩鏄庣粏鏌ヨ鏃讹紝榛樿鎸夌収002锛氭寜浜ゆ槗鏃堕棿鍗囧簭锛�
- /// 锛堟敞锛氬綋鏃ユ槑缁嗗湪浜ゆ槗閲忓ぇ鐨勬儏鍐典笅锛屽繀椤婚噰鐢ㄦ搴忔煡璇紝鍚﹀垯浼氬鑷翠氦鏄撻仐婕忓拰閲嶅锛�"
- /// 鏁版嵁闀垮害锛�3锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- [MaxLength(3)]
- public string OrderMode { get; set; }
-
- /// <summary>
- /// 閾惰浜ゆ槗娴佹按鍙�
- /// 杈撳叆鍒欐煡璇㈣繃婊ゆ寚瀹氭潯浠剁殑璁板綍
- /// 鏁版嵁闀垮害锛�30锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- [MaxLength(30)]
- public string BankTranFlowNo { get; set; }
-
- /// <summary>
- /// 浜ゆ槗瀵规墜璐﹀彿
- /// 杈撳叆鍒欐煡璇㈣繃婊ゆ寚瀹氭潯浠剁殑璁板綍
- /// 鏁版嵁闀垮害锛�30锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- [MaxLength(30)]
- public string OppAcctNo { get; set; }
- }
-}
diff --git a/ApiTools.Core/Utils/PingAnPayUtils/Models/InquiryAccountDayHistoryTransactionDetailsRequest.cs b/ApiTools.Core/Utils/PingAnPayUtils/Models/InquiryAccountDayHistoryTransactionDetailsRequest.cs
deleted file mode 100644
index 60b3cc2..0000000
--- a/ApiTools.Core/Utils/PingAnPayUtils/Models/InquiryAccountDayHistoryTransactionDetailsRequest.cs
+++ /dev/null
@@ -1,386 +0,0 @@
-锘縰sing MediatR;
-using Newtonsoft.Json;
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace ApiTools.Core
-{
- /// <summary>
- /// 鏌ヨ璐︽埛褰撴棩鍘嗗彶浜ゆ槗鏄庣粏_閾朵紒鐩磋仈
- /// </summary>
- public class InquiryAccountDayHistoryTransactionDetailsRequest : PingAnPayBaseRequest
- {
- /// <summary>
- /// 璐﹀彿
- /// 鏁版嵁闀垮害锛�20锛屾槸鍚﹀繀杈擄細Y
- /// </summary>
- [Required]
- [MaxLength(20)]
- public string AcctNo { get; set; }
-
- /// <summary>
- /// 甯佺
- /// 鏁版嵁闀垮害锛�3锛屾槸鍚﹀繀杈擄細Y
- /// </summary>
- [Required]
- [MaxLength(3)]
- public string CcyCode { get; set; }
-
- /// <summary>
- /// 寮�濮嬫棩鏈�
- /// "鑻ユ煡璇㈠綋鏃ユ槑缁嗭紝寮�濮嬨�佺粨鏉熸棩鏈熷繀椤讳负褰撳ぉ锛涜嫢鏌ヨ鍘嗗彶鏄庣粏锛屽紑濮嬨�佺粨鏉熸棩鏈熷繀椤绘槸鍘嗗彶鏃ユ湡銆�
- /// 鏍煎紡yyyyMMdd"
- /// 鏁版嵁闀垮害锛�8锛屾槸鍚﹀繀杈擄細Y
- /// </summary>
- [Required]
- [MaxLength(8)]
- public string BeginDate { get; set; }
-
- /// <summary>
- /// 缁撴潫鏃ユ湡
- /// 鏍煎紡yyyyMMdd
- /// 鏁版嵁闀垮害锛�8锛屾槸鍚﹀繀杈擄細Y
- /// </summary>
- [Required]
- [MaxLength(8)]
- public string EndDate { get; set; }
-
- /// <summary>
- /// 鏌ヨ椤电爜
- /// 1锛氱涓�椤碉紝渚濇閫掑
- /// 鏁版嵁闀垮害锛�6锛屾槸鍚﹀繀杈擄細Y
- /// </summary>
- [Required]
- [MaxLength(6)]
- public string PageNo { get; set; }
-
- /// <summary>
- /// 姣忛〉鏄庣粏鏁伴噺
- /// "褰撴棩鏄庣粏榛樿姣忛〉30鏉¤褰曪紝鏀寔鏈�澶ф瘡椤�100鏉★紝鑻ヤ笂閫丳ageSize>100鏃犳晥锛岀瓑鍚�100锛�
- /// 鍘嗗彶鏄庣粏榛樿姣忛〉30鏉¤褰曪紝鏀寔鏈�澶ф瘡椤�1000鏉★紝鑻ヤ笂閫丳ageSize>1000鍒欐彁绀鸿緭鍏ラ敊璇紱
- /// 涓旀瘡娆℃煡璇㈠繀椤诲浐瀹氫负姝ゅ�硷紝鍚﹀垯鍑虹幇鏄庣粏閬楁紡"
- /// 鏁版嵁闀垮害锛�6锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- [MaxLength(6)]
- public string PageSize { get; set; }
-
- /// <summary>
- /// 棰勭暀瀛楁
- /// 鏁版嵁闀垮害锛�120锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- [MaxLength(120)]
- public string Reserve { get; set; }
-
- /// <summary>
- /// 璁板綍鎺掑簭鏍囧織
- /// "001锛氭寜浜ゆ槗鏃堕棿闄嶅簭锛�
- /// 002锛氭寜浜ゆ槗鏃堕棿鍗囧簭锛�
- /// 璇存槑锛�
- /// 鈶� 褰撲负鍘嗗彶浜ゆ槗鏄庣粏鏌ヨ鏃讹紝榛樿鎸夌収001锛氭寜浜ゆ槗鏃堕棿闄嶅簭锛�
- /// 鈶� 褰撲负褰撴棩鏄庣粏鏌ヨ鏃讹紝榛樿鎸夌収002锛氭寜浜ゆ槗鏃堕棿鍗囧簭锛�
- /// 锛堟敞锛氬綋鏃ユ槑缁嗗湪浜ゆ槗閲忓ぇ鐨勬儏鍐典笅锛屽繀椤婚噰鐢ㄦ搴忔煡璇紝鍚﹀垯浼氬鑷翠氦鏄撻仐婕忓拰閲嶅锛�"
- /// 鏁版嵁闀垮害锛�3锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- [MaxLength(3)]
- public string OrderMode { get; set; }
-
- /// <summary>
- /// 閾惰浜ゆ槗娴佹按鍙�
- /// 杈撳叆鍒欐煡璇㈣繃婊ゆ寚瀹氭潯浠剁殑璁板綍
- /// 鏁版嵁闀垮害锛�30锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- [MaxLength(30)]
- public string BankTranFlowNo { get; set; }
-
- /// <summary>
- /// 浜ゆ槗瀵规墜璐﹀彿
- /// 杈撳叆鍒欐煡璇㈣繃婊ゆ寚瀹氭潯浠剁殑璁板綍
- /// 鏁版嵁闀垮害锛�30锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- [MaxLength(30)]
- public string OppAcctNo { get; set; }
- }
-
- /// <summary>
- /// 鏌ヨ璐︽埛褰撴棩鍘嗗彶浜ゆ槗鏄庣粏_閾朵紒鐩磋仈
- /// </summary>
- public class InquiryAccountDayHistoryTransactionDetailsResponse : PingAnPayBaseResponse
- {
- /// <summary>
- /// 璐﹀彿
- /// 鏁版嵁闀垮害锛�20锛屾槸鍚﹀繀杈擄細Y
- /// </summary>
- public string AcctNo { get; set; }
-
- /// <summary>
- /// 璐у竵绫诲瀷
- /// 鏁版嵁闀垮害锛�3锛屾槸鍚﹀繀杈擄細Y
- /// </summary>
- public string CcyCode { get; set; }
-
- /// <summary>
- /// 鏁版嵁缁撴潫鏍囧織
- /// "鈥淵鈥�---琛ㄧず鏌ヨ缁撴灉宸插叏閮ㄨ緭鍑哄畬姣曪紱
- /// 鈥淣鈥�---琛ㄧず鏌ヨ缁撴灉鍙緭鍑轰竴閮ㄥ垎锛屽悗缁儴鍒嗘湁寰呰姹傝緭鍑猴紱"
- /// 鏁版嵁闀垮害锛�1锛屾槸鍚﹀繀杈擄細Y
- /// </summary>
- public string EndFlag { get; set; }
-
- /// <summary>
- /// 棰勭暀瀛楁
- /// 鏁版嵁闀垮害锛�120锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string Reserve { get; set; }
-
- /// <summary>
- /// 鏌ヨ椤电爜
- /// 鍚屼笂閫�
- /// 鏁版嵁闀垮害锛�6锛屾槸鍚﹀繀杈擄細Y
- /// </summary>
- public string PageNo { get; set; }
-
- /// <summary>
- /// 璁板綍绗旀暟
- /// 鏈杩斿洖鐨勭瑪鏁�
- /// 鏁版嵁闀垮害锛�2锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string PageRecCount { get; set; }
-
- [JsonProperty("list")]
- public List<InquiryAccountDayHistoryTransactionDetailsResponseItem> List { get; set; }
- }
-
- /// <summary>
- /// 鏌ヨ璐︽埛褰撴棩鍘嗗彶浜ゆ槗鏄庣粏_閾朵紒鐩磋仈
- /// </summary>
- public class InquiryAccountDayHistoryTransactionDetailsResponseItem
- {
- /// <summary>
- /// 涓绘満璁拌处鏃ユ湡
- /// 璁拌处鏃ユ湡
- /// 鏁版嵁闀垮害锛�8锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string AcctDate { get; set; }
-
- /// <summary>
- /// 浜ゆ槗鏃堕棿
- /// 鏁版嵁闀垮害锛�6锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string TxTime { get; set; }
-
- /// <summary>
- /// 涓绘満娴佹按鍙�
- /// 閾惰璁拌处娴佹按鍙�
- /// 鏁版嵁闀垮害锛�32锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string HostTrace { get; set; }
-
- /// <summary>
- /// 涓氬姟娴佹按鍙�
- /// 閾惰涓氬姟娴佹按鍙�
- /// 鏁版嵁闀垮害锛�32锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string BussSeqNo { get; set; }
-
- /// <summary>
- /// 鏄庣粏搴忓彿
- /// 鏄庣粏搴忓彿锛屽師鏉ュ拰鏍稿績姘村彿涓�璧峰尯鍒嗕氦鏄撳敮涓�鎬�
- /// 鏁版嵁闀垮害锛�19锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string DetailSerialNo { get; set; }
-
- /// <summary>
- /// 浠樻鏂圭綉鐐瑰彿
- /// 鏁版嵁闀垮害锛�9锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string OutNode { get; set; }
-
- /// <summary>
- /// 浠樻鏂硅仈琛屽彿
- /// 鏁版嵁闀垮害锛�16锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string OutBankNo { get; set; }
-
- /// <summary>
- /// 浠樻琛屽悕绉�
- /// 鏁版嵁闀垮害锛�120锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string OutBankName { get; set; }
-
- /// <summary>
- /// 浠樻鏂硅处鍙�
- /// 鏁版嵁闀垮害锛�32锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string OutAcctNo { get; set; }
-
- /// <summary>
- /// 浠樻鏂规埛鍚�
- /// 鏁版嵁闀垮害锛�120锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string OutAcctName { get; set; }
-
- /// <summary>
- /// 缁撶畻甯佺
- /// 鏁版嵁闀垮害锛�3锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string CcyCode { get; set; }
-
- /// <summary>
- /// 浜ゆ槗閲戦
- /// 鏁版嵁闀垮害锛�15锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string TranAmount { get; set; }
-
- /// <summary>
- /// 鏀舵鏂圭綉鐐瑰彿
- /// 鏁版嵁闀垮害锛�9锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string InNode { get; set; }
-
- /// <summary>
- /// 鏀舵鏂硅仈琛屽彿
- /// 鏁版嵁闀垮害锛�16锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string InBankNo { get; set; }
-
- /// <summary>
- /// 鏀舵鏂硅鍚�
- /// 鏁版嵁闀垮害锛�120锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string InBankName { get; set; }
-
- /// <summary>
- /// 鏀舵鏂硅处鍙�
- /// 鏁版嵁闀垮害锛�32锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string InAcctNo { get; set; }
-
- /// <summary>
- /// 鏀舵鏂规埛鍚�
- /// 鏁版嵁闀垮害锛�120锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string InAcctName { get; set; }
-
- /// <summary>
- /// 鍊熻捶鏍囧織
- /// D 鍊燂紱C 璐�
- /// 鏁版嵁闀垮害锛�1锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string DcFlag { get; set; }
-
- /// <summary>
- /// 鎽樿锛屾湭缈昏瘧鐨勬憳瑕侊紝濡俆RS
- /// 鏁版嵁闀垮害锛�120锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string AbstractStr { get; set; }
-
- /// <summary>
- /// 鍑瘉鍙�
- /// 绌�
- /// 鏁版嵁闀垮害锛�20锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string VoucherNo { get; set; }
-
- /// <summary>
- /// 鎵嬬画璐�
- /// 鏁版嵁闀垮害锛�15锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string TranFee { get; set; }
-
- /// <summary>
- /// 閭數璐�
- /// 鏁版嵁闀垮害锛�15锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string PostFee { get; set; }
-
- /// <summary>
- /// 璐﹂潰浣欓
- /// 鏁版嵁闀垮害锛�15锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string AcctBalance { get; set; }
-
- /// <summary>
- /// 鐢ㄩ�旓紝闄勮█
- /// 瀹㈡埛杞处涓婇�佺殑璧勯噾鐢ㄩ�斻��
- /// 鏁版嵁闀垮害锛�300锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string Purpose { get; set; }
-
- /// <summary>
- /// 涓枃鎽樿锛孉bstractStr鐨勪腑鏂囩炕璇�
- /// 鏁版嵁闀垮害锛�100锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string AbstractStr_Desc { get; set; }
-
- /// <summary>
- /// 浠g悊浜烘埛鍚�
- /// 鐢ㄤ簬浠g悊琛屾敮浠樺姛鑳�
- /// 鏁版嵁闀垮害锛�100锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string ProxyPayName { get; set; }
-
- /// <summary>
- /// 浠g悊浜鸿处鍙�
- /// 鐢ㄤ簬浠g悊琛屾敮浠樺姛鑳�
- /// 鏁版嵁闀垮害锛�100锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string ProxyPayAcc { get; set; }
-
- /// <summary>
- /// 浠g悊浜洪摱琛屽悕绉�
- /// 鐢ㄤ簬浠g悊琛屾敮浠樺姛鑳�
- /// 鏁版嵁闀垮害锛�100锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string ProxyPayBankName { get; set; }
-
- /// <summary>
- /// 涓绘満鏃ユ湡
- /// 浜ゆ槗鑷劧鏃ユ湡
- /// 鏁版嵁闀垮害锛�8锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string HostDate { get; set; }
-
- /// <summary>
- /// 浜ゆ槗娴佹按鍙�
- /// 鏁版嵁闀垮害锛�32锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string TranSeqNo { get; set; }
-
- /// <summary>
- /// 澶囨敞1
- /// 鏁版嵁闀垮害锛�300锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string Remark1 { get; set; }
-
- /// <summary>
- /// 澶囨敞2
- /// 鏁版嵁闀垮害锛�300锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string Remark2 { get; set; }
-
- /// <summary>
- /// 琚啿姝f爣蹇�
- /// "0--鏃犲叧锛�
- /// 1--琚啿姝o紱
- /// 2--鍐叉"
- /// 鏁版嵁闀垮害锛�2锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string BeReverseFlag { get; set; }
-
- /// <summary>
- /// 鏃跺簭鏃堕棿
- /// 鏁版嵁闀垮害锛�30锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string SeqTime { get; set; }
-
- /// <summary>
- /// 璐圭敤浠g爜
- /// 鏁版嵁闀垮害锛�20锛屾槸鍚﹀繀杈擄細N
- /// </summary>
- public string FeeCode { get; set; }
- }
-}
diff --git a/ApiTools.Core/Utils/PingAnPayUtils/Models/SingleDataQueryRequest.cs b/ApiTools.Core/Utils/PingAnPayUtils/Models/SingleDataQueryRequest.cs
deleted file mode 100644
index 11a79a5..0000000
--- a/ApiTools.Core/Utils/PingAnPayUtils/Models/SingleDataQueryRequest.cs
+++ /dev/null
@@ -1,487 +0,0 @@
-锘縰sing Newtonsoft.Json;
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace ApiTools.Core
-{
- /// <summary>
- /// 鍥炲崟鏁版嵁鏌ヨ_閾朵紒鐩磋仈
- /// </summary>
- public class SingleDataQueryRequest : PingAnPayBaseRequest
- {
- /// <summary>
- /// 璐﹀彿
- /// </summary>
- [Required]
- [MaxLength(50)]
- public string AcctNo { get; set; }
-
- /// <summary>
- /// 鍥炲崟绫诲瀷 鍙傜収鍥炲崟绫诲瀷 娉細鏌ュ叏閮ㄥ彲閫佲�淎LL鈥�
- /// </summary>
- [Required]
- [MaxLength(10)]
- public string ReceiptType { get; set; }
-
- /// <summary>
- /// 瀛愮被鍨� 鍙傜収鍥炲崟绫诲瀷 娉細鏌ュ叏閮ㄥ彲閫佲�淎LL鈥�
- /// </summary>
- [Required]
- [MaxLength(3)]
- public string SubType { get; set; }
-
- /// <summary>
- /// 璧峰鏃ユ湡 鏍煎紡yyyyMMdd锛堣璐︽棩鏈燂級
- /// </summary>
- [Required]
- [MaxLength(8)]
- public string StartDate { get; set; }
-
- /// <summary>
- /// 缁撴潫鏃ユ湡 鏍煎紡yyyyMMdd锛堣璐︽棩鏈燂級
- /// </summary>
- [Required]
- [MaxLength(8)]
- public string EndDate { get; set; }
-
- /// <summary>
- /// 璧峰璁板綍鏁� 璧峰鍊间负1锛屼笉鑳介��0
- /// </summary>
- [Required]
- public int StartRecord { get; set; }
-
- /// <summary>
- /// 鏈壒璁板綍鏁�
- /// </summary>
- [Required]
- public int RecordNum { get; set; }
-
- /// <summary>
- /// 寮�濮嬮噾棰� 锛堜氦鏄撻噾棰濓級double(20,4)
- /// </summary>
- public double StartAmt { get; set; }
-
- /// <summary>
- /// 缁撴潫閲戦 锛堜氦鏄撻噾棰濓級double(20,5)
- /// </summary>
- public double EntAmt { get; set; }
-
- /// <summary>
- /// 鎺掑簭鏂瑰紡 001锛氫氦鏄撴椂闂翠粠杩戝埌杩�
- /// 002锛氫氦鏄撴椂闂翠粠杩滃埌杩�
- /// 003锛氶噾棰濆崌搴忥紙浠庡皬鍒板ぇ锛�
- /// 004锛氶噾棰濋檷搴忥紙浠庡ぇ鍒板皬锛�
- /// 005锛氬洖鍗曞彿鍗囧簭
- /// 006锛氬洖鍗曞彿闄嶅簭
- /// </summary>
- [MaxLength(10)]
- public string OrderMode { get; set; }
-
- /// <summary>
- /// 鏀舵浜鸿处鍙�
- /// </summary>
- [MaxLength(50)]
- public string PayeeAcctNo { get; set; }
-
- /// <summary>
- /// 鏀舵浜哄悕绉�
- /// </summary>
- [MaxLength(300)]
- public string PayeeName { get; set; }
-
- /// <summary>
- /// 鍊熻捶鏍囧織 D锛氬�熸柟浜ゆ槗 C锛氳捶鏂逛氦鏄�
- /// </summary>
- [MaxLength(4)]
- public string DrCrFlag { get; set; }
-
- /// <summary>
- /// 甯佺
- /// </summary>
- [MaxLength(3)]
- public string Ccy { get; set; }
-
- /// <summary>
- /// 椤哄簭鍙�
- /// </summary>
- [MaxLength(70)]
- public string SerialNo { get; set; }
-
- /// <summary>
- /// 鎵撳嵃缃戠偣 浠g爜閲岄潰娌℃湁
- /// </summary>
- [MaxLength(20)]
- public string PrintBranchId { get; set; }
-
- /// <summary>
- /// 鍥炲崟鍙�
- /// </summary>
- [MaxLength(32)]
- public string ReceiptNo { get; set; }
-
- /// <summary>
- /// 鎵撳嵃鏍囧織 0锛氶娆℃墦鍗� 1锛氳ˉ鎵�
- /// </summary>
- [MaxLength(2)]
- public string PrintFlag { get; set; }
- }
-
- /// <summary>
- /// 鍥炲崟鏁版嵁鏌ヨ_閾朵紒鐩磋仈
- /// </summary>
- public class SingleDataQueryResponse : PingAnPayBaseResponse
- {
- /// <summary>
- /// 璁板綍鎬绘暟
- /// </summary>
- public string RecordTotalCount { get; set; }
-
- /// <summary>
- /// 璧峰璁板綍鏁�
- /// </summary>
- public string StartRecord { get; set; }
-
- /// <summary>
- /// 鏈杩斿洖璁板綍鏁�
- /// </summary>
- public string ResultNum { get; set; }
-
- /// <summary>
- /// 缁撴潫鏍囧織 Y:鏃犲墿浣欒褰� N:鏈夊墿浣欒褰�
- /// </summary>
- public string EndFlag { get; set; }
-
- [JsonProperty("list")]
- public List<SingleDataQueryResponseItem> List { get; set; }
- }
-
- /// <summary>
- /// 鍥炲崟鏁版嵁鏌ヨ_閾朵紒鐩磋仈
- /// </summary>
- public class SingleDataQueryResponseItem
- {
- /// <summary>
- /// 鍥炲崟鍙�
- /// </summary>
- public string ReceiptNo { get; set; }
-
- /// <summary>
- /// 楠岃瘉鐮�
- /// </summary>
- public string CheckCode { get; set; }
-
- /// <summary>
- /// 鍥炲崟绫诲瀷
- /// </summary>
- public string ReceiptType { get; set; }
-
- /// <summary>
- /// 鍥炲崟瀛愮被
- /// </summary>
- public string SubType { get; set; }
-
- /// <summary>
- /// 璁拌处鏃ユ湡
- /// </summary>
- public string BookingDate { get; set; }
-
- /// <summary>
- /// 浠樻浜哄悕绉�
- /// </summary>
- public string PayerName { get; set; }
-
- /// <summary>
- /// 鏀舵浜哄悕绉�
- /// </summary>
- public string PayeeName { get; set; }
-
- /// <summary>
- /// 浠樻浜鸿处鍙�
- /// </summary>
- public string PayerAccNo { get; set; }
-
- /// <summary>
- /// 鏀舵浜鸿处鍙�
- /// </summary>
- public string PayeeAccNo { get; set; }
-
- /// <summary>
- /// 浠樻浜哄紑鎴疯
- /// </summary>
- public string PayerAcctOpenBranchID { get; set; }
-
- /// <summary>
- /// 鏀舵浜哄紑鎴疯
- /// </summary>
- public string PayeeAcctOpenBranchID { get; set; }
-
- /// <summary>
- /// 浠樻浜哄紑鎴疯鍚嶇О
- /// </summary>
- public string PayerAcctOpenBranchName { get; set; }
-
- /// <summary>
- /// 鏀舵浜哄紑鎴疯鍚嶇О
- /// </summary>
- public string PayeeAcctOpenBranchName { get; set; }
-
- /// <summary>
- /// 涓昏处鍙�
- /// </summary>
- public string MainAcctNo { get; set; }
-
- /// <summary>
- /// 瀛愯处鍙�
- /// </summary>
- public string SubAcctNo { get; set; }
-
- /// <summary>
- /// 鍘熻处鍙�
- /// </summary>
- public string OldAcctNo { get; set; }
-
- /// <summary>
- /// 甯佺
- /// </summary>
- public string Ccy { get; set; }
-
- /// <summary>
- /// 浜ゆ槗閲戦
- /// </summary>
- public double TranAmt { get; set; }
-
- /// <summary>
- /// 缃戠偣鍙�
- /// </summary>
- public string SubBranchID { get; set; }
-
- /// <summary>
- /// 鍊熻捶鏍囧織
- /// </summary>
- public string DrCrFlag { get; set; }
-
- /// <summary>
- /// 璧勯噾鐢ㄩ��
- /// </summary>
- public string Crpp { get; set; }
-
- /// <summary>
- /// 鏈噾
- /// </summary>
- public double Corpus { get; set; }
-
- /// <summary>
- /// 瀛樻鍒╃巼
- /// </summary>
- public double DepositIntRate { get; set; }
-
- /// <summary>
- /// 瀛樺崟鍙�
- /// </summary>
- public string DepositReceiptNo { get; set; }
-
- /// <summary>
- /// 璧峰鏈�
- /// </summary>
- public string StartPeriod { get; set; }
-
- /// <summary>
- /// 缁撴潫鏈�
- /// </summary>
- public string EndPeriod { get; set; }
-
- /// <summary>
- /// 鍒╂伅绋�
- /// </summary>
- public double InterestTax { get; set; }
-
- /// <summary>
- /// 鍒╂伅
- /// </summary>
- public double IntInterest { get; set; }
-
- /// <summary>
- /// 閫忔敮鍒╂伅
- /// </summary>
- public double OverdraftInterest { get; set; }
-
- /// <summary>
- /// 绋庣巼
- /// </summary>
- public double TaxRate { get; set; }
-
- /// <summary>
- /// 璐锋璐﹀彿
- /// </summary>
- public string LoanAcctNo { get; set; }
-
- /// <summary>
- /// 鍊熸嵁鍙�
- /// </summary>
- public string DuebillNo { get; set; }
-
- /// <summary>
- /// 杩樻閲戦
- /// </summary>
- public double PaidAmt { get; set; }
-
- /// <summary>
- /// 杩樻鏈噾
- /// </summary>
- public double RepayCorpus { get; set; }
-
- /// <summary>
- /// 杩樻鍒╂伅
- /// </summary>
- public double ReplyInterest { get; set; }
-
- /// <summary>
- /// 澶嶅埄
- /// </summary>
- public double ComInterest { get; set; }
-
- /// <summary>
- /// 鏈噾浣欓
- /// </summary>
- public double CorpusBalance { get; set; }
-
- /// <summary>
- /// 搴旇繕鏈噾
- /// </summary>
- public double DueRepayCorpus { get; set; }
-
- /// <summary>
- /// 杩樻鏈熸暟
- /// </summary>
- public int RepayCount { get; set; }
-
- /// <summary>
- /// 鎵嬬画璐归噾棰�
- /// </summary>
- public double Commission { get; set; }
-
- /// <summary>
- /// 宸ユ湰璐�
- /// </summary>
- public double MaterialFee { get; set; }
-
- /// <summary>
- /// 绋庡悗鍒╂伅
- /// </summary>
- public double TaxedInterest { get; set; }
-
- /// <summary>
- /// 涓绘満娴佹按鍙�
- /// </summary>
- public string HostSeqNo { get; set; }
-
- /// <summary>
- /// 璐锋鍒╃巼
- /// </summary>
- public double LoanIntRate { get; set; }
-
- /// <summary>
- /// 搴旀敹鍒╂伅
- /// </summary>
- public double ReceivableInterest { get; set; }
-
- /// <summary>
- /// 鏌滃憳鍙�
- /// </summary>
- public string TellerNo { get; set; }
-
- /// <summary>
- /// 鎺堟潈鏌滃憳鍙�
- /// </summary>
- public string AuthTellerNo { get; set; }
-
- /// <summary>
- /// 鎵撳嵃瀹㈡埛绔悕绉�
- /// </summary>
- public string PrintClientName { get; set; }
-
- /// <summary>
- /// 鎵撳嵃鏃堕棿
- /// </summary>
- public string PrintTime { get; set; }
-
- /// <summary>
- /// 鎵撳嵃娆℃暟
- /// </summary>
- public int PrintTimes { get; set; }
-
- /// <summary>
- /// 鍦板尯鍙�
- /// </summary>
- public string RegionNo { get; set; }
-
- /// <summary>
- /// 缁堢鍙�
- /// </summary>
- public string TermNo { get; set; }
-
- /// <summary>
- /// 鎵撳嵃鑺傜偣
- /// </summary>
- public string PrintNote { get; set; }
-
- /// <summary>
- /// 涓氬姟绫诲瀷
- /// </summary>
- public string BussType { get; set; }
-
- /// <summary>
- /// 缁撴伅璐﹀彿
- /// </summary>
- public string IntSettleAcctNo { get; set; }
-
- /// <summary>
- /// 璐︽埛寮�鎴疯琛屽彿
- /// </summary>
- public string AcctOpenBranchID { get; set; }
-
- /// <summary>
- /// 浜ゆ槗鏃ユ湡
- /// </summary>
- public string TranDate { get; set; }
-
- /// <summary>
- /// 浜ゆ槗鏃堕棿
- /// </summary>
- public string TranTime { get; set; }
-
- /// <summary>
- /// 鏈烘瀯鍙�
- /// </summary>
- public string BranchId { get; set; }
-
- /// <summary>
- /// 椤哄簭鍙�
- /// </summary>
- public string SerialNo { get; set; }
-
- /// <summary>
- /// 璁板綍绫诲瀷
- /// </summary>
- public string RecordType { get; set; }
-
- /// <summary>
- /// 鍓嶇疆鏈轰唬鐮�
- /// </summary>
- public string FrontEndCode { get; set; }
-
- /// <summary>
- /// 鎽樿鐮�
- /// </summary>
- public string RemarkCode { get; set; }
-
- /// <summary>
- /// 鎽樿
- /// </summary>
- public string Summary { get; set; }
- }
-}
diff --git a/ApiTools.Core/Utils/PingAnPayUtils/PingAnPayUtils.cs b/ApiTools.Core/Utils/PingAnPayUtils/PingAnPayUtils.cs
index f0ab5d9..8660708 100644
--- a/ApiTools.Core/Utils/PingAnPayUtils/PingAnPayUtils.cs
+++ b/ApiTools.Core/Utils/PingAnPayUtils/PingAnPayUtils.cs
@@ -51,26 +51,6 @@
}
/// <summary>
- /// 鍘嗗彶浣欓鏌ヨ_閾朵紒鐩磋仈
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- public async Task<HistoryBalanceQueryResponse> HistoryBalanceQuery(HistoryBalanceQueryRequest request)
- {
- return await Send<HistoryBalanceQueryRequest, HistoryBalanceQueryResponse>(request, "/V1.0/bedl/HistoryBalanceQuery");
- }
-
- /// <summary>
- /// 鏌ヨ璐︽埛褰撴棩鍘嗗彶浜ゆ槗鏄庣粏_閾朵紒鐩磋仈
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- public async Task<InquiryAccountDayHistoryTransactionDetailsResponse> InquiryAccountDayHistoryTransactionDetails(InquiryAccountDayHistoryTransactionDetailsRequest request)
- {
- return await Send<InquiryAccountDayHistoryTransactionDetailsRequest, InquiryAccountDayHistoryTransactionDetailsResponse>(request, "/V1.0/bedl/InquiryAccountDayHistoryTransactionDetails");
- }
-
- /// <summary>
/// 璐︽埛姝粯鍜岃В姝粯_閾朵紒鐩磋仈 瀵瑰叕璐︽埛灞傜殑姝粯銆佽В闄ゆ浠�
/// </summary>
/// <param name="request"></param>
@@ -108,16 +88,6 @@
public async Task<CorSingleTransferQueryResponse> CorSingleTransferQuery(CorSingleTransferQueryRequest request)
{
return await Send<CorSingleTransferQueryRequest, CorSingleTransferQueryResponse>(request, "/V1.0/bedl/CorSingleTransferQuery");
- }
-
- /// <summary>
- /// 褰撴棩鍘嗗彶鍥炲崟鏁版嵁鏌ヨ鎺ュ彛_閾朵紒鐩磋仈
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- public async Task<SingleDataQueryResponse> SingleDataQuery(SingleDataQueryRequest request)
- {
- return await Send<SingleDataQueryRequest, SingleDataQueryResponse>(request, "/V1.0/bedl/SingleDataQuery");
}
/// <summary>
diff --git a/ApiTools.Web.Entry/Startup.cs b/ApiTools.Web.Entry/Startup.cs
index 8ab551e..9c78c1b 100644
--- a/ApiTools.Web.Entry/Startup.cs
+++ b/ApiTools.Web.Entry/Startup.cs
@@ -39,6 +39,7 @@
services.AddComponent<EventBusServiceComponent>();
services.AddComponent<DistributedCacheServiceComponent>();
+ services.AddComponent<DistributedLockServiceComponent>();
services.AddHttpRemote();
services.AddSingleton<AlipayUtils>();
--
Gitblit v1.9.1