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