From e81f1950328e444c57d349671e4155692d4f5243 Mon Sep 17 00:00:00 2001 From: gazebo Date: Mon, 27 May 2019 11:34:02 +0800 Subject: [PATCH] =?UTF-8?q?-=20GetStatusDuplicatedCount=20-=20=E6=8F=90?= =?UTF-8?q?=E5=89=8D=E5=88=A4=E6=96=AD=E6=B6=88=E6=81=AF=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=EF=BC=8C=E9=98=B2=E6=AD=A2=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E5=9C=A8=E5=88=A4=E6=96=AD=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E5=89=8D=E5=B7=B2=E7=BB=8F=E8=B6=85=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/orderman.go | 11 +++++++++++ business/partner/partner.go | 2 ++ business/partner/purchase/ebai/order.go | 5 ++++- business/partner/purchase/jd/order.go | 5 ++++- business/partner/purchase/mtwm/order.go | 6 +++++- 5 files changed, 26 insertions(+), 3 deletions(-) diff --git a/business/jxcallback/orderman/orderman.go b/business/jxcallback/orderman/orderman.go index 61fc0211b..1cabb54f1 100644 --- a/business/jxcallback/orderman/orderman.go +++ b/business/jxcallback/orderman/orderman.go @@ -102,6 +102,17 @@ func addOrderOrWaybillStatus(status *model.OrderStatus, db *dao.DaoDB) (isDuplic return isDuplicated, err } +func (c *OrderManager) GetStatusDuplicatedCount(status *model.OrderStatus) (duplicatedCount int) { + if status == nil { + return 0 + } + db := dao.GetDB() + if err := dao.GetEntity(db, status, "VendorOrderID", "VendorID", "OrderType", "VendorStatus", "StatusTime"); err == nil { + return status.DuplicatedCount + } + return 0 +} + // todo 最好还是改成全事件回放算了 func LoadPendingOrders() { orders := FixedOrderManager.LoadPendingOrders() diff --git a/business/partner/partner.go b/business/partner/partner.go index 792474d61..9e3579cdc 100644 --- a/business/partner/partner.go +++ b/business/partner/partner.go @@ -159,6 +159,8 @@ type IOrderManager interface { OnAfsOrderStatusChanged(orderStatus *model.OrderStatus) (err error) LoadAfsOrder(vendorAfsOrderID string, vendorID int) (afsOrder *model.AfsOrder, err error) UpdateAfsOrderFields(afsOrder *model.AfsOrder, fieldList []string) (err error) + + GetStatusDuplicatedCount(status *model.OrderStatus) (duplicatedCount int) } type IStoreManager interface { diff --git a/business/partner/purchase/ebai/order.go b/business/partner/purchase/ebai/order.go index e70d8c564..f717feb96 100644 --- a/business/partner/purchase/ebai/order.go +++ b/business/partner/purchase/ebai/order.go @@ -298,11 +298,14 @@ func (c *PurchaseHandler) onOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaiapi. if c.isAfsMsg(msg) { retVal = c.OnAfsOrderMsg(msg) } else { + status := c.callbackMsg2Status(msg) + if partner.CurOrderManager.GetStatusDuplicatedCount(status) > 0 { + return nil + } if ebaiapi.CmdOrderCreate == msg.Cmd { retVal = c.onOrderNew(msg) } else { var err error - status := c.callbackMsg2Status(msg) if status != nil { if status.Status == model.OrderStatusAdjust { var order *model.GoodsOrder diff --git a/business/partner/purchase/jd/order.go b/business/partner/purchase/jd/order.go index d694313e6..ffeebc92e 100644 --- a/business/partner/purchase/jd/order.go +++ b/business/partner/purchase/jd/order.go @@ -42,6 +42,10 @@ func (c *PurchaseHandler) OnOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi } func (c *PurchaseHandler) onOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) { + status := c.callbackMsg2Status(msg) + if partner.CurOrderManager.GetStatusDuplicatedCount(status) > 0 { + return nil + } if msg.MsgURL == jdapi.CallbackMsgOrderAccounting { retVal = c.OnFinancialMsg(msg) } else if msg.MsgURL == jdapi.CallbackMsgAfterSaleBillStatus { @@ -53,7 +57,6 @@ func (c *PurchaseHandler) onOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi } else if jdapi.OrderStatusAdjust == msg.StatusID { retVal = c.onOrderAdjust(msg) } else { - status := c.callbackMsg2Status(msg) if msg.StatusID == jdapi.OrderStatusAddComment || msg.StatusID == jdapi.OrderStatusModifyComment { utils.CallFuncAsync(func() { c.onOrderComment2(msg) diff --git a/business/partner/purchase/mtwm/order.go b/business/partner/purchase/mtwm/order.go index 125db6fba..54ca42174 100644 --- a/business/partner/purchase/mtwm/order.go +++ b/business/partner/purchase/mtwm/order.go @@ -184,6 +184,10 @@ func (c *PurchaseHandler) onOrderMsg(msg *mtwmapi.CallbackMsg) (response *mtwmap if c.isAfsMsg(msg) { response = c.OnAfsOrderMsg(msg) } else { + status := c.callbackMsg2Status(msg) + if partner.CurOrderManager.GetStatusDuplicatedCount(status) > 0 { + return nil + } if msg.Cmd == mtwmapi.MsgTypeNewOrder { order, orderMap, err2 := c.getOrder(GetOrderIDFromMsg(msg)) if err = err2; err == nil { @@ -199,7 +203,7 @@ func (c *PurchaseHandler) onOrderMsg(msg *mtwmapi.CallbackMsg) (response *mtwmap } } } else { - if status := c.callbackMsg2Status(msg); status != nil { + if status != nil { if status.Status == model.OrderStatusAdjust { var order *model.GoodsOrder if order, err = c.GetOrder(GetOrderIDFromMsg(msg)); err == nil {