- avoid savedOrderInfo is nil.
- change conf.
This commit is contained in:
@@ -78,19 +78,20 @@ func (s *DefScheduler) OnOrderNew(order *model.GoodsOrder) (err error) {
|
||||
|
||||
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)
|
||||
gap := 0 * time.Second
|
||||
if status.Status == model.OrderStatusAccepted {
|
||||
gap = time.Duration(rand.Int63n(int64(time2AutoPickupGap)))
|
||||
} else if status.Status == model.OrderStatusFinishedPickup {
|
||||
gap = time2Schedule3rdCarrierGap4OrderStatus
|
||||
if savedOrderInfo := s.loadWatchOrderFromMap(status.VendorOrderID, status.VendorID); savedOrderInfo != nil {
|
||||
if status.Status > model.OrderStatusUnknown && status.Status < model.OrderStatusEndBegin {
|
||||
s.updateOrderByStatus(savedOrderInfo.order, status)
|
||||
gap := 0 * time.Second
|
||||
if status.Status == model.OrderStatusAccepted {
|
||||
gap = time.Duration(rand.Int63n(int64(time2AutoPickupGap)))
|
||||
} else if status.Status == model.OrderStatusFinishedPickup {
|
||||
gap = time2Schedule3rdCarrierGap4OrderStatus
|
||||
}
|
||||
s.resetTimer(status.Status, savedOrderInfo, gap)
|
||||
} else {
|
||||
s.stopTimer(savedOrderInfo)
|
||||
s.orderMap.Delete(jxutils.GetUniversalOrderIDFromOrderStatus(status))
|
||||
}
|
||||
s.resetTimer(status.Status, savedOrderInfo, gap)
|
||||
} else {
|
||||
s.stopTimer(savedOrderInfo)
|
||||
s.orderMap.Delete(jxutils.GetUniversalOrderIDFromOrderStatus(status))
|
||||
}
|
||||
return err
|
||||
}
|
||||
@@ -98,55 +99,56 @@ 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)
|
||||
s.addWaybill2Map(savedOrderInfo, bill) // 这样写的原因是因为调试时,程度从中途运行,没有接受到WaybillStatusNew事件
|
||||
if bill.Status == model.WaybillStatusNew {
|
||||
if bill.OrderVendorID == bill.WaybillVendorID {
|
||||
if savedOrderInfo.timerStatus == model.OrderStatusFinishedPickup {
|
||||
s.resetTimer(model.OrderStatusFinishedPickup, savedOrderInfo, 0)
|
||||
} else {
|
||||
globals.SugarLogger.Infof("OnWaybillStatusChanged met other timer, status:%d", savedOrderInfo.timerStatus)
|
||||
if savedOrderInfo := s.loadWatchOrderFromMap(bill.VendorOrderID, bill.OrderVendorID); savedOrderInfo != nil {
|
||||
s.addWaybill2Map(savedOrderInfo, bill) // 这样写的原因是因为调试时,程度从中途运行,没有接受到WaybillStatusNew事件
|
||||
if bill.Status == model.WaybillStatusNew {
|
||||
if bill.OrderVendorID == bill.WaybillVendorID {
|
||||
if savedOrderInfo.timerStatus == model.OrderStatusFinishedPickup {
|
||||
s.resetTimer(model.OrderStatusFinishedPickup, savedOrderInfo, 0)
|
||||
} else {
|
||||
globals.SugarLogger.Infof("OnWaybillStatusChanged met other timer, status:%d", savedOrderInfo.timerStatus)
|
||||
}
|
||||
}
|
||||
}
|
||||
if savedOrderInfo.order.WaybillVendorID != model.VendorIDUnknown {
|
||||
globals.SugarLogger.Infof("OnWaybillStatusChanged multiple waybill created, bill:%v", bill)
|
||||
if bill.WaybillVendorID != bill.WaybillVendorID {
|
||||
s.GetDeliveryPlatformFromVendorID(bill.WaybillVendorID).CancelWaybill(bill)
|
||||
if savedOrderInfo.order.WaybillVendorID != model.VendorIDUnknown {
|
||||
globals.SugarLogger.Infof("OnWaybillStatusChanged multiple waybill created, bill:%v", bill)
|
||||
if bill.WaybillVendorID != bill.WaybillVendorID {
|
||||
s.GetDeliveryPlatformFromVendorID(bill.WaybillVendorID).CancelWaybill(bill)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
switch bill.Status {
|
||||
case model.WaybillStatusAccepted:
|
||||
s.stopTimer(savedOrderInfo) // todo 这里应该另外启动一个TIMER
|
||||
s.cancelOtherWaybills(savedOrderInfo, bill)
|
||||
} else {
|
||||
switch bill.Status {
|
||||
case model.WaybillStatusAccepted:
|
||||
s.stopTimer(savedOrderInfo) // todo 这里应该另外启动一个TIMER
|
||||
s.cancelOtherWaybills(savedOrderInfo, bill)
|
||||
|
||||
s.CurOrderManager.UpdateWaybillVendorID(bill)
|
||||
savedOrderInfo.order.WaybillVendorID = bill.WaybillVendorID
|
||||
case model.WaybillStatusAcceptCanceled:
|
||||
s.createWaybillOn3rdProviders(savedOrderInfo.order, bill)
|
||||
if savedOrderInfo.order.WaybillVendorID == bill.WaybillVendorID {
|
||||
bill.WaybillVendorID = model.VendorIDUnknown
|
||||
s.CurOrderManager.UpdateWaybillVendorID(bill)
|
||||
savedOrderInfo.order.WaybillVendorID = bill.WaybillVendorID
|
||||
}
|
||||
case model.WaybillStatusCanceled, model.WaybillStatusFailed:
|
||||
s.removeWaybillFromMap(savedOrderInfo, bill)
|
||||
if savedOrderInfo.order.WaybillVendorID == bill.WaybillVendorID {
|
||||
s.createWaybillOn3rdProviders(savedOrderInfo.order, nil)
|
||||
case model.WaybillStatusAcceptCanceled:
|
||||
s.createWaybillOn3rdProviders(savedOrderInfo.order, bill)
|
||||
if savedOrderInfo.order.WaybillVendorID == bill.WaybillVendorID {
|
||||
bill.WaybillVendorID = model.VendorIDUnknown
|
||||
s.CurOrderManager.UpdateWaybillVendorID(bill)
|
||||
savedOrderInfo.order.WaybillVendorID = bill.WaybillVendorID
|
||||
}
|
||||
case model.WaybillStatusCanceled, model.WaybillStatusFailed:
|
||||
s.removeWaybillFromMap(savedOrderInfo, bill)
|
||||
if savedOrderInfo.order.WaybillVendorID == bill.WaybillVendorID {
|
||||
s.createWaybillOn3rdProviders(savedOrderInfo.order, nil)
|
||||
|
||||
bill.WaybillVendorID = model.VendorIDUnknown
|
||||
s.CurOrderManager.UpdateWaybillVendorID(bill)
|
||||
savedOrderInfo.order.WaybillVendorID = bill.WaybillVendorID
|
||||
bill.WaybillVendorID = model.VendorIDUnknown
|
||||
s.CurOrderManager.UpdateWaybillVendorID(bill)
|
||||
savedOrderInfo.order.WaybillVendorID = bill.WaybillVendorID
|
||||
}
|
||||
case model.WaybillStatusDelivering:
|
||||
if savedOrderInfo.order.VendorID != bill.WaybillVendorID {
|
||||
s.GetPurchasePlatformFromVendorID(bill.OrderVendorID).SelfDeliverDelievering(savedOrderInfo.order)
|
||||
}
|
||||
case model.WaybillStatusDelivered:
|
||||
if savedOrderInfo.order.VendorID != bill.WaybillVendorID {
|
||||
s.GetPurchasePlatformFromVendorID(bill.OrderVendorID).SelfDeliverDelievered(savedOrderInfo.order)
|
||||
}
|
||||
s.removeWaybillFromMap(savedOrderInfo, bill)
|
||||
}
|
||||
case model.WaybillStatusDelivering:
|
||||
if savedOrderInfo.order.VendorID != bill.WaybillVendorID {
|
||||
s.GetPurchasePlatformFromVendorID(bill.OrderVendorID).SelfDeliverDelievering(savedOrderInfo.order)
|
||||
}
|
||||
case model.WaybillStatusDelivered:
|
||||
if savedOrderInfo.order.VendorID != bill.WaybillVendorID {
|
||||
s.GetPurchasePlatformFromVendorID(bill.OrderVendorID).SelfDeliverDelievered(savedOrderInfo.order)
|
||||
}
|
||||
s.removeWaybillFromMap(savedOrderInfo, bill)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
@@ -226,10 +228,12 @@ func (s *DefScheduler) removeWaybillFromMap(savedOrderInfo *WatchOrderInfo, bill
|
||||
if savedOrderInfo == nil {
|
||||
savedOrderInfo = s.loadWatchOrderFromMap(bill.VendorOrderID, bill.OrderVendorID)
|
||||
}
|
||||
for k, v := range savedOrderInfo.waybills {
|
||||
if v.VendorWaybillID == bill.VendorWaybillID && v.WaybillVendorID == bill.WaybillVendorID {
|
||||
savedOrderInfo.waybills = append(savedOrderInfo.waybills[0:k], savedOrderInfo.waybills[k+1:]...)
|
||||
break
|
||||
if savedOrderInfo != nil {
|
||||
for k, v := range savedOrderInfo.waybills {
|
||||
if v.VendorWaybillID == bill.VendorWaybillID && v.WaybillVendorID == bill.WaybillVendorID {
|
||||
savedOrderInfo.waybills = append(savedOrderInfo.waybills[0:k], savedOrderInfo.waybills[k+1:]...)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,8 +42,6 @@ weixinSecret = "ba32b269a068a5b72486a0beafd171e8"
|
||||
|
||||
dbConnectStr = "root:WebServer@1@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8&loc=Local"
|
||||
|
||||
callLegacy = false
|
||||
|
||||
[prod]
|
||||
freshFoodServerURL = "http://portal.int.jxc4.com"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user