- reorganize purchase platform interface, split Swith2SelfDeliver and SelfDelivery.
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
if savedOrderInfo.storeDeliveryType == scheduler.StoreDeliveryTypeByStore {
|
||||||
s.SelfDeliverDelievered(order)
|
s.SelfDeliverDelievered(order)
|
||||||
|
} else {
|
||||||
|
s.Swtich2SelfDelivered(order)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if !s.isBillCandidate(order, bill) {
|
if !s.isBillCandidate(order, bill) {
|
||||||
// 一般只会消息乱序才会到这里,即新订单消息在运单接单消息后到达
|
// 一般只会消息乱序才会到这里,即新订单消息在运单接单消息后到达
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user