- for ebai only zhuan song send fakefinishedpickup right after order accept msg
This commit is contained in:
@@ -10,6 +10,7 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler"
|
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||||
"git.rosy.net.cn/jx-callback/business/partner"
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
@@ -17,13 +18,14 @@ import (
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
acceptOrderDelay = 270 * time.Second
|
acceptOrderDelay = 270 * time.Second
|
||||||
fakePickedUp = "fakefinishedpickup"
|
fakePickedUp = "9527"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
VendorStatus2StatusMap = map[string]int{
|
VendorStatus2StatusMap = map[string]int{
|
||||||
ebaiapi.OrderStatusNew: model.OrderStatusNew,
|
ebaiapi.OrderStatusNew: model.OrderStatusNew,
|
||||||
ebaiapi.OrderStatusAccepted: model.OrderStatusAccepted,
|
ebaiapi.OrderStatusAccepted: model.OrderStatusAccepted,
|
||||||
|
fakePickedUp: model.OrderStatusFinishedPickup,
|
||||||
ebaiapi.OrderStatusCourierAccepted: model.OrderStatusDelivering,
|
ebaiapi.OrderStatusCourierAccepted: model.OrderStatusDelivering,
|
||||||
ebaiapi.OrderStatusCourierPickedup: model.OrderStatusDelivering,
|
ebaiapi.OrderStatusCourierPickedup: model.OrderStatusDelivering,
|
||||||
ebaiapi.OrderStatusFinished: model.OrderStatusFinished,
|
ebaiapi.OrderStatusFinished: model.OrderStatusFinished,
|
||||||
@@ -137,6 +139,7 @@ func (p *PurchaseHandler) PickupGoods(order *model.GoodsOrder, userName string)
|
|||||||
// if globals.EnableStoreWrite && globals.EnableEbaiStoreWrite {
|
// if globals.EnableStoreWrite && globals.EnableEbaiStoreWrite {
|
||||||
// err = api.EbaiAPI.OrderCallDelivery(order.VendorOrderID)
|
// err = api.EbaiAPI.OrderCallDelivery(order.VendorOrderID)
|
||||||
// }
|
// }
|
||||||
|
p.postFakeFinishedPickupMsg(order.VendorOrderID) // 饿百没有拣货完成事件,模拟发送
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -179,13 +182,19 @@ func (c *PurchaseHandler) onOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaiapi.
|
|||||||
if status != nil {
|
if status != nil {
|
||||||
err := partner.CurOrderManager.OnOrderStatusChanged(status)
|
err := partner.CurOrderManager.OnOrderStatusChanged(status)
|
||||||
|
|
||||||
// 直接跳到拣货完成
|
// 如果订单所属的门店是专送模式,直接跳到拣货完成,因为饿百没有拣货完成的概念,接单就视为拣货完成
|
||||||
if status.Status == model.OrderStatusAccepted {
|
if status.Status == model.OrderStatusAccepted {
|
||||||
status.Status = model.OrderStatusFinishedPickup
|
postFakeFinishedPickupMsg := true
|
||||||
status.VendorStatus = fakePickedUp
|
vendorOrderID := GetOrderIDFromMsg(msg)
|
||||||
err = partner.CurOrderManager.OnOrderStatusChanged(status)
|
if order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, model.VendorIDEBAI); err == nil {
|
||||||
|
if c.getOrderStoreDeliveryType(order) != scheduler.StoreDeliveryTypeByPlatform {
|
||||||
|
postFakeFinishedPickupMsg = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if postFakeFinishedPickupMsg {
|
||||||
|
c.postFakeFinishedPickupMsg(vendorOrderID)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
retVal = api.EbaiAPI.Err2CallbackResponse(msg.Cmd, err, nil)
|
retVal = api.EbaiAPI.Err2CallbackResponse(msg.Cmd, err, nil)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -231,6 +240,38 @@ func (c *PurchaseHandler) GetStatusActionTimeout(statusType, status int) time.Du
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *PurchaseHandler) getOrderStoreDeliveryType(order *model.GoodsOrder) (deliveryType int) {
|
||||||
|
sql := `
|
||||||
|
SELECT *
|
||||||
|
FROM store_map t1
|
||||||
|
WHERE t1.vendor_store_id = ?
|
||||||
|
AND t1.vendor_id = ?
|
||||||
|
AND t1.deleted_at = ?
|
||||||
|
`
|
||||||
|
db := dao.GetDB()
|
||||||
|
var storeMap *model.StoreMap
|
||||||
|
if err := dao.GetRow(db, &storeMap, sql, order.VendorStoreID, model.VendorIDEBAI, utils.DefaultTimeValue); err == nil {
|
||||||
|
return int(storeMap.DeliveryType)
|
||||||
|
} else if !dao.IsNoRowsError(err) {
|
||||||
|
globals.SugarLogger.Warnf("getOrderStoreDeliveryType orderID:%s failed with error:%v", order.VendorOrderID, err)
|
||||||
|
}
|
||||||
|
return scheduler.StoreDeliveryTypeByPlatform
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *PurchaseHandler) postFakeFinishedPickupMsg(vendorOrderID string) {
|
||||||
|
msg := &ebaiapi.CallbackMsg{
|
||||||
|
Cmd: ebaiapi.CmdOrderStatus,
|
||||||
|
Timestamp: time.Now().Unix(),
|
||||||
|
Body: map[string]interface{}{
|
||||||
|
"status": utils.Str2Int64(fakePickedUp),
|
||||||
|
"order_id": vendorOrderID,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
go func() {
|
||||||
|
OnCallbackMsg(msg)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
|
||||||
func getTimeFromTimestampStr(sendTime string) time.Time {
|
func getTimeFromTimestampStr(sendTime string) time.Time {
|
||||||
timeStamp := utils.Str2Int64WithDefault(sendTime, 0)
|
timeStamp := utils.Str2Int64WithDefault(sendTime, 0)
|
||||||
if timeStamp < 1538103149 { // 立即达订单给的是1(而不是空,0),1538103149不是特殊值,只是一个任意之前的时间,这样写可以处理
|
if timeStamp < 1538103149 { // 立即达订单给的是1(而不是空,0),1538103149不是特殊值,只是一个任意之前的时间,这样写可以处理
|
||||||
|
|||||||
Reference in New Issue
Block a user