- debug info added for shceduler.
This commit is contained in:
@@ -69,12 +69,13 @@ func (s *DefScheduler) OnOrderNew(order *model.GoodsOrder) (err error) {
|
||||
watchInfo := &WatchOrderInfo{
|
||||
order: order,
|
||||
}
|
||||
s.resetTimer(model.OrderStatusNew, watchInfo, 0)
|
||||
s.orderMap.Store(jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID), watchInfo)
|
||||
s.resetTimer(model.OrderStatusNew, watchInfo, 0)
|
||||
return err
|
||||
}
|
||||
|
||||
func (s *DefScheduler) OnOrderStatusChanged(status *model.OrderStatus) (err error) {
|
||||
globals.SugarLogger.Debugf("OnOrderStatusChanged, status:%v", status)
|
||||
savedOrderInfo := s.loadWatchOrderFromMap(status.VendorOrderID, status.VendorID)
|
||||
if status.Status > model.OrderStatusUnknown && status.Status < model.OrderStatusEndBegin {
|
||||
s.updateOrderByStatus(savedOrderInfo.order, status)
|
||||
@@ -94,11 +95,12 @@ func (s *DefScheduler) OnOrderStatusChanged(status *model.OrderStatus) (err erro
|
||||
|
||||
// 以下是运单
|
||||
func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill) (err error) {
|
||||
globals.SugarLogger.Debugf("OnWaybillStatusChanged, bill:%v", bill)
|
||||
savedOrderInfo := s.loadWatchOrderFromMap(bill.VendorOrderID, bill.OrderVendorID)
|
||||
if bill.Status == model.WaybillStatusNew {
|
||||
if savedOrderInfo.order.WaybillVendorID == model.VendorIDUnknown {
|
||||
s.resetTimer(model.OrderStatusFinishedPickup, savedOrderInfo, 0)
|
||||
err = s.addWaybill2Map(bill)
|
||||
err = s.addWaybill2Map(savedOrderInfo, bill)
|
||||
} else {
|
||||
globals.SugarLogger.Infof("OnWaybillStatusChanged multiple waybill created, bill:%v", bill)
|
||||
if bill.WaybillVendorID != bill.OrderVendorID {
|
||||
@@ -117,7 +119,7 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill) (err error) {
|
||||
switch bill.Status {
|
||||
case model.WaybillStatusAccepted:
|
||||
s.stopTimer(savedOrderInfo) // todo 这里应该另外启动一个TIMER
|
||||
s.cancelOtherWaybills(bill)
|
||||
s.cancelOtherWaybills(savedOrderInfo, bill)
|
||||
|
||||
s.CurOrderManager.UpdateWaybillVendorID(bill)
|
||||
savedOrderInfo.order.WaybillVendorID = bill.WaybillVendorID
|
||||
@@ -129,7 +131,7 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill) (err error) {
|
||||
savedOrderInfo.order.WaybillVendorID = bill.WaybillVendorID
|
||||
}
|
||||
case model.WaybillStatusCanceled, model.WaybillStatusFailed:
|
||||
s.removeWaybillFromMap(bill, savedOrderInfo)
|
||||
s.removeWaybillFromMap(savedOrderInfo, bill)
|
||||
if savedOrderInfo.order.WaybillVendorID == bill.WaybillVendorID {
|
||||
s.createWaybillOn3rdProviders(savedOrderInfo.order, nil)
|
||||
|
||||
@@ -145,7 +147,7 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill) (err error) {
|
||||
if savedOrderInfo.order.VendorID != bill.WaybillVendorID {
|
||||
s.GetPurchasePlatformFromVendorID(bill.OrderVendorID).SelfDeliverDelievered(savedOrderInfo.order)
|
||||
}
|
||||
s.removeWaybillFromMap(bill, savedOrderInfo)
|
||||
s.removeWaybillFromMap(savedOrderInfo, bill)
|
||||
}
|
||||
} else {
|
||||
globals.SugarLogger.Infof("OnWaybillStatusChanged can not find bill:%v in saved info", bill)
|
||||
@@ -154,8 +156,7 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *DefScheduler) addWaybill2Map(bill *model.Waybill) (err error) {
|
||||
savedOrderInfo := s.loadWatchOrderFromMap(bill.VendorOrderID, bill.OrderVendorID)
|
||||
func (s *DefScheduler) addWaybill2Map(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) {
|
||||
for _, v := range savedOrderInfo.waybills {
|
||||
if v.VendorWaybillID == bill.VendorWaybillID && v.WaybillVendorID == bill.WaybillVendorID {
|
||||
// 如果已经存在,不做处理
|
||||
@@ -182,8 +183,7 @@ func (s *DefScheduler) createWaybillOn3rdProviders(order *model.GoodsOrder, excl
|
||||
return scheduler.ErrCanNotCreateAtLeastOneWaybill
|
||||
}
|
||||
|
||||
func (s *DefScheduler) cancelOtherWaybills(bill *model.Waybill) (err error) {
|
||||
savedOrderInfo := s.loadWatchOrderFromMap(bill.VendorOrderID, bill.OrderVendorID)
|
||||
func (s *DefScheduler) cancelOtherWaybills(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) {
|
||||
for _, v := range savedOrderInfo.waybills {
|
||||
if v.WaybillVendorID != bill.OrderVendorID && !(v.WaybillVendorID == bill.WaybillVendorID && v.VendorWaybillID == bill.VendorWaybillID) {
|
||||
_ = s.GetDeliveryPlatformFromVendorID(v.WaybillVendorID).CancelWaybill(v)
|
||||
@@ -199,7 +199,7 @@ func (s *DefScheduler) swtich2SelfDeliverWithRetry(bill *model.Waybill, retryCou
|
||||
utils.CallFuncRetryAsync(func(index int) error {
|
||||
err := s.GetPurchasePlatformFromVendorID(bill.OrderVendorID).Swtich2SelfDeliver(bill.VendorOrderID)
|
||||
if err == nil {
|
||||
s.removeWaybillFromMap(bill, nil) // todo 是否在这里删除运单,还是在运单事件里处理更好些?
|
||||
s.removeWaybillFromMap(nil, bill) // todo 是否在这里删除运单,还是在运单事件里处理更好些?
|
||||
} else if index == 0 {
|
||||
// 如果购买平台转商家自送失败,最终还是要取消3方物流
|
||||
s.GetDeliveryPlatformFromVendorID(bill.WaybillVendorID).CancelWaybill(bill)
|
||||
@@ -227,7 +227,7 @@ func (s *DefScheduler) loadWatchOrderFromMap(vendorOrderID string, vendorID int)
|
||||
return realSavedInfo
|
||||
}
|
||||
|
||||
func (s *DefScheduler) removeWaybillFromMap(bill *model.Waybill, savedOrderInfo *WatchOrderInfo) {
|
||||
func (s *DefScheduler) removeWaybillFromMap(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) {
|
||||
if savedOrderInfo == nil {
|
||||
savedOrderInfo = s.loadWatchOrderFromMap(bill.VendorOrderID, bill.OrderVendorID)
|
||||
}
|
||||
@@ -248,12 +248,14 @@ func (s *DefScheduler) getLatestPickupTimeout(order *model.GoodsOrder, configTim
|
||||
}
|
||||
|
||||
func (s *DefScheduler) stopTimer(savedOrderInfo *WatchOrderInfo) {
|
||||
globals.SugarLogger.Debugf("stopTimer orderid:%v", savedOrderInfo.order.VendorOrderID)
|
||||
if savedOrderInfo.timer != nil {
|
||||
savedOrderInfo.timer.Stop()
|
||||
}
|
||||
}
|
||||
|
||||
func (s *DefScheduler) resetTimer(status int, savedOrderInfo *WatchOrderInfo, gap time.Duration) {
|
||||
globals.SugarLogger.Debugf("resetTimer status:%v", status)
|
||||
s.stopTimer(savedOrderInfo)
|
||||
config := s.mergeOrderStatusConfig(status, s.GetPurchasePlatformFromVendorID(savedOrderInfo.order.VendorID).GetStatusActionConfig(status))
|
||||
if config != nil && config.TimeoutAction != nil {
|
||||
|
||||
Reference in New Issue
Block a user