diff --git a/business/jxcallback/scheduler/basesch/basesch.go b/business/jxcallback/scheduler/basesch/basesch.go index 412037d9f..337cf11be 100644 --- a/business/jxcallback/scheduler/basesch/basesch.go +++ b/business/jxcallback/scheduler/basesch/basesch.go @@ -160,11 +160,14 @@ func (c *BaseScheduler) CreateWaybill(platformVendorID int, order *model.GoodsOr func (c *BaseScheduler) CancelWaybill(bill *model.Waybill, cancelReasonID int, cancelReason string) (err error) { globals.SugarLogger.Infof("CancelWaybill bill:%v, cancelReasonID:%d cancelReason:%s", bill, cancelReasonID, cancelReason) - if c.IsReallyCallPlatformAPI && bill.OrderVendorID != bill.WaybillVendorID { + // 部分快递平台在取消成功后有时会不发运单取消消息过来(比如达达,904200512000442),为避免二次取消报错,添加状态判断 + if c.IsReallyCallPlatformAPI && bill.OrderVendorID != bill.WaybillVendorID && bill.Status != model.WaybillStatusCanceled { if handlerInfo := partner.GetDeliveryPlatformFromVendorID(bill.WaybillVendorID); handlerInfo != nil { - err = utils.CallFuncLogError(func() error { + if err = utils.CallFuncLogError(func() error { return handlerInfo.Handler.CancelWaybill(bill, cancelReasonID, cancelReason) - }, "CancelWaybill bill:%v", bill) + }, "CancelWaybill bill:%v", bill); err == nil { + bill.Status = model.WaybillStatusCanceled + } globals.SugarLogger.Debugf("CancelWaybill bill:%v canceled by myself", bill) } }