- handle exceptional msg(e.g. userapplycancel, lock, unlock).
This commit is contained in:
@@ -208,15 +208,20 @@ func (s *DefScheduler) OnOrderNew(order *model.GoodsOrder, isPending bool) (err
|
||||
return err
|
||||
}
|
||||
|
||||
// todo 这个接口应该可以直接传order的,因为在OrderManager中每次都生成了
|
||||
func (s *DefScheduler) OnOrderStatusChanged(status *model.OrderStatus, isPending bool) (err error) {
|
||||
if status.Status > model.OrderStatusUnknown { // 只处理状态转换,一般消息不处理
|
||||
if status.LockStatus != model.OrderStatusUnknown || status.Status > model.OrderStatusUnknown {
|
||||
globals.SugarLogger.Debugf("OnOrderStatusChanged orderID:%s %s, status:%v", status.VendorOrderID, model.OrderStatusName[status.Status], status)
|
||||
savedOrderInfo := s.loadSavedOrderFromMap(status, true)
|
||||
s.updateOrderByStatus(savedOrderInfo.order, status)
|
||||
s.resetTimer(savedOrderInfo, nil, isPending)
|
||||
if status.Status >= model.OrderStatusEndBegin {
|
||||
s.cancelOtherWaybills(savedOrderInfo, nil)
|
||||
s.orderMap.Delete(jxutils.GetUniversalOrderIDFromOrderStatus(status))
|
||||
if status.LockStatus == model.OrderStatusUnknown && status.Status > model.OrderStatusUnknown { // 只处理状态转换,一般消息不处理
|
||||
s.resetTimer(savedOrderInfo, nil, isPending)
|
||||
if status.Status >= model.OrderStatusEndBegin {
|
||||
s.cancelOtherWaybills(savedOrderInfo, nil)
|
||||
s.orderMap.Delete(jxutils.GetUniversalOrderIDFromOrderStatus(status))
|
||||
}
|
||||
} else if status.LockStatus != model.OrderStatusUnknown {
|
||||
s.stopTimer(savedOrderInfo)
|
||||
}
|
||||
}
|
||||
return err
|
||||
@@ -367,7 +372,7 @@ func (s *DefScheduler) removeWaybillFromMap(savedOrderInfo *WatchOrderInfo, bill
|
||||
func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInfo, excludeBill *model.Waybill) (err error) {
|
||||
order := savedOrderInfo.order
|
||||
globals.SugarLogger.Debugf("createWaybillOn3rdProviders, orderID:%s, status:%d, excludeBill:%v", order.VendorOrderID, order.Status, excludeBill)
|
||||
if order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin { // 订单在配送中被取消时就是配送中状态
|
||||
if order.LockStatus == model.OrderStatusUnknown && order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin { // 订单在配送中被取消时就是配送中状态
|
||||
if savedOrderInfo.isNeed3rdDelivery {
|
||||
savedOrderInfo.retryCount++
|
||||
if savedOrderInfo.retryCount <= maxWaybillRetryCount {
|
||||
@@ -612,6 +617,7 @@ func (s *DefScheduler) updateOrderByStatus(order *model.GoodsOrder, status *mode
|
||||
order.Status = status.Status
|
||||
order.VendorStatus = status.VendorStatus
|
||||
order.StatusTime = status.StatusTime
|
||||
order.LockStatus = status.LockStatus
|
||||
return order
|
||||
}
|
||||
|
||||
|
||||
@@ -133,7 +133,7 @@ func (c *BaseScheduler) GetDeliveryPlatformFromVendorID(vendorID int) *DeliveryP
|
||||
|
||||
func (c *BaseScheduler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool) (err error) {
|
||||
globals.SugarLogger.Infof("AcceptOrRefuseOrder orderID:%s, isAcceptIt:%t", order.VendorOrderID, isAcceptIt)
|
||||
if order.Status == model.OrderStatusNew {
|
||||
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusNew {
|
||||
if c.IsReallyCallPlatformAPI {
|
||||
err = utils.CallFuncLogErrorWithInfo(func() error {
|
||||
return c.GetPurchasePlatformFromVendorID(order.VendorID).AcceptOrRefuseOrder(order, isAcceptIt)
|
||||
@@ -146,7 +146,7 @@ func (c *BaseScheduler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt
|
||||
}
|
||||
func (c *BaseScheduler) PickupGoods(order *model.GoodsOrder) (err error) {
|
||||
globals.SugarLogger.Infof("PickupGoods orderID:%s", order.VendorOrderID)
|
||||
if order.Status == model.OrderStatusAccepted {
|
||||
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusAccepted {
|
||||
if c.IsReallyCallPlatformAPI {
|
||||
err = utils.CallFuncLogErrorWithInfo(func() error {
|
||||
return c.GetPurchasePlatformFromVendorID(order.VendorID).PickupGoods(order)
|
||||
@@ -160,7 +160,7 @@ func (c *BaseScheduler) PickupGoods(order *model.GoodsOrder) (err error) {
|
||||
|
||||
func (c *BaseScheduler) Swtich2SelfDeliver(order *model.GoodsOrder) (err error) {
|
||||
globals.SugarLogger.Infof("Swtich2SelfDeliver orderID:%s", order.VendorOrderID)
|
||||
if order.Status == model.OrderStatusFinishedPickup {
|
||||
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusFinishedPickup {
|
||||
if c.IsReallyCallPlatformAPI {
|
||||
err = utils.CallFuncLogErrorWithInfo(func() error {
|
||||
return c.GetPurchasePlatformFromVendorID(order.VendorID).Swtich2SelfDeliver(order)
|
||||
@@ -174,7 +174,7 @@ func (c *BaseScheduler) Swtich2SelfDeliver(order *model.GoodsOrder) (err error)
|
||||
|
||||
func (c *BaseScheduler) SelfDeliverDelievering(order *model.GoodsOrder) (err error) {
|
||||
globals.SugarLogger.Infof("SelfDeliverDelievering orderID:%s", order.VendorOrderID)
|
||||
if order.Status == model.OrderStatusFinishedPickup {
|
||||
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusFinishedPickup {
|
||||
if c.IsReallyCallPlatformAPI {
|
||||
err = utils.CallFuncLogError(func() error {
|
||||
return c.GetPurchasePlatformFromVendorID(order.VendorID).SelfDeliverDelievering(order)
|
||||
@@ -190,7 +190,7 @@ func (c *BaseScheduler) SelfDeliverDelievering(order *model.GoodsOrder) (err err
|
||||
|
||||
func (c *BaseScheduler) SelfDeliverDelievered(order *model.GoodsOrder) (err error) {
|
||||
globals.SugarLogger.Infof("SelfDeliverDelievered orderID:%s", order.VendorOrderID)
|
||||
if order.Status == model.OrderStatusFinishedPickup || order.Status == model.OrderStatusDelivering { // todo 饿了么转自送后,不会发送配送中消息,暂时先这样
|
||||
if order.LockStatus == model.OrderStatusUnknown && (order.Status == model.OrderStatusFinishedPickup || order.Status == model.OrderStatusDelivering) { // todo 饿了么转自送后,不会发送配送中消息,暂时先这样
|
||||
if c.IsReallyCallPlatformAPI {
|
||||
err = utils.CallFuncLogError(func() error {
|
||||
return c.GetPurchasePlatformFromVendorID(order.VendorID).SelfDeliverDelievered(order)
|
||||
|
||||
Reference in New Issue
Block a user