From 14c38b6bfa86c65f554cfbbe9128e732775a1cf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 7 Jul 2026 17:17:03 +0800 Subject: [PATCH] 1 --- business/partner/purchase/mtwm/order_afs.go | 27 ++++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/business/partner/purchase/mtwm/order_afs.go b/business/partner/purchase/mtwm/order_afs.go index f4bc958a6..405e72dd2 100644 --- a/business/partner/purchase/mtwm/order_afs.go +++ b/business/partner/purchase/mtwm/order_afs.go @@ -40,8 +40,21 @@ var ( mtwmapi.NotifyTypeCancelRefund: model.AfsOrderStatusFailed, mtwmapi.NotifyTypeCancelRefundComplaint: model.AfsOrderStatusFailed, } + globalAfsChan = make(chan *mtwmapi.CallbackMsg, 1000) ) +func init() { + // 单协程串行处理所有售后消息,天然有序,无并发冲突 + go func() { + for msg := range globalAfsChan { + globals.SugarLogger.Debugf("--------33 := %s", utils.Format4Output(msg, false)) + jxutils.CallMsgHandlerAsync(func() { + _ = CurPurchaseHandler.onAfsOrderMsg(msg) + }, jxutils.ComposeUniversalOrderID(GetOrderIDFromMsg(msg), model.VendorIDMTWM)) + } + }() +} + func (c *PurchaseHandler) isAfsMsg(msg *mtwmapi.CallbackMsg) bool { if msg.Cmd == mtwmapi.MsgTypeOrderRefund || msg.Cmd == mtwmapi.MsgTypeOrderPartialRefund { // refundData := msg.Data.(*mtwmapi.CallbackRefundInfo) @@ -55,13 +68,19 @@ func (c *PurchaseHandler) isAfsMsg(msg *mtwmapi.CallbackMsg) bool { return false } +// 回调函数简化 func (c *PurchaseHandler) OnAfsOrderMsg(msg *mtwmapi.CallbackMsg) (retVal *mtwmapi.CallbackResponse) { - jxutils.CallMsgHandlerAsync(func() { - retVal = c.onAfsOrderMsg(msg) - }, jxutils.ComposeUniversalOrderID(GetOrderIDFromMsg(msg), model.VendorIDMTWM)) - return retVal + globalAfsChan <- msg + return mtwmapi.Err2CallbackResponse(nil, "") } +//func (c *PurchaseHandler) OnAfsOrderMsg(msg *mtwmapi.CallbackMsg) (retVal *mtwmapi.CallbackResponse) { +// jxutils.CallMsgHandlerAsync(func() { +// retVal = c.onAfsOrderMsg(msg) +// }, jxutils.ComposeUniversalOrderID(GetOrderIDFromMsg(msg), model.VendorIDMTWM)) +// return retVal +//} + // todo 对于退款与部分退款,order.go与这个文件中对于状态的处理不一致 func (c *PurchaseHandler) onAfsOrderMsg(msg *mtwmapi.CallbackMsg) (retVal *mtwmapi.CallbackResponse) { var (