BUG:在TASK内调用支付拦截器时,外层的代码把参数内容改了。

This commit is contained in:
yzp 2025-02-28 23:27:30 +08:00
parent 4400bd4883
commit e438bbf1f2

View File

@ -16,7 +16,7 @@ namespace Admin.NET.Core.Service;
[ApiDescriptionSettings(Order = 210, Description = "微信支付")] [ApiDescriptionSettings(Order = 210, Description = "微信支付")]
public class SysWechatPayService : IDynamicApiController, ITransient public class SysWechatPayService : IDynamicApiController, ITransient
{ {
private static readonly List<WechatPayEventInterceptor> wechatPayEventHandlers = [new WechatPayEventInterceptor() { Order = int.MaxValue }]; private static readonly List<WechatPayEventInterceptor> wechatPayEventHandlers = new List<WechatPayEventInterceptor>();
/// <summary> /// <summary>
/// 注册支付记录变化事件处理器 /// 注册支付记录变化事件处理器
@ -311,7 +311,8 @@ public class SysWechatPayService : IDynamicApiController, ITransient
{ {
try try
{ {
if (!await eh.PayInforChanged(wechatPayOld, wechatPayNew)) //这里一定要用 DeepCopy 来创一个新的对象传进不,不然会被外面的 主线程改变就麻烦了
if (!await eh.PayInforChanged(wechatPayOld, wechatPayNew.DeepCopy()))
break; break;
} }
catch (Exception ex) catch (Exception ex)
@ -322,7 +323,7 @@ public class SysWechatPayService : IDynamicApiController, ITransient
}); });
} }
// 下面这里创建一个新的对象,是因为不想把全部字段都返回 // 下面这里创建一个新的对象,是因为不想把全部字段都返回
wechatPayNew = new SysWechatPay() var result = new SysWechatPay()
{ {
AppId = _wechatPayOptions.AppId, AppId = _wechatPayOptions.AppId,
MerchantId = _wechatPayOptions.MerchantId, MerchantId = _wechatPayOptions.MerchantId,
@ -338,7 +339,7 @@ public class SysWechatPayService : IDynamicApiController, ITransient
SuccessTime = response.SuccessTime.HasValue ? response.SuccessTime.Value.DateTime : DateTime.Now // 支付完成时间 SuccessTime = response.SuccessTime.HasValue ? response.SuccessTime.Value.DateTime : DateTime.Now // 支付完成时间
}; };
return wechatPayNew; return result;
} }
/// <summary> /// <summary>