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