From 5e918c353d039a75f552f4eb0cc251e96ef809ab Mon Sep 17 00:00:00 2001 From: zhengyuxuan <zhengyuxuan1995> Date: 星期二, 01 四月 2025 09:58:54 +0800 Subject: [PATCH] fix:bug修复 --- LifePayment/LifePayment.Application/LifePay/LifePayService.cs | 93 +++++++++++++++++++++++++++++++++++++++------- 1 files changed, 78 insertions(+), 15 deletions(-) diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs index 43213f8..1ea346a 100644 --- a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs +++ b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs @@ -28,6 +28,8 @@ using NPOI.SS.Formula.Functions; using StackExchange.Redis; using static Volo.Abp.Identity.Settings.IdentitySettingNames; +using static Microsoft.EntityFrameworkCore.DbLoggerCategory; +using LifePayment.Application.LifePay; namespace LifePayment.Application; @@ -45,6 +47,8 @@ private readonly IRepository<LifePayChannles, Guid> _lifePayChannlesRep; private readonly IRepository<LifePayAccount, Guid> _lifePayAccount; private readonly IRepository<OperateHistory, Guid> _operateHistory; + private readonly IRepository<LifePayChannlesRake, Guid> _lifePayChannlesRakeRepository; + private readonly ILifePayOrderService _lifePayOrderService; private readonly IDataFilter dataFilter; private readonly IChannelFilter _channelFilter; private readonly IAliPayApi _aliPayApi; @@ -63,7 +67,9 @@ IRepository<LifePayUser, Guid> lifePayUserRepository, IRepository<LifePayPremium, Guid> lifePayPremiumRepository, IRepository<LifePayIntroInfo, Guid> lifePayIntroInfoRepository, + IRepository<LifePayChannlesRake, Guid> lifePayChannlesRakeRepository, IRepository<OperateHistory, Guid> operateHistory, + ILifePayOrderService lifePayOrderService, IAliPayApi aliPayApi, IAlipayInterfaceManager aliPayInterfaceManager, IWxPayApi wxPayApi, @@ -79,9 +85,11 @@ _lifePayRateRepository = lifePayRateRepository; _lifePayOrderRepository = lifePayOrderRepository; _lifePayUserRepository = lifePayUserRepository; + _lifePayChannlesRakeRepository = lifePayChannlesRakeRepository; _lifePayPremiumRepository = lifePayPremiumRepository; _lifePayIntroInfoRepository = lifePayIntroInfoRepository; _aliPayApi = aliPayApi; + _lifePayOrderService = lifePayOrderService; _alipayInterfaceManager = aliPayInterfaceManager; _wxPayApi = wxPayApi; _wxPayOptions = wxPayOptions.Value; @@ -829,6 +837,7 @@ public async Task<AlipayTradeQueryResponse> QueryAlipayTrade(OrderInQuiryInput input) { var result = await _aliPayApi.OrderInQuiry(input); + return result; } @@ -839,14 +848,46 @@ /// <returns></returns> public async Task<AlipayTradeFastpayRefundQueryResponse> QueryAlipayTradeRefund(OrderInQuiryInput input) { + var order = await _lifePayOrderRepository.Where(x => x.OrderNo == input.OutTradeNo).FirstOrDefaultAsync(); + input.OutRefundNo = order.RefundOrderNo; var result = await _aliPayApi.QueryAlipayTradeRefund(input); + if (result.Code == AlipayResultCode.Success && result.RefundStatus == AlipayRefundStatus.Success) + { + order.LifePayOrderStatus = LifePayOrderStatusEnum.宸查��娆�; + order.LifePayRefundStatus = LifePayRefundStatusEnum.宸查��娆�; + await _lifePayOrderService.AddLifePayExpensesReceipts(new AddLifePayExpensesReceiptsInput() + { + OrderNo = order.RefundOrderNo, + OutOrderNo = result.TradeNo, + LifePayType = LifePayTypeEnum.AliPay, + ExpensesReceiptsType = ExpensesReceiptsTypeEnum.Receipts + }); + } + return result; } - public async Task WxPayDomesticRefundsQuery(string outTradeNo) + /// <summary> + /// 鏌ヨ寰俊閫�娆捐鍗曚俊鎭� + /// </summary> + /// <param name="outTradeNo"></param> + /// <returns></returns> + public async Task<WxPayDomesticRefundsQueryReponse> WxPayDomesticRefundsQuery(string outTradeNo) { - await _wxPayApi.WxPayDomesticRefundsQuery(outTradeNo); + return await _wxPayApi.WxPayDomesticRefundsQuery(outTradeNo); } + + /// <summary> + /// 鏌ヨ寰俊璁㈠崟淇℃伅 + /// </summary> + /// <param name="outTradeNo"></param> + /// <returns></returns> + public async Task<WxPayTradeQueryReponse> WxPayTradeQuery(string outTradeNo) + { + return await _wxPayApi.WxPayTradeQuery(outTradeNo); + } + + #endregion @@ -1037,8 +1078,8 @@ //var payUrl = await GetPayQRCode(order.LifePayType.Value, order.OrderNo, desc, 0.01m, ip, input.H5Type); var payUrl = await GetPayQRCode(res.LifePayType, res.OrderNo, res.Desc, res.PayAmount, ip, input.H5Type); #else - //var payUrl = await GetPayQRCode(order.LifePayType.Value, order.OrderNo, desc, 0.01m, ip, input.H5Type); - var payUrl = await GetPayQRCode(order.LifePayType.Value, order.OrderNo, desc, order.PayAmount??0, ip, input.H5Type); + //var payUrl = await GetPayQRCode(res.LifePayType, res.OrderNo, res.Desc, 0.01m, ip, input.H5Type); + var payUrl = await GetPayQRCode(res.LifePayType, res.OrderNo, res.Desc, res.PayAmount, ip, input.H5Type); #endif return payUrl; @@ -1292,7 +1333,7 @@ await _lifePayOrderRepository.UpdateAsync(order); } - public async Task WxPayDomesticRefundsHandler(string orderNo, LifePayRefundStatusEnum refundStatus) + public async Task LifePayRefundsHandler(string orderNo, LifePayRefundStatusEnum refundStatus) { var order = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo).FirstOrDefaultAsync(); CheckExtensions.IfTrueThrowUserFriendlyException(order == null, "璁㈠崟涓嶅瓨鍦�"); @@ -1310,6 +1351,7 @@ } } + /// <summary> /// ACOOLYO璁㈠崟閫氱煡澶勭悊 /// </summary> @@ -1321,10 +1363,10 @@ var order = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo).FirstOrDefaultAsync(); CheckExtensions.IfTrueThrowUserFriendlyException(order == null, "璁㈠崟涓嶅瓨鍦�"); - //if (order.LifePayOrderStatus == LifePayOrderStatusEnum.宸插畬鎴�) - //{ - // return; - //} + if (order.LifePayOrderStatus >= LifePayOrderStatusEnum.宸插畬鎴�) + { + return; + } order.PlatformDeductionAmount = payAmount; if (acoolyOrderNo.IsNotNullOrEmpty()) @@ -1346,6 +1388,27 @@ order.ACOOLYStatus = acoolyStatus; order.FinishTime = DateTime.Now; await _lifePayOrderRepository.UpdateAsync(order); + + if (order.LifePayOrderStatus == LifePayOrderStatusEnum.宸插畬鎴�) + { + /// 姣涘埄 + var grossProfit = order.RechargeAmount * (order.ChannleRate - order.PlatformRate) / 100; + /// 娓犻亾浣i噾 锛�(鍏呭�奸潰棰� * 娓犻亾鎶樻墸姣斾緥)-(鍏呭�奸潰棰� * 骞冲彴鎶樻墸姣斾緥)锛�* 浣i噾姣斾緥 + var channlesRakePrice = grossProfit * (order.ChannlesRakeRate) / 100; + if (channlesRakePrice.HasValue) + { + LifePayChannlesRake lifePayChannlesRake = new LifePayChannlesRake() + { + OrderNo = order.OrderNo, + PayAmount = order.PayAmount.Value, + ChannlesRakeRate = order.ChannlesRakeRate.Value, + ChannlesRakePrice = channlesRakePrice.Value, + FinishTime = order.FinishTime.Value, + ChannelId = order.ChannelId, + }; + await _lifePayChannlesRakeRepository.InsertAsync(lifePayChannlesRake); + } + } } /// <summary> @@ -1380,7 +1443,6 @@ } var outRefundNo = order.ChannelId + CreateRefundOrderNo(); - order.RefundOrderNo = outRefundNo; switch (order.LifePayType) { case LifePayTypeEnum.WxPay: @@ -1403,18 +1465,19 @@ break; case LifePayTypeEnum.AliPay: - var aliRefundResult = await AliTradeRefund(new AlipayTradeRefundRequest() { OutTradeNo = order.OrderNo, RefundAmount = input.RefundPrice.ToString() }); + var aliRefundResult = await AliTradeRefund(new AlipayTradeRefundRequest() { OutTradeNo = order.OrderNo, OutRefundNo = outRefundNo, RefundAmount = input.RefundPrice.ToString() }); if (aliRefundResult.Code != AlipayResultCode.Success) { throw new UserFriendlyException("閫�娆惧け璐�:" + aliRefundResult.SubMsg); } - order.LifePayOrderStatus = LifePayOrderStatusEnum.宸查��娆�; - order.LifePayRefundStatus = LifePayRefundStatusEnum.宸查��娆�; + order.LifePayOrderStatus = LifePayOrderStatusEnum.閫�娆句腑; + order.LifePayRefundStatus = LifePayRefundStatusEnum.閫�娆句腑; break; default: throw new UserFriendlyException("閫�娆惧け璐�"); } + order.RefundOrderNo = outRefundNo; order.RefundCredentialsImgUrl = input.RefundCredentialsImgUrl; order.RefundCheckRemark = input.RefundCheckRemark; order.RefundTime = DateTime.Now; @@ -1548,7 +1611,7 @@ await _lifePayAccount.InsertAsync(userAccount); } - if (input.LifePayType == LifePayOrderTypeEnum.PhoneOrder) + if (input.LifePayType == LifePayOrderTypeEnum.PhoneOrder || input.LifePayType == LifePayOrderTypeEnum.ElectricOrder) { var extraProperties = JsonConvert.DeserializeObject<Model_UserAccountExtraProperties>(input.ExtraProperties); if (!string.IsNullOrEmpty(extraProperties.Name) && extraProperties.Phone == user.PhoneNumber) @@ -1990,7 +2053,6 @@ return message; } - private async Task<IQueryable<LifePayOrderListOutput>> GetLifePayOrderListFilter(QueryLifePayOrderListInput input) { var channles = await _lifePayChannlesRep.Where(x => x.ChannlesName.Contains(input.KeyWords)).Select(x => x.ChannlesNum).ToListAsync(); @@ -2151,6 +2213,7 @@ return channel.ChannlesRate; } } + public async Task<SetPayTypeReturn> SetPayType(string orderNo, LifePayTypeEnum lifePayType, string ip) { var order = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo).FirstOrDefaultAsync(); -- Gitblit v1.9.1