From 775d5d6142a717e8bc87da3aa3f5d8c1f52ef9a6 Mon Sep 17 00:00:00 2001 From: zhengyuxuan <zhengyuxuan1995> Date: 星期一, 24 三月 2025 17:57:34 +0800 Subject: [PATCH] fix:bug修复 --- LifePayment/LifePayment.Application/LifePay/LifePayService.cs | 110 ++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 80 insertions(+), 30 deletions(-) diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs index 3a173b6..e4a7211 100644 --- a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs +++ b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs @@ -152,6 +152,16 @@ } /// <summary> + /// 鑾峰彇娓犻亾鎶樻墸 + /// </summary> + /// <returns></returns> + public async Task<ChannelRateOutput> GetChannelRate(ChannelsBaseInput input) + { + return _lifePayChannlesRep.Where(x => x.IsDeleted == false && x.ChannlesNum == input.CheckChannelId).Select(x => new ChannelRateOutput() { ChannlesRate = x.ChannlesRate }) + .FirstOrDefault(); + } + + /// <summary> /// 鑾峰彇鎵嬬画璐硅垂鐜� /// </summary> /// <returns></returns> @@ -236,8 +246,8 @@ { var channles = await _lifePayChannlesRep.Where(x => x.ChannlesName.Contains(input.KeyWords)).Select(x => x.ChannlesNum).ToListAsync(); var result = await (from a in _channelFilter.GetChannelLifePayOrderFilter(_lifePayOrderRepository) - .WhereIf(input.BeginFinishTime.HasValue, x => x.FinishTime >= input.BeginFinishTime) - .WhereIf(input.EndFinishTime.HasValue, x => x.FinishTime <= input.EndFinishTime) + .WhereIf(input.BeginRefundTime.HasValue, x => x.FinishTime >= input.BeginRefundTime) + .WhereIf(input.EndRefundTime.HasValue, x => x.FinishTime <= input.EndRefundTime) .WhereIf(input.BeginPayTime.HasValue, x => x.PayTime >= input.BeginPayTime) .WhereIf(input.LifePayType.HasValue, x => x.LifePayType == input.LifePayType) .WhereIf(input.EndPayTime.HasValue, x => x.PayTime <= input.EndPayTime) @@ -298,7 +308,7 @@ .WhereIf(input.BeginRefundApplyTime.HasValue, x => x.RefundApplyTime >= input.BeginRefundApplyTime) .WhereIf(input.LifePayType.HasValue, x => x.LifePayType == input.LifePayType) .WhereIf(input.EndRefundApplyTime.HasValue, x => x.RefundApplyTime <= input.EndRefundApplyTime) - .WhereIf(input.LifePayOrderStatus.HasValue, x => x.LifePayOrderStatus == input.LifePayOrderStatus.Value) + .WhereIf(input.LifePayRefundStatus.HasValue, x => x.LifePayRefundStatus == input.LifePayRefundStatus.Value) .WhereIf(input.ACOOLYStatus.HasValue, x => x.ACOOLYStatus == input.ACOOLYStatus.Value) .WhereIf(input.LifePayOrderType.HasValue, x => x.LifePayOrderType == input.LifePayOrderType.Value) .WhereIf(input.UserId.HasValue, x => x.UserId == input.UserId.Value) @@ -344,41 +354,37 @@ /// </summary> /// <param name="input"></param> /// <returns></returns> - public async Task<List<LifePayOrderListTemplate>> GetLifePayRefudOrderPageExport(QueryLifePayRefundOrderListInput input) + public async Task<List<LifePayRefundOrderListTemplate>> GetLifePayRefudOrderPageExport(QueryLifePayRefundOrderListInput input) { - - - var result = await (await GetLifePayRefundOrderListFilter(input)).Select(x => new LifePayOrderListTemplate + var result = await (await GetLifePayRefundOrderListFilter(input)).Select(x => new LifePayRefundOrderListTemplate { - DiscountAmount = x.DiscountAmount, FinishTime = x.FinishTime, - LifePayOrderStatus = x.LifePayOrderStatus, + RefundPrice = x.RefundPrice, LifePayOrderType = x.LifePayOrderType, LifePayType = x.LifePayType, - OrderNo = x.OrderNo, PayAmount = x.PayAmount, PhoneNumber = x.PhoneNumber, - RechargeAmount = x.RechargeAmount, - OutOrderNo = x.OutOrderNo, - PayStatus = x.PayStatus, - PayTime = x.PayTime, - ACOOLYOrderNo = x.ACOOLYOrderNo, + RefundOrderNo = x.RefundOrderNo, + ChannelName = x.ChannelName, CreationTime = x.CreationTime, - RefundApplyRemark = x.RefundApplyRemark, - ChannelName = x.ChannelName + ACOOLYStatus = x.ACOOLYStatus, + RechargeAmount = x.RechargeAmount, + ActualReceivedAmount = x.ActualReceivedAmount.ToString("F2"), + LifePayRefundStatus = x.LifePayRefundStatus, + }).OrderByDescending(r => r.CreationTime).ToListAsync(); var i = 0; result.ForEach(s => { s.SerialNumber = ++i; + s.ACOOLYStatusStr = s.ACOOLYStatus.GetDescription(); s.LifePayOrderTypeStr = s.LifePayOrderType.GetDescription(); s.CreationTimeStr = s.CreationTime.ToString(LifePaymentConstant.DateTimeFormatStr.yyyyMMddHHmm); s.RechargeAmountStr = s.RechargeAmount.ToString("F2"); + s.ActualReceivedAmount = s.ActualReceivedAmount; + s.LifePayRefundStatusStr = s.LifePayRefundStatus.GetDescription(); s.PayAmountStr = s.PayAmount.ToString("F2"); - s.PayTimeStr = !s.PayTime.HasValue ? string.Empty : s.PayTime.Value.ToString(LifePaymentConstant.DateTimeFormatStr.yyyyMMddHHmm); s.LifePayTypeStr = s.LifePayType.GetDescription(); - s.PayStatusStr = s.PayStatus.GetDescription(); - s.LifePayOrderStatusStr = s.LifePayOrderStatus.GetDescription(); s.FinishTimeStr = !s.FinishTime.HasValue ? string.Empty : s.FinishTime.Value.ToString(LifePaymentConstant.DateTimeFormatStr.yyyyMMddHHmm); }); return result; @@ -715,11 +721,12 @@ { DiscountAmount = x.DiscountAmount, FinishTime = x.FinishTime, - LifePayOrderStatus = x.LifePayOrderStatus, + //LifePayOrderStatus = x.LifePayOrderStatus, LifePayOrderType = x.LifePayOrderType, LifePayType = x.LifePayType, OrderNo = x.OrderNo, PayAmount = x.PayAmount, + ActualRechargeAmount = x.ActualRechargeAmount.HasValue?x.ActualRechargeAmount.Value:0, PhoneNumber = x.PhoneNumber, RechargeAmount = x.RechargeAmount, OutOrderNo = x.OutOrderNo, @@ -727,8 +734,11 @@ PayTime = x.PayTime, ACOOLYOrderNo = x.ACOOLYOrderNo, CreationTime = x.CreationTime, - RefundApplyRemark = x.RefundApplyRemark, - ChannelName = x.ChannelName + LifePayRefundStatus = x.LifePayRefundStatus, + ACOOLYStatus = x.ACOOLYStatus, + //RefundApplyRemark = x.RefundApplyRemark, + ChannelName = x.ChannelName, + PlatformPrice = x.PlatformDeductionAmount.HasValue ? x.PlatformDeductionAmount.Value : 0 }).OrderByDescending(r => r.CreationTime).ToListAsync(); var i = 0; result.ForEach(s => @@ -741,7 +751,10 @@ s.PayTimeStr = !s.PayTime.HasValue ? string.Empty : s.PayTime.Value.ToString(LifePaymentConstant.DateTimeFormatStr.yyyyMMddHHmm); s.LifePayTypeStr = s.LifePayType.GetDescription(); s.PayStatusStr = s.PayStatus.GetDescription(); - s.LifePayOrderStatusStr = s.LifePayOrderStatus.GetDescription(); + s.ActualRechargeAmountStr = s.ActualRechargeAmount.ToString("F2"); + s.LifePayRefundStatusStr = s.LifePayRefundStatusStr.GetDescription(); + s.ACOOLYStatusStr = s.ACOOLYStatus.GetDescription(); + //s.LifePayOrderStatusStr = s.LifePayOrderStatus.GetDescription(); s.FinishTimeStr = !s.FinishTime.HasValue ? string.Empty : s.FinishTime.Value.ToString(LifePaymentConstant.DateTimeFormatStr.yyyyMMddHHmm); }); return result; @@ -837,8 +850,10 @@ RechargeAmount = amount.RechargeAmount, ChannelId = channle.ChannlesNum, PlatformRate = platformRate.Rate, + PlatformDeductionAmount = amount.RechargeAmount * platformRate.Rate /100, ChannleRate = channle.ChannlesRate, ChannlesRakeRate = channle.ChannlesRakeRate, + //ChannlesRakePrice = amount.RechargeAmount * (channle.ChannlesRate - platformRate.Rate) / 100 * channle.ChannlesRakeRate / 100 }; await CreateLifePayOrder(orderInput); @@ -1251,13 +1266,31 @@ await _lifePayOrderRepository.UpdateAsync(order); } + public async Task WxPayDomesticRefundsHandler(string orderNo, LifePayRefundStatusEnum refundStatus) + { + var order = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo).FirstOrDefaultAsync(); + CheckExtensions.IfTrueThrowUserFriendlyException(order == null, "璁㈠崟涓嶅瓨鍦�"); + order.LifePayRefundStatus = refundStatus; + switch (refundStatus) + { + case LifePayRefundStatusEnum.宸查��娆�: + order.LifePayOrderStatus = LifePayOrderStatusEnum.宸查��娆�; + order.ACOOLYStatus = ACOOLYStatusEnum.宸查��娆�; + break; + case LifePayRefundStatusEnum.閫�娆句腑: + order.LifePayOrderStatus = LifePayOrderStatusEnum.閫�娆句腑; + break; + default:break; + } + } + /// <summary> /// ACOOLYO璁㈠崟閫氱煡澶勭悊 /// </summary> /// <param name="orderNo"></param> /// <param name="outOrderNo"></param> /// <returns></returns> - public async Task ACOOLYOrderNotifyHandler(string orderNo, string acoolyOrderNo, LifePayOrderStatusEnum status, ACOOLYStatusEnum acoolyStatus, decimal payAmount) + public async Task ACOOLYOrderNotifyHandler(string orderNo, string acoolyOrderNo, LifePayOrderStatusEnum status, ACOOLYStatusEnum acoolyStatus, decimal payAmount,string refundApplyRemark) { var order = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo).FirstOrDefaultAsync(); CheckExtensions.IfTrueThrowUserFriendlyException(order == null, "璁㈠崟涓嶅瓨鍦�"); @@ -1272,7 +1305,10 @@ { order.ACOOLYOrderNo = acoolyOrderNo; } - + if (refundApplyRemark.IsNotNullOrEmpty()) + { + order.RefundApplyRemark = refundApplyRemark; + } order.LifePayOrderStatus = status; order.ACOOLYStatus = acoolyStatus; @@ -1327,6 +1363,11 @@ order.LifePayOrderStatus = LifePayOrderStatusEnum.閫�娆句腑; order.LifePayRefundStatus = LifePayRefundStatusEnum.閫�娆句腑; } + else if (wxRefundResult.Message == "璁㈠崟宸插叏棰濋��娆�") + { + order.LifePayOrderStatus = LifePayOrderStatusEnum.宸查��娆�; + order.LifePayRefundStatus = LifePayRefundStatusEnum.宸查��娆�; + } else { order.LifePayOrderStatus = LifePayOrderStatusEnum.寰呴��娆�; @@ -1340,7 +1381,9 @@ { throw new UserFriendlyException("閫�娆惧け璐�"); } + order.LifePayOrderStatus = LifePayOrderStatusEnum.宸查��娆�; + order.LifePayRefundStatus = LifePayRefundStatusEnum.宸查��娆�; break; default: throw new UserFriendlyException("閫�娆惧け璐�"); } @@ -1351,7 +1394,7 @@ order.RefundCheckUserId = CurrentUser.Id; order.RefundPrice = input.RefundPrice; - await _lifePayOrderRepository.UpdateAsync(order); + //await _lifePayOrderRepository.UpdateAsync(order); #region 璁板綍鏃ュ織 @@ -1385,10 +1428,16 @@ && order.LifePayOrderStatus != LifePayOrderStatusEnum.寰呴��娆� && order.LifePayOrderStatus != LifePayOrderStatusEnum.宸查��娆�) { order.LifePayOrderStatus = LifePayOrderStatusEnum.寰呴��娆�; + order.LifePayRefundStatus = LifePayRefundStatusEnum.寰呴��娆�; order.RefundApplyRemark = input.RefundApplyRemark; order.RefundApplyTime = DateTime.Now; - await _lifePayOrderRepository.UpdateAsync(order); + } + else if (order.LifePayOrderStatus == LifePayOrderStatusEnum.寰呴��娆� || order.LifePayRefundStatus == LifePayRefundStatusEnum.寰呴��娆� || + order.LifePayOrderStatus == LifePayOrderStatusEnum.閫�娆句腑 || order.LifePayRefundStatus == LifePayRefundStatusEnum.閫�娆句腑 || + order.LifePayOrderStatus == LifePayOrderStatusEnum.宸查��娆� || order.LifePayRefundStatus == LifePayRefundStatusEnum.宸查��娆�) + { + throw new UserFriendlyException("褰撳墠璁㈠崟鏃犳硶閲嶅鐢宠閫�娆�"); } else { @@ -1411,7 +1460,7 @@ { OutTradeNo = outTradeNo, OutRefundNo = outRefundNo, - Reason = reason, + //Reason = reason, Amount = new Model_WxPayDomesticRefunds_Amount { Refund = refund, @@ -1475,7 +1524,7 @@ if (input.LifePayType == LifePayOrderTypeEnum.璇濊垂璁㈠崟) { var extraProperties = JsonConvert.DeserializeObject<Model_UserAccountExtraProperties>(input.ExtraProperties); - if (!string.IsNullOrEmpty(extraProperties.Name)) + if (!string.IsNullOrEmpty(extraProperties.Name) && extraProperties.Phone == user.PhoneNumber) { user.Name = extraProperties.Name; } @@ -2000,6 +2049,7 @@ PlatformDeductionAmount = a.PlatformDeductionAmount, ACOOLYStatus = a.ACOOLYStatus, LifePayRefundStatus = a.LifePayRefundStatus, + ActualReceivedAmount = a.ActualReceivedAmount.HasValue? a.ActualReceivedAmount.Value : 0 }); return result; } -- Gitblit v1.9.1