From fbd573b5d2d05cac61d2184064bb5dd18d0fe61f Mon Sep 17 00:00:00 2001 From: zhengyuxuan <zhengyuxuan1995> Date: 星期四, 20 三月 2025 16:48:48 +0800 Subject: [PATCH] fix:退款订单号bug修复 --- LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs | 112 +++++++++++++++++++++++++++ LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs | 10 ++ LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs | 4 + LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs | 5 + LifePayment/LifePayment.Application/LifePay/LifePayService.cs | 50 +++++++++++ 5 files changed, 177 insertions(+), 4 deletions(-) diff --git a/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs b/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs index 5fd06b6..929f209 100644 --- a/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs +++ b/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs @@ -202,6 +202,10 @@ /// <returns></returns> Task<LifePayOrderOutput> GetLifePayOrderDetail(string orderNo); + + Task<LifePayRefundOrderOutput> GetLifePayRefundOrderDetail(string orderNo); + + /// <summary> /// 鏍规嵁璁㈠崟鍙疯幏鍙栨敮浠樼姸鎬� /// </summary> diff --git a/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs b/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs index 6bbd71c..ed35d68 100644 --- a/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs +++ b/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs @@ -600,10 +600,120 @@ /// 鎵嬬画璐� /// </summary> public decimal PremiumPrice { get; set; } - + /// <summary> + /// 骞冲彴鍒╂鼎 + /// </summary> public decimal? Profit { get; set; } } +public class LifePayRefundOrderOutput +{ + public Guid Id { get; set; } + /// <summary> + /// 鐢ㄦ埛璐﹀彿 + /// </summary> + public string UserPhoneNumber { get; set; } + + public string UserName { get; set; } + + public string LifePayChannle { get; set; } + /// <summary> + /// 鐢熸椿缂磋垂鏀粯绫诲瀷 + /// </summary> + public LifePayTypeEnum? LifePayType { get; set; } + + /// <summary> + /// 璁㈠崟绫诲瀷 + /// </summary> + public LifePayOrderTypeEnum LifePayOrderType { get; set; } + + /// <summary> + /// 璁㈠崟鍙� + /// </summary> + public string OrderNo { get; set; } + + /// <summary> + /// 鍏呭�奸噾棰� + /// </summary> + public decimal RechargeAmount { get; set; } + + /// <summary> + /// 浼樻儬閲戦 + /// </summary> + public decimal DiscountAmount { get; set; } + + /// <summary> + /// 瀹炰粯閲戦 + /// </summary> + public decimal PayAmount { get; set; } + + /// <summary> + /// 鏀粯鏃堕棿 + /// </summary> + public DateTime? PayTime { get; set; } + + /// <summary> + /// 鏀粯鐘舵�� + /// </summary> + public LifePayStatusEnum PayStatus { get; set; } + + /// <summary> + /// 璁㈠崟鐘舵�� + /// </summary> + public LifePayOrderStatusEnum LifePayOrderStatus { get; set; } + + /// <summary> + /// 瀹屾垚鏃堕棿 + /// </summary> + public DateTime? FinishTime { get; set; } + + /// <summary> + /// 澶栭儴璁㈠崟鍙� + /// </summary> + public string OutOrderNo { get; set; } + + + /// <summary> + /// 涓嬪崟鏃堕棿 + /// </summary> + public DateTime? CreationTime { get; set; } + + /// <summary> + /// 閫�娆炬椂闂� + /// </summary> + public DateTime? RefundTime { get; set; } + + /// <summary> + /// 閫�娆惧嚟璇� + /// </summary> + public string RefundCredentialsImgUrl { get; set; } + + + public string RefundApplyRemark { get; set; } + + public string RefundCheckRemark { get; set; } + + /// <summary> + /// 娓犻亾娴佹按鍙� + /// </summary> + public string ACOOLYOrderNo { get; set; } + + /// <summary> + /// 骞冲彴閫�娆剧姸鎬� + /// </summary> + public LifePayRefundStatusEnum? LifePayRefundStatus { get; set; } + + + /// <summary> + /// 瀹為檯鍏呭�奸噾棰� + /// </summary> + public decimal? ActualRechargeAmount { get; set; } + + /// <summary> + /// 閫�娆鹃噾棰� + /// </summary> + public decimal? RefundPrice { get; set; } +} public class CreateLifePayOrderOutput { public string OrderNo { get; set; } diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs index 6531979..4491695 100644 --- a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs +++ b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs @@ -317,6 +317,47 @@ return result; } + public async Task<LifePayRefundOrderOutput> GetLifePayRefundOrderDetail(string orderNo) + { + var order = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo).FirstOrDefaultAsync(); + var platformRate = await _lifePayRateRepository.FirstOrDefaultAsync(r => r.RateType == LifePayRateTypeEnum.渚涘簲鍟嗘姌鎵d环); + var channle = await _lifePayChannlesRep.FirstOrDefaultAsync(r => r.ChannlesNum == order.ChannelId); + var premium = await _lifePayPremiumRepository.Where(x => x.IsDeleted == false && x.PremiumType == order.LifePayType).FirstOrDefaultAsync(); + CheckExtensions.IfTrueThrowUserFriendlyException(order == null, "璁㈠崟涓嶅瓨鍦�"); + var user = await _lifePayUserRepository.FirstOrDefaultAsync(x => x.Id == order.UserId); + + var channlesRakePrice = (order.PayAmount - (order.PlatformDeductionAmount == null ? 0 : order.PlatformDeductionAmount)) * channle.ChannlesRakeRate / 100; + var result = new LifePayRefundOrderOutput() + { + UserName = user.Name, + UserPhoneNumber = user.PhoneNumber, + DiscountAmount = order.DiscountAmount, + FinishTime = order.FinishTime, + Id = order.Id, + OutOrderNo = order.OutOrderNo, + LifePayChannle = channle.ChannlesName, + LifePayOrderStatus = order.LifePayOrderStatus, + LifePayOrderType = order.LifePayOrderType, + LifePayType = order.LifePayType, + OrderNo = order.OrderNo, + PayAmount = order.PayAmount, + RechargeAmount = order.RechargeAmount, + PayStatus = order.PayStatus, + PayTime = order.PayTime, + RefundCredentialsImgUrl = order.RefundCredentialsImgUrl.GetOssPath(), + CreationTime = order.CreationTime, + RefundCheckRemark = order.RefundCheckRemark, + RefundApplyRemark = order.RefundApplyRemark, + RefundTime = order.RefundTime, + ACOOLYOrderNo = order.ACOOLYOrderNo, + LifePayRefundStatus = order.LifePayRefundStatus, + ActualRechargeAmount = order.ActualRechargeAmount, + RefundPrice = order.RefundPrice, + }; + + return result; + } + /// <summary> /// 鑾峰彇鎴戠殑璁㈠崟鍒嗛〉鏁版嵁 /// </summary> @@ -1052,6 +1093,7 @@ order.PayStatus = LifePayStatusEnum.寰呴��娆�; } + await _lifePayOrderRepository.UpdateAsync(order); } @@ -1076,10 +1118,12 @@ throw new UserFriendlyException("褰撳墠璁㈠崟鐘舵�佹棤娉曢��娆�"); } + var outRefundNo = order.ChannelId + CreateRefundOrderNo(); + order.RefundOrderNo = outRefundNo; switch (order.LifePayType) { case LifePayTypeEnum.WxPay: - var wxRefundResult = await WxPayDomesticRefunds(order.OrderNo, order.RefundApplyRemark, Convert.ToInt32(order.PayAmount * 100), Convert.ToInt32(order.PayAmount * 100)); + var wxRefundResult = await WxPayDomesticRefunds(order.OrderNo, outRefundNo,order.RefundApplyRemark, Convert.ToInt32(order.PayAmount * 100), Convert.ToInt32(order.PayAmount * 100)); if (wxRefundResult.Status == "SUCCESS") { order.PayStatus = LifePayStatusEnum.宸查��娆�; @@ -1167,12 +1211,12 @@ /// <param name="total"></param> /// <param name="currency"></param> /// <returns></returns> - public async Task<WxPayDomesticRefundsReponse> WxPayDomesticRefunds(string outTradeNo, string reason, int refund, int total, string currency = "CNY") + public async Task<WxPayDomesticRefundsReponse> WxPayDomesticRefunds(string outTradeNo,string outRefundNo, string reason, int refund, int total, string currency = "CNY") { WxPayDomesticRefundsRequest req = new WxPayDomesticRefundsRequest { OutTradeNo = outTradeNo, - OutRefundNo = CreateRefundOrderNo(), + OutRefundNo = outRefundNo, Reason = reason, Amount = new Model_WxPayDomesticRefunds_Amount { diff --git a/LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs b/LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs index 11f6a11..fd522ed 100644 --- a/LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs +++ b/LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs @@ -71,6 +71,11 @@ public string OutOrderNo { get; set; } /// <summary> + /// 閫�娆捐鍗曞彿 + /// </summary> + public string? RefundOrderNo { get; set; } + + /// <summary> /// 娓犻亾娴佹按鍙� /// </summary> public string ACOOLYOrderNo { get; set; } diff --git a/LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs b/LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs index 0f24eca..e3c7a06 100644 --- a/LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs +++ b/LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs @@ -202,6 +202,16 @@ return await _lifePayService.GetLifePayOrderDetail(orderNo); } + /// <summary> + /// 鑾峰彇閫�娆捐鍗曡鎯� + /// </summary> + /// <param name="orderNo"></param> + /// <returns></returns> + [HttpGet] + public async Task<LifePayRefundOrderOutput> GetLifePayRefundOrderDetail(string orderNo) + { + return await _lifePayService.GetLifePayRefundOrderDetail(orderNo); + } /// <summary> /// 鑾峰彇鎴戠殑璁㈠崟鍒嗛〉鏁版嵁 -- Gitblit v1.9.1