From a76269a4e9b54e328bff931404a16db27009bf63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 8 Nov 2023 15:14:39 +0800 Subject: [PATCH] 1 --- .../partner/purchase/tiktok_store/waybill.go | 65 +++++++++++-------- 1 file changed, 37 insertions(+), 28 deletions(-) diff --git a/business/partner/purchase/tiktok_store/waybill.go b/business/partner/purchase/tiktok_store/waybill.go index 4427900fa..a9a6ec786 100644 --- a/business/partner/purchase/tiktok_store/waybill.go +++ b/business/partner/purchase/tiktok_store/waybill.go @@ -39,37 +39,46 @@ func (p *PurchaseHandler) GetWaybillStatusFromVendorStatus(vendorStatus string) func (c *PurchaseHandler) onWaybillMsg(tag, orderId string, data interface{}) *tiktok_api.CallbackResponse { waybill := c.callbackMsg2Waybill(tag, orderId, data) - if localOrder, err := partner.CurOrderManager.LoadOrder(waybill.VendorOrderID, model.VendorIDDD); err == nil { - err := partner.CurOrderManager.OnWaybillStatusChanged(waybill) - if err == nil { - status := &model.OrderStatus{ - VendorOrderID: waybill.VendorOrderID, - VendorID: model.VendorIDDD, - OrderType: model.OrderTypeWaybill, - RefVendorOrderID: waybill.VendorOrderID, - RefVendorID: model.VendorIDDD, - Status: waybill.Status, - VendorStatus: waybill.VendorStatus, - StatusTime: time.Now(), - DuplicatedCount: 0, - Remark: "", - ModelTimeInfo: model.ModelTimeInfo{ - CreatedAt: time.Now(), - UpdatedAt: time.Now(), - }, - } - err = partner.CurOrderManager.OnOrderStatusChanged(localOrder.VendorOrgCode, status) - if err != nil { - partner.CurOrderManager.OnOrderMsg(localOrder, "", "抖店运单骑手状态修改异常:"+err.Error()) - } - if status.VendorStatus == utils.Int2Str(tiktok_api.ShipmentStatusCanceled) { - localOrder.Status = model.WaybillStatusCourierArrived - dao.UpdateEntity(dao.GetDB(), localOrder, "Status") + localOrder, _ := partner.CurOrderManager.LoadOrder(waybill.VendorOrderID, model.VendorIDDD) + // 当前订单的运力状态发生变化时,抖店侧会对open侧推送消息。当前运力状态变化的原因有两个来源:1:呼叫平台运力,平台运力有变化,此时会推送消息;2:商家自配,erp通过回传配送状态触发运力状态变化,此时也会推送消息 + // 问题:当前两种消息来源是没有区分的,都是统一发送消息,但erp侧针对不同的情况有特殊处理,因此需要区分这两种消息 + // 当本地记录骑手数据(非抖音平台运单)与当前运单匹配上是,就直接返回 + if waybill.CourierName != "" && waybill.CourierMobile != "" { + localWaybill, _ := dao.GetWaybills(dao.GetDB(), localOrder.VendorOrderID, nil) + for _, v := range localWaybill { + if v.CourierName != "" && v.CourierMobile != "" && v.WaybillVendorID != model.VendorIDDD && v.CourierName == waybill.CourierName && v.CourierMobile == waybill.CourierMobile { + return tiktok_api.Err2CallbackResponse(nil, "") } } - return tiktok_api.Err2CallbackResponse(err, "") } - return tiktok_api.Err2CallbackResponse(nil, "") + err := partner.CurOrderManager.OnWaybillStatusChanged(waybill) + if err == nil { + status := &model.OrderStatus{ + VendorOrderID: waybill.VendorOrderID, + VendorID: model.VendorIDDD, + OrderType: model.OrderTypeWaybill, + RefVendorOrderID: waybill.VendorOrderID, + RefVendorID: model.VendorIDDD, + Status: waybill.Status, + VendorStatus: waybill.VendorStatus, + StatusTime: time.Now(), + DuplicatedCount: 0, + Remark: "", + ModelTimeInfo: model.ModelTimeInfo{ + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + }, + } + err = partner.CurOrderManager.OnOrderStatusChanged(localOrder.VendorOrgCode, status) + if err != nil { + partner.CurOrderManager.OnOrderMsg(localOrder, "", "抖店运单骑手状态修改异常:"+err.Error()) + } + if status.VendorStatus == utils.Int2Str(tiktok_api.ShipmentStatusCanceled) { + localOrder.Status = model.WaybillStatusCourierArrived + dao.UpdateEntity(dao.GetDB(), localOrder, "Status") + } + } + return tiktok_api.Err2CallbackResponse(err, "") } func (c *PurchaseHandler) callbackMsg2Waybill(tag, orderId string, data interface{}) (retVal *model.Waybill) {