- 自配送门店的PickupGoods不应调用平台相应API,模拟一个事件

This commit is contained in:
gazebo
2019-03-22 20:55:59 +08:00
parent 753ce06d0b
commit 837395f431
9 changed files with 59 additions and 29 deletions

View File

@@ -31,23 +31,21 @@ func (c *BaseScheduler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt
return err
}
func (c *BaseScheduler) PickupGoods(order *model.GoodsOrder, userName string) (err error) {
func (c *BaseScheduler) PickupGoods(order *model.GoodsOrder, isSelfDeilivery bool, userName string) (err error) {
globals.SugarLogger.Infof("PickupGoods orderID:%s", order.VendorOrderID)
if (order.DeliveryFlag & model.OrderDeliveryFlagMaskPurcahseDisabled) == 0 {
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusAccepted {
if c.IsReallyCallPlatformAPI {
err = utils.CallFuncLogErrorWithInfo(func() error {
return partner.GetPurchasePlatformFromVendorID(order.VendorID).PickupGoods(order, userName)
}, "PickupGoods orderID:%s", order.VendorOrderID)
}
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusAccepted {
if c.IsReallyCallPlatformAPI {
err = utils.CallFuncLogErrorWithInfo(func() error {
return partner.GetPurchasePlatformFromVendorID(order.VendorID).PickupGoods(order, isSelfDeilivery, userName)
}, "PickupGoods orderID:%s", order.VendorOrderID)
}
} else {
if order.LockStatus != model.OrderStatusUnknown || order.Status < model.OrderStatusAccepted {
err = scheduler.ErrOrderStatusIsNotSuitable4CurOperation
globals.SugarLogger.Infof("PickupGoods orderID:%s, status:%d is not suitable", order.VendorOrderID, order.Status)
} else {
if order.LockStatus != model.OrderStatusUnknown || order.Status < model.OrderStatusAccepted {
err = scheduler.ErrOrderStatusIsNotSuitable4CurOperation
globals.SugarLogger.Infof("PickupGoods orderID:%s, status:%d is not suitable", order.VendorOrderID, order.Status)
} else {
err = scheduler.ErrOrderStatusAlreadySatisfyCurOperation
globals.SugarLogger.Debugf("PickupGoods orderID:%s status:%d already ok", order.VendorOrderID, order.Status)
}
err = scheduler.ErrOrderStatusAlreadySatisfyCurOperation
globals.SugarLogger.Debugf("PickupGoods orderID:%s status:%d already ok", order.VendorOrderID, order.Status)
}
}
return err

View File

@@ -67,7 +67,7 @@ func (c *BaseScheduler) PickupGoodsAndUpdateStatus(ctx *jxcontext.Context, vendo
globals.SugarLogger.Infof("PickupGoodsAndUpdateStatus orderID:%s userName:%s", vendorOrderID, userName)
order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, vendorID)
if err == nil {
err = c.PickupGoods(order, userName)
err = c.PickupGoods(order, GetStoreDeliveryType(order, nil) == scheduler.StoreDeliveryTypeByStore, userName)
if err == nil {
order.Status = model.OrderStatusFinishedPickup
if err = partner.CurOrderManager.UpdateOrderStatusAndFlag(order); err == nil {

View File

@@ -182,7 +182,7 @@ func init() {
TimeoutGap: time2AutoPickupGap,
TimeoutAction: func(savedOrderInfo *WatchOrderInfo) (err error) {
if savedOrderInfo.autoPickupTimeoutMinute > 0 {
return sch.autoPickupGood(savedOrderInfo.order)
return sch.autoPickupGood(savedOrderInfo)
}
return nil
},
@@ -281,7 +281,7 @@ func (s *DefScheduler) OnOrderStatusChanged(status *model.OrderStatus, isPending
} else if status.LockStatus != model.OrderStatusUnknown {
s.stopTimer(savedOrderInfo)
}
} else if status.Status > model.OrderStatusApplyCancel {
} else if status.Status == model.OrderStatusApplyCancel {
globals.SugarLogger.Debugf("OnOrderStatusChanged orderID:%s %s, status:%v", status.VendorOrderID, model.OrderStatusName[status.Status], status)
savedOrderInfo := s.loadSavedOrderFromMap(status, true)
utils.CallFuncAsync(func() {
@@ -842,8 +842,8 @@ func (s *DefScheduler) updateBillsInfo(savedOrderInfo *WatchOrderInfo, bill *mod
return isBillExist
}
func (s *DefScheduler) autoPickupGood(order *model.GoodsOrder) (err error) {
err = s.PickupGoods(order, "")
func (s *DefScheduler) autoPickupGood(savedOrderInfo *WatchOrderInfo) (err error) {
err = s.PickupGoods(savedOrderInfo.order, savedOrderInfo.storeDeliveryType == scheduler.StoreDeliveryTypeByStore, "")
if err == scheduler.ErrOrderStatusAlreadySatisfyCurOperation {
err = nil
}