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