- debug info added for shceduler.

This commit is contained in:
gazebo
2018-07-19 15:01:07 +08:00
parent dff1cdd730
commit b2fe831504

View File

@@ -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 {