From 11e0c46d96a9de0c77cbc7509d34f470823bbc65 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期三, 03 九月 2025 13:48:35 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/EnterpriseWalletCommandHandler.cs |   45 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 45 insertions(+), 0 deletions(-)

diff --git a/FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/EnterpriseWalletCommandHandler.cs b/FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/EnterpriseWalletCommandHandler.cs
index e34811a..8901516 100644
--- a/FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/EnterpriseWalletCommandHandler.cs
+++ b/FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/EnterpriseWalletCommandHandler.cs
@@ -24,6 +24,7 @@
         ) :
         IRequestHandler<OpenEnterpriseWalletCommand, OpenEnterpriseWalletCommandResult>,
         IRequestHandler<CloseEnterpriseWalletCommand, Guid>,
+        IRequestHandler<RechargeEnterpriseWalletCommand, Guid>,
         IRequestHandler<AlipayTransferCommand, Guid>
     {
         private readonly IRepository<EnterpriseWallet> rep = rep;
@@ -109,6 +110,50 @@
             return entity.Id;
         }
 
+        /// <summary>
+        /// 浼佷笟閽卞寘鍏呭��
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        /// <exception cref="NotImplementedException"></exception>
+        public async Task<Guid> Handle(RechargeEnterpriseWalletCommand request, CancellationToken cancellationToken)
+        {
+            var logier = JwtUtils.GetCurrentLogier();
+            var entity = await rep.AsQueryable()
+                .Where(it => it.EnterpriseId == logier.EnterpriseId && it.Access == request.Access)
+                .FirstOrDefaultAsync();
+            if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "浼佷笟閽卞寘");
+            if (entity.SignStatus != EnumEnterpriseWalletSignStatus.Normal) throw Oops.Oh(EnumErrorCodeType.s510, "鏈绾�");
+            if (entity.AccountBookStatus != EnumEnterpriseWalletAccountBookStatus.Normal) throw Oops.Oh(EnumErrorCodeType.s510, "鏈紑閫氳璐︽湰");
+            var order = new EnterpriseWalletTransaction();
+            order.Code = $"{DateTime.Now:yyyyMMddHHmmss}{new Random(IDGen.NextID().GetHashCode()).Next(1000, 9999)}";
+            order.WalletId = entity.Id;
+            order.Amount = request.Amount;
+            var response = alipayUtils.FundTransPagePay(new AlipayFundTransPagePayModel
+            {
+                OutBizNo = order.Code,
+                TransAmount = order.Amount.ToString(),
+                ProductCode = "FUND_ACCOUNT_BOOK",
+                BizScene = "SATF_DEPOSIT",
+                Remark = "璁拌处鏈厖鍊�",
+                OrderTitle = "璁拌处鏈厖鍊�",
+                TimeExpire = DateTime.Now.AddHours(1).ToString("yyyy-MM-dd HH:mm:ss"),
+                PayeeInfo = new Participant
+                {
+                    IdentityType = "ACCOUNT_BOOK_ID",
+                    Identity = entity.AccountBookId,
+                    ExtInfo = new
+                    {
+                        agreement_no = entity.AgreementNo,
+                    }.ToJson(),
+                },
+            });
+            if (response.IsError) throw Oops.Oh(EnumErrorCodeType.s510, response.SubMsg ?? response.Msg);
+            order.OrderId = response.OrderId;
+            return order.Id;
+        }
+
         public async Task<Guid> Handle(AlipayTransferCommand request, CancellationToken cancellationToken)
         {
             var logier = JwtUtils.GetCurrentLogier();

--
Gitblit v1.9.1