- reorganize purchase platform interface, split Swith2SelfDeliver and SelfDelivery.

This commit is contained in:
gazebo
2018-08-04 23:08:16 +08:00
parent 9d40bbc85b
commit afe31e0db7
4 changed files with 46 additions and 7 deletions

View File

@@ -268,12 +268,14 @@ func (c *OrderController) PickupGoods(order *model.GoodsOrder) (err error) {
func (c *OrderController) Swtich2SelfDeliver(order *model.GoodsOrder) (err error) { func (c *OrderController) Swtich2SelfDeliver(order *model.GoodsOrder) (err error) {
err = api.ElmAPI.DeliveryBySelfLite(order.VendorOrderID) err = api.ElmAPI.DeliveryBySelfLite(order.VendorOrderID)
// todo 饿了么订单转自送后,不会自动处于配送中状态(而京东平台就会),主动调用一个这个接口,这样使用是不确定的。
// 参见https://open.shop.ele.me/openapi/onlineqa/detail/c128392dd92a4d6a9af738ea5e6c6df9这个回复也不清楚
c.SelfDeliverDelievering(order)
return err return err
} }
// 饿了么转商家自送后,没有确认送达的概念,空操作
func (c *OrderController) Swtich2SelfDelivered(order *model.GoodsOrder) (err error) {
return nil
}
func (c *OrderController) SelfDeliverDelievering(order *model.GoodsOrder) (err error) { func (c *OrderController) SelfDeliverDelievering(order *model.GoodsOrder) (err error) {
return api.ElmAPI.StartDeliveryBySelf(order.VendorOrderID, order.ConsigneeMobile) return api.ElmAPI.StartDeliveryBySelf(order.VendorOrderID, order.ConsigneeMobile)
} }

View File

@@ -214,12 +214,17 @@ func (c *OrderController) Swtich2SelfDeliver(order *model.GoodsOrder) (err error
return err return err
} }
func (c *OrderController) Swtich2SelfDelivered(order *model.GoodsOrder) (err error) {
_, err = api.JdAPI.DeliveryEndOrder(order.VendorOrderID)
return err
}
func (c *OrderController) SelfDeliverDelievering(order *model.GoodsOrder) (err error) { func (c *OrderController) SelfDeliverDelievering(order *model.GoodsOrder) (err error) {
_, err = api.JdAPI.OrderSerllerDelivery(order.VendorOrderID) _, err = api.JdAPI.OrderSerllerDelivery(order.VendorOrderID)
return err return err
} }
// 京东送达接口都是一样的
func (c *OrderController) SelfDeliverDelievered(order *model.GoodsOrder) (err error) { func (c *OrderController) SelfDeliverDelievered(order *model.GoodsOrder) (err error) {
_, err = api.JdAPI.DeliveryEndOrder(order.VendorOrderID) return c.Swtich2SelfDelivered(order)
return err
} }

View File

@@ -343,7 +343,11 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
s.resetTimer(savedOrderInfo, bill, isPending) s.resetTimer(savedOrderInfo, bill, isPending)
s.removeWaybillFromMap(savedOrderInfo, bill) s.removeWaybillFromMap(savedOrderInfo, bill)
if order.VendorID != bill.WaybillVendorID && !isPending { if order.VendorID != bill.WaybillVendorID && !isPending {
s.SelfDeliverDelievered(order) if savedOrderInfo.storeDeliveryType == scheduler.StoreDeliveryTypeByStore {
s.SelfDeliverDelievered(order)
} else {
s.Swtich2SelfDelivered(order)
}
} }
if !s.isBillCandidate(order, bill) { if !s.isBillCandidate(order, bill) {
// 一般只会消息乱序才会到这里,即新订单消息在运单接单消息后到达 // 一般只会消息乱序才会到这里,即新订单消息在运单接单消息后到达

View File

@@ -50,8 +50,16 @@ type PurchasePlatformHandler interface {
AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool) (err error) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool) (err error)
PickupGoods(order *model.GoodsOrder) (err error) PickupGoods(order *model.GoodsOrder) (err error)
// 将订单从购物平台配送转为自送
Swtich2SelfDeliver(order *model.GoodsOrder) (err error) Swtich2SelfDeliver(order *model.GoodsOrder) (err error)
// 将订单从购物平台配送转为自送后又送达
Swtich2SelfDelivered(order *model.GoodsOrder) (err error)
// 完全自送的门店表示开始配送
SelfDeliverDelievering(order *model.GoodsOrder) (err error) SelfDeliverDelievering(order *model.GoodsOrder) (err error)
// 完全自送的门店表示配送完成
SelfDeliverDelievered(order *model.GoodsOrder) (err error) SelfDeliverDelievered(order *model.GoodsOrder) (err error)
} }
@@ -165,6 +173,9 @@ func (c *BaseScheduler) Swtich2SelfDeliver(order *model.GoodsOrder) (err error)
err = utils.CallFuncLogErrorWithInfo(func() error { err = utils.CallFuncLogErrorWithInfo(func() error {
return c.GetPurchasePlatformFromVendorID(order.VendorID).Swtich2SelfDeliver(order) return c.GetPurchasePlatformFromVendorID(order.VendorID).Swtich2SelfDeliver(order)
}, "Swtich2SelfDeliver orderID:%s", order.VendorOrderID) }, "Swtich2SelfDeliver orderID:%s", order.VendorOrderID)
if err == nil { // 因为有些平台转自送后,不会再发送订单在配送中消息过来,所以成功后就强制设置状态为配送中
order.Status = model.OrderStatusDelivering
}
} }
} else { } else {
globals.SugarLogger.Infof("Swtich2SelfDeliver orderID:%s, status:%d is not suitable", order.VendorOrderID, order.Status) globals.SugarLogger.Infof("Swtich2SelfDeliver orderID:%s, status:%d is not suitable", order.VendorOrderID, order.Status)
@@ -172,6 +183,20 @@ func (c *BaseScheduler) Swtich2SelfDeliver(order *model.GoodsOrder) (err error)
return err return err
} }
func (c *BaseScheduler) Swtich2SelfDelivered(order *model.GoodsOrder) (err error) {
globals.SugarLogger.Infof("Swtich2SelfDelivered orderID:%s", order.VendorOrderID)
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusDelivering {
if c.IsReallyCallPlatformAPI {
err = utils.CallFuncLogError(func() error {
return c.GetPurchasePlatformFromVendorID(order.VendorID).Swtich2SelfDelivered(order)
}, "Swtich2SelfDelivered orderID:%s", order.VendorOrderID)
}
} else {
globals.SugarLogger.Infof("Swtich2SelfDelivered orderID:%s, status:%d is not suitable", order.VendorOrderID, order.Status)
}
return err
}
func (c *BaseScheduler) SelfDeliverDelievering(order *model.GoodsOrder) (err error) { func (c *BaseScheduler) SelfDeliverDelievering(order *model.GoodsOrder) (err error) {
globals.SugarLogger.Infof("SelfDeliverDelievering orderID:%s", order.VendorOrderID) globals.SugarLogger.Infof("SelfDeliverDelievering orderID:%s", order.VendorOrderID)
if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusFinishedPickup { if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusFinishedPickup {
@@ -179,6 +204,9 @@ func (c *BaseScheduler) SelfDeliverDelievering(order *model.GoodsOrder) (err err
err = utils.CallFuncLogError(func() error { err = utils.CallFuncLogError(func() error {
return c.GetPurchasePlatformFromVendorID(order.VendorID).SelfDeliverDelievering(order) return c.GetPurchasePlatformFromVendorID(order.VendorID).SelfDeliverDelievering(order)
}, "SelfDeliverDelievering orderID:%s", order.VendorOrderID) }, "SelfDeliverDelievering orderID:%s", order.VendorOrderID)
if err == nil { // 因为有些平台设置配送中后,不会发送订单在配送中消息过来,所以成功后就强制设置状态为配送中
order.Status = model.OrderStatusDelivering
}
} }
} else if order.Status == model.OrderStatusDelivering { } else if order.Status == model.OrderStatusDelivering {
globals.SugarLogger.Debugf("SelfDeliverDelievering orderID:%s, status:%d already ok", order.VendorOrderID, order.Status) globals.SugarLogger.Debugf("SelfDeliverDelievering orderID:%s, status:%d already ok", order.VendorOrderID, order.Status)
@@ -190,7 +218,7 @@ func (c *BaseScheduler) SelfDeliverDelievering(order *model.GoodsOrder) (err err
func (c *BaseScheduler) SelfDeliverDelievered(order *model.GoodsOrder) (err error) { func (c *BaseScheduler) SelfDeliverDelievered(order *model.GoodsOrder) (err error) {
globals.SugarLogger.Infof("SelfDeliverDelievered orderID:%s", order.VendorOrderID) globals.SugarLogger.Infof("SelfDeliverDelievered orderID:%s", order.VendorOrderID)
if order.LockStatus == model.OrderStatusUnknown && (order.Status == model.OrderStatusFinishedPickup || order.Status == model.OrderStatusDelivering) { // todo 饿了么转自送后,不会发送配送中消息,暂时先这样 if order.LockStatus == model.OrderStatusUnknown && order.Status == model.OrderStatusDelivering {
if c.IsReallyCallPlatformAPI { if c.IsReallyCallPlatformAPI {
err = utils.CallFuncLogError(func() error { err = utils.CallFuncLogError(func() error {
return c.GetPurchasePlatformFromVendorID(order.VendorID).SelfDeliverDelievered(order) return c.GetPurchasePlatformFromVendorID(order.VendorID).SelfDeliverDelievered(order)