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

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

diff --git a/FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/EnterpriseWalletCommandHandler.cs b/FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/EnterpriseWalletCommandHandler.cs
index ab40e91..8901516 100644
--- a/FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/EnterpriseWalletCommandHandler.cs
+++ b/FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/EnterpriseWalletCommandHandler.cs
@@ -23,7 +23,9 @@
             AlipayUtils alipayUtils
         ) :
         IRequestHandler<OpenEnterpriseWalletCommand, OpenEnterpriseWalletCommandResult>,
-        IRequestHandler<CloseEnterpriseWalletCommand, Guid>
+        IRequestHandler<CloseEnterpriseWalletCommand, Guid>,
+        IRequestHandler<RechargeEnterpriseWalletCommand, Guid>,
+        IRequestHandler<AlipayTransferCommand, Guid>
     {
         private readonly IRepository<EnterpriseWallet> rep = rep;
         private readonly IRepository<Enterprise> repEnterprise = repEnterprise;
@@ -79,7 +81,7 @@
             var response = alipayUtils.UserAgreementPageSign(model, $"/api/user/enterpriseWallet/alipayUserAgreementPageSignNotify");
             if (response.IsError) throw Oops.Oh(EnumErrorCodeType.s510, response.SubMsg ?? response.Msg);
             var result = new OpenEnterpriseWalletCommandResult();
-            result.SignUrl =  response.Body;
+            result.SignUrl = response.Body;
             return result;
         }
 
@@ -108,6 +110,87 @@
             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();
+            var entity = await rep.AsQueryable()
+                .Where(it => it.EnterpriseId == logier.EnterpriseId && it.Access == EnumEnterpriseWalletAccess.Alipay)
+                .FirstOrDefaultAsync();
+            if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "浼佷笟閽卞寘");
+            var response = alipayUtils.FundTransUniTransfer(new AlipayFundTransUniTransferModel
+            {
+                OutBizNo = $"Test{DateTime.Now:yyyyMMddHHmmss}{new Random(IDGen.NextID().GetHashCode()).Next(1000, 9999)}",
+                TransAmount = "0.01",
+                ProductCode = "TRANS_ACCOUNT_NO_PWD",
+                PayeeInfo = new Participant
+                {
+                    IdentityType = "BANKCARD_ACCOUNT",
+                    Identity = "6214180000016351382",
+                    Name = "瀛欓箯椋�",
+                    BankcardExtInfo = new BankcardExtInfo
+                    {
+                        AccountType = "2",
+                        InstName = "瀹佹尝閾惰"
+                    }
+                },
+                PayerInfo = new Participant
+                {
+                    IdentityType = "ALIPAY_OPEN_ID",
+                    Identity = entity.PrincipalOpenId,
+                    Name = "瀛欓箯椋�"
+                },
+                BizScene = "CAE_TRANSFER",
+                OrderTitle = "娴嬭瘯浠f墸",
+                Remark = "娴嬭瘯浠f墸澶囨敞"
+            });
+            if (response.IsError) throw Oops.Oh(EnumErrorCodeType.s510, response.SubMsg ?? response.Msg);
+            return entity.Id;
+        }
+
         private async Task SetCode(EnterpriseWallet entity)
         {
             entity.Code = $"{DateTime.Now:yyyyMMddHHmmss}{new Random(IDGen.NextID().GetHashCode()).Next(1000, 9999)}";

--
Gitblit v1.9.1