From f2b686a60c782adce0712f039fe3bc82a9f921be Mon Sep 17 00:00:00 2001 From: gazebo Date: Thu, 5 Dec 2019 16:28:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=AC=E8=A5=BF=E5=95=86=E5=9F=8E=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=8A=B6=E6=80=81=E6=94=B9=E6=94=B9=E7=94=A8=E5=BC=82?= =?UTF-8?q?=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jx/localjx/order.go | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/business/partner/purchase/jx/localjx/order.go b/business/partner/purchase/jx/localjx/order.go index 4569be178..ca54a1110 100644 --- a/business/partner/purchase/jx/localjx/order.go +++ b/business/partner/purchase/jx/localjx/order.go @@ -153,7 +153,7 @@ func CreateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64, order, err2 := jxOrder2GoodsOrder(ctx, outJxOrder, deliveryAddress) if err = err2; err == nil { order.Status = model.OrderStatusCreated - partner.CurOrderManager.OnOrderNew(order, model.Order2Status(order)) + callNewOrder(order) } } return outJxOrder, err @@ -232,8 +232,9 @@ func OnPayFinished(orderPay *model.OrderPay) (err error) { db := dao.GetDB() dao.UpdateEntity(db, orderPay) order.Status = model.OrderStatusNew + order.VendorStatus = utils.Int2Str(model.OrderStatusNew) order.StatusTime = *orderPay.PayFinishedAt - err = partner.CurOrderManager.OnOrderNew(order, model.Order2Status(order)) + err = callNewOrder(order) } return err } @@ -534,6 +535,14 @@ func CancelOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) return err } +// todo 消息用异步可能导致丢失,单同步又有重入相关的问题 +func callNewOrder(order *model.GoodsOrder) (err error) { + jxutils.CallMsgHandlerAsync(func() { + err = partner.CurOrderManager.OnOrderNew(order, model.Order2Status(order)) + }, jxutils.ComposeUniversalOrderID(order.VendorOrderID, model.VendorIDJX)) + return err +} + func changeOrderStatus(vendorOrderID string, status int, remark string) (err error) { orderStatus := &model.OrderStatus{ VendorOrderID: vendorOrderID, @@ -546,7 +555,10 @@ func changeOrderStatus(vendorOrderID string, status int, remark string) (err err StatusTime: time.Now(), Remark: remark, } - return partner.CurOrderManager.OnOrderStatusChanged(orderStatus) + jxutils.CallMsgHandlerAsync(func() { + err = partner.CurOrderManager.OnOrderStatusChanged(orderStatus) + }, jxutils.ComposeUniversalOrderID(vendorOrderID, model.VendorIDJX)) + return err } func GetOrderPay(ctx *jxcontext.Context, vendorOrderID string) (payList []*model.OrderPay, err error) {