- fixed get latest order status bug.
- add GoodsOrder.VendorWaybillID.
This commit is contained in:
@@ -143,11 +143,11 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
|
||||
}
|
||||
if bill.Status == model.WaybillStatusNew {
|
||||
s.addWaybill2Map(savedOrderInfo, bill)
|
||||
if order.WaybillVendorID != model.VendorIDUnknown && order.WaybillVendorID != bill.WaybillVendorID {
|
||||
globals.SugarLogger.Infof("OnWaybillStatusChanged multiple waybill created, bill:%v", bill)
|
||||
if bill.WaybillVendorID != bill.WaybillVendorID {
|
||||
if order.WaybillVendorID != model.VendorIDUnknown {
|
||||
globals.SugarLogger.Debugf("OnWaybillStatusChanged multiple waybill created, bill:%v", bill)
|
||||
if !(order.WaybillVendorID == bill.WaybillVendorID && order.VendorWaybillID == bill.VendorWaybillID) && bill.WaybillVendorID != order.VendorID {
|
||||
s.CancelWaybill(bill)
|
||||
} else {
|
||||
} else if bill.WaybillVendorID == order.VendorID {
|
||||
globals.SugarLogger.Warnf("OnWaybillStatusChanged bill:%v purchase platform bill came later than others, strange!!!", bill)
|
||||
}
|
||||
}
|
||||
@@ -164,7 +164,7 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
|
||||
}
|
||||
s.resetTimer(savedOrderInfo, scheduler.TimerStatusTypeWaybill, bill.Status, false)
|
||||
case model.WaybillStatusAcceptCanceled:
|
||||
if order.WaybillVendorID == bill.WaybillVendorID {
|
||||
if order.WaybillVendorID == bill.WaybillVendorID && order.VendorWaybillID == bill.VendorWaybillID {
|
||||
bill.WaybillVendorID = model.VendorIDUnknown
|
||||
s.updateOrderByBill(order, bill, false)
|
||||
|
||||
@@ -175,14 +175,15 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
|
||||
globals.SugarLogger.Warnf("OnWaybillStatusChanged AcceptCanceled orderID:%s got multiple bill:%v, order details:%v", order.VendorOrderID, bill, order)
|
||||
}
|
||||
case model.WaybillStatusCourierArrived: // do nothing
|
||||
if order.WaybillVendorID == bill.WaybillVendorID {
|
||||
if order.WaybillVendorID == bill.WaybillVendorID && order.VendorWaybillID == bill.VendorWaybillID {
|
||||
} else {
|
||||
// s.CancelWaybill(bill)
|
||||
globals.SugarLogger.Warnf("OnWaybillStatusChanged CourierArrived bill:%v shouldn't got here", bill)
|
||||
}
|
||||
s.resetTimer(savedOrderInfo, scheduler.TimerStatusTypeWaybill, bill.Status, false)
|
||||
case model.WaybillStatusFailed: // todo WaybillStatusFailed理解成订单整个失败了,不需要再尝试创建运单了,注意这里应该加个zabbix日志的报警
|
||||
s.removeWaybillFromMap(savedOrderInfo, bill)
|
||||
if order.WaybillVendorID == bill.WaybillVendorID {
|
||||
if order.WaybillVendorID == bill.WaybillVendorID && order.VendorWaybillID == bill.VendorWaybillID {
|
||||
globals.SugarLogger.Infof("OnWaybillStatusChanged WaybillStatusFailed, bill:%v", bill)
|
||||
if order.WaybillVendorID == bill.WaybillVendorID {
|
||||
bill.WaybillVendorID = model.VendorIDUnknown
|
||||
@@ -194,7 +195,7 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
|
||||
}
|
||||
case model.WaybillStatusCanceled:
|
||||
s.removeWaybillFromMap(savedOrderInfo, bill)
|
||||
if order.WaybillVendorID == bill.WaybillVendorID {
|
||||
if order.WaybillVendorID == bill.WaybillVendorID && order.VendorWaybillID == bill.VendorWaybillID {
|
||||
bill.WaybillVendorID = model.VendorIDUnknown
|
||||
s.updateOrderByBill(order, bill, true)
|
||||
|
||||
@@ -207,17 +208,18 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
|
||||
s.resetTimer(savedOrderInfo, scheduler.TimerStatusTypeWaybill, bill.Status, false)
|
||||
}
|
||||
case model.WaybillStatusDelivering:
|
||||
if order.WaybillVendorID == bill.WaybillVendorID {
|
||||
if order.WaybillVendorID == bill.WaybillVendorID && order.VendorWaybillID == bill.VendorWaybillID {
|
||||
if order.VendorID != bill.WaybillVendorID {
|
||||
s.SelfDeliverDelievering(order)
|
||||
}
|
||||
} else {
|
||||
// s.CancelWaybill(bill)
|
||||
globals.SugarLogger.Warnf("OnWaybillStatusChanged Delivering bill:%v shouldn't got here", bill)
|
||||
}
|
||||
s.resetTimer(savedOrderInfo, scheduler.TimerStatusTypeWaybill, bill.Status, false)
|
||||
case model.WaybillStatusDelivered:
|
||||
s.removeWaybillFromMap(savedOrderInfo, bill)
|
||||
if order.WaybillVendorID == bill.WaybillVendorID {
|
||||
if order.WaybillVendorID == bill.WaybillVendorID && order.VendorWaybillID == bill.VendorWaybillID {
|
||||
if order.VendorID != bill.WaybillVendorID {
|
||||
s.SelfDeliverDelievered(order)
|
||||
}
|
||||
@@ -276,15 +278,15 @@ func (s *DefScheduler) createWaybillOn3rdProviders(order *model.GoodsOrder, excl
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *DefScheduler) cancelOtherWaybills(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) {
|
||||
globals.SugarLogger.Debugf("cancelOtherWaybills, orderID:%s, bill:%v", savedOrderInfo.order.VendorOrderID, bill)
|
||||
func (s *DefScheduler) cancelOtherWaybills(savedOrderInfo *WatchOrderInfo, bill2Keep *model.Waybill) (err error) {
|
||||
globals.SugarLogger.Debugf("cancelOtherWaybills, orderID:%s, bill:%v", savedOrderInfo.order.VendorOrderID, bill2Keep)
|
||||
for _, v := range savedOrderInfo.waybills {
|
||||
if (v.OrderVendorID != v.WaybillVendorID) && (bill == nil || !(v.WaybillVendorID == bill.WaybillVendorID && v.VendorWaybillID == bill.VendorWaybillID)) {
|
||||
if (v.OrderVendorID != v.WaybillVendorID) && (bill2Keep == nil || !(v.WaybillVendorID == bill2Keep.WaybillVendorID && v.VendorWaybillID == bill2Keep.VendorWaybillID)) {
|
||||
s.CancelWaybill(v)
|
||||
}
|
||||
}
|
||||
if bill != nil && bill.WaybillVendorID != bill.OrderVendorID {
|
||||
s.swtich2SelfDeliverWithRetry(savedOrderInfo.order, bill, 2, 10*time.Second)
|
||||
if bill2Keep != nil && bill2Keep.WaybillVendorID != bill2Keep.OrderVendorID {
|
||||
s.swtich2SelfDeliverWithRetry(savedOrderInfo.order, bill2Keep, 2, 10*time.Second)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -469,6 +471,9 @@ func (s *DefScheduler) isOrderSupport3rdDelivery(order *model.GoodsOrder) (retVa
|
||||
}
|
||||
|
||||
func (s *DefScheduler) updateOrderByBill(order *model.GoodsOrder, bill *model.Waybill, revertStatus bool) {
|
||||
if bill.WaybillVendorID == model.VendorIDUnknown {
|
||||
bill.VendorWaybillID = ""
|
||||
}
|
||||
s.CurOrderManager.UpdateWaybillVendorID(bill, revertStatus)
|
||||
order.WaybillVendorID = bill.WaybillVendorID
|
||||
if revertStatus {
|
||||
|
||||
Reference in New Issue
Block a user