- 完成美团外卖运单调度
- 整理虚拟消息
This commit is contained in:
@@ -155,9 +155,9 @@ func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo
|
||||
func (p *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) {
|
||||
globals.SugarLogger.Debugf("ebai AcceptOrRefuseOrder orderID:%s", order.VendorOrderID)
|
||||
if isAcceptIt {
|
||||
p.postFakeOrderAcceptMsg(order.VendorOrderID)
|
||||
p.postFakeMsg(order.VendorOrderID, fakeAcceptOrder)
|
||||
} else {
|
||||
if globals.EnableStoreWrite && globals.EnableEbaiStoreWrite {
|
||||
if globals.EnableEbaiStoreWrite {
|
||||
err = api.EbaiAPI.OrderCancel(order.VendorOrderID, ebaiapi.CancelTypeCustom, "bu")
|
||||
}
|
||||
}
|
||||
@@ -166,11 +166,10 @@ func (p *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI
|
||||
|
||||
func (p *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDeilivery bool, userName string) (err error) {
|
||||
globals.SugarLogger.Debugf("ebai PickupGoods orderID:%s", order.VendorOrderID)
|
||||
if globals.EnableStoreWrite && globals.EnableEbaiStoreWrite {
|
||||
if globals.EnableEbaiStoreWrite {
|
||||
err = api.EbaiAPI.OrderConfirm(order.VendorOrderID)
|
||||
// if err == nil && !isSelfDeilivery {
|
||||
// err = api.EbaiAPI.OrderCallDelivery(order.VendorOrderID)
|
||||
// }
|
||||
} else {
|
||||
p.postFakeMsg(order.VendorOrderID, ebaiapi.OrderStatusAccepted)
|
||||
}
|
||||
return err
|
||||
}
|
||||
@@ -178,7 +177,7 @@ func (p *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDeilivery b
|
||||
// 将订单从购物平台配送转为自送
|
||||
func (p *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error) {
|
||||
globals.SugarLogger.Debugf("ebai Swtich2SelfDeliver orderID:%s", order.VendorOrderID)
|
||||
if globals.EnableStoreWrite && globals.EnableEbaiStoreWrite {
|
||||
if globals.EnableEbaiStoreWrite {
|
||||
err = api.EbaiAPI.OrderSwitchselfdelivery(order.VendorOrderID)
|
||||
}
|
||||
return err
|
||||
@@ -194,7 +193,7 @@ func (p *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName
|
||||
// 完全自送的门店表示开始配送
|
||||
func (p *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userName string) (err error) {
|
||||
globals.SugarLogger.Debugf("ebai SelfDeliverDelivering orderID:%s", order.VendorOrderID)
|
||||
if globals.EnableStoreWrite && globals.EnableEbaiStoreWrite {
|
||||
if globals.EnableEbaiStoreWrite {
|
||||
err = api.EbaiAPI.OrderSendOut(order.VendorOrderID, userName)
|
||||
}
|
||||
return err
|
||||
@@ -203,7 +202,7 @@ func (p *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userNam
|
||||
// 完全自送的门店表示配送完成
|
||||
func (p *PurchaseHandler) SelfDeliverDelievered(order *model.GoodsOrder, userName string) (err error) {
|
||||
globals.SugarLogger.Debugf("ebai SelfDeliverDelievered orderID:%s", order.VendorOrderID)
|
||||
if globals.EnableStoreWrite && globals.EnableEbaiStoreWrite {
|
||||
if globals.EnableEbaiStoreWrite {
|
||||
err = api.EbaiAPI.OrderComplete(order.VendorOrderID, userName)
|
||||
}
|
||||
return err
|
||||
@@ -215,26 +214,11 @@ func (c *PurchaseHandler) onOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaiapi.
|
||||
retVal = c.onOrderNew(msg)
|
||||
} else {
|
||||
status := c.callbackMsg2Status(msg)
|
||||
var err error
|
||||
if status != nil {
|
||||
err := partner.CurOrderManager.OnOrderStatusChanged(status)
|
||||
|
||||
// 如果订单所属的门店是专送模式,直接跳到拣货完成,因为饿百没有拣货完成的概念,接单就视为拣货完成
|
||||
// if status.Status == model.OrderStatusAccepted {
|
||||
// postFakeFinishedPickupMsg := true
|
||||
// vendorOrderID := GetOrderIDFromMsg(msg)
|
||||
// if order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, model.VendorIDEBAI); err == nil {
|
||||
// if c.getOrderStoreDeliveryType(order) != scheduler.StoreDeliveryTypeByPlatform {
|
||||
// postFakeFinishedPickupMsg = false
|
||||
// }
|
||||
// }
|
||||
// if postFakeFinishedPickupMsg {
|
||||
// c.postFakeOrderAcceptMsg(vendorOrderID)
|
||||
// }
|
||||
// }
|
||||
retVal = api.EbaiAPI.Err2CallbackResponse(msg.Cmd, err, nil)
|
||||
} else {
|
||||
retVal = api.EbaiAPI.Err2CallbackResponse(msg.Cmd, nil, nil)
|
||||
err = partner.CurOrderManager.OnOrderStatusChanged(status)
|
||||
}
|
||||
retVal = api.EbaiAPI.Err2CallbackResponse(msg.Cmd, err, nil)
|
||||
}
|
||||
return retVal
|
||||
}
|
||||
@@ -321,12 +305,12 @@ func (c *PurchaseHandler) getOrderStoreDeliveryType(order *model.GoodsOrder) (de
|
||||
return scheduler.StoreDeliveryTypeByPlatform
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) postFakeOrderAcceptMsg(vendorOrderID string) {
|
||||
func (c *PurchaseHandler) postFakeMsg(vendorOrderID, vendorStatus string) {
|
||||
msg := &ebaiapi.CallbackMsg{
|
||||
Cmd: ebaiapi.CmdOrderStatus,
|
||||
Timestamp: time.Now().Unix(),
|
||||
Body: map[string]interface{}{
|
||||
"status": fakeAcceptOrder,
|
||||
"status": vendorStatus,
|
||||
"order_id": vendorOrderID,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -226,10 +226,10 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *jdapi.CallbackOrderMsg) *model
|
||||
return orderStatus
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) postFakeFinishedPickupMsg(vendorOrderID string) {
|
||||
func (c *PurchaseHandler) postFakeMsg(vendorOrderID, vendorStatus string) {
|
||||
msg := &jdapi.CallbackOrderMsg{
|
||||
BillID: vendorOrderID,
|
||||
StatusID: jdapi.OrderStatusFinishedPickup,
|
||||
StatusID: vendorStatus,
|
||||
Timestamp: utils.Time2Str(time.Now()),
|
||||
}
|
||||
utils.CallFuncAsync(func() {
|
||||
@@ -246,28 +246,35 @@ func (c *PurchaseHandler) GetStatusFromVendorStatus(vendorStatus string) int {
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) {
|
||||
return api.JdAPI.OrderAcceptOperate(order.VendorOrderID, isAcceptIt, userName)
|
||||
if globals.EnableStoreWrite {
|
||||
err = api.JdAPI.OrderAcceptOperate(order.VendorOrderID, isAcceptIt, userName)
|
||||
} else {
|
||||
c.postFakeMsg(order.VendorOrderID, jdapi.OrderStatusWaitOutStore)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDeilivery bool, userName string) (err error) {
|
||||
if !isSelfDeilivery {
|
||||
if !isSelfDeilivery && globals.EnableStoreWrite {
|
||||
_, err = api.JdAPI.OrderJDZBDelivery(order.VendorOrderID, userName)
|
||||
} else {
|
||||
c.postFakeFinishedPickupMsg(order.VendorOrderID)
|
||||
c.postFakeMsg(order.VendorOrderID, jdapi.OrderStatusFinishedPickup)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error) {
|
||||
_, err = api.JdAPI.ModifySellerDelivery(order.VendorOrderID, userName)
|
||||
if err != nil {
|
||||
if errWithCode, ok := err.(*utils.ErrorWithCode); ok && errWithCode.Level() == 1 {
|
||||
globals.SugarLogger.Infof("Swtich2SelfDeliver failed with error:%v try get current status", err)
|
||||
if order2, err2 := c.GetOrder(order.VendorOrderID); err2 == nil {
|
||||
var mapData map[string]interface{}
|
||||
if err2 = utils.UnmarshalUseNumber([]byte(order2.OriginalData), &mapData); err2 == nil {
|
||||
if utils.Interface2String(mapData["deliveryCarrierNo"]) == "2938" { // 当前已经是自送状态了
|
||||
err = nil
|
||||
if globals.EnableStoreWrite {
|
||||
_, err = api.JdAPI.ModifySellerDelivery(order.VendorOrderID, userName)
|
||||
if err != nil {
|
||||
if errWithCode, ok := err.(*utils.ErrorWithCode); ok && errWithCode.Level() == 1 {
|
||||
globals.SugarLogger.Infof("Swtich2SelfDeliver failed with error:%v try get current status", err)
|
||||
if order2, err2 := c.GetOrder(order.VendorOrderID); err2 == nil {
|
||||
var mapData map[string]interface{}
|
||||
if err2 = utils.UnmarshalUseNumber([]byte(order2.OriginalData), &mapData); err2 == nil {
|
||||
if utils.Interface2String(mapData["deliveryCarrierNo"]) == "2938" { // 当前已经是自送状态了
|
||||
err = nil
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -277,18 +284,25 @@ func (c *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName s
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error) {
|
||||
_, err = api.JdAPI.DeliveryEndOrder(order.VendorOrderID, userName)
|
||||
if globals.EnableStoreWrite {
|
||||
_, err = api.JdAPI.DeliveryEndOrder(order.VendorOrderID, userName)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userName string) (err error) {
|
||||
_, err = api.JdAPI.OrderSerllerDelivery(order.VendorOrderID, userName)
|
||||
if globals.EnableStoreWrite {
|
||||
_, err = api.JdAPI.OrderSerllerDelivery(order.VendorOrderID, userName)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
// 京东送达接口都是一样的
|
||||
func (c *PurchaseHandler) SelfDeliverDelievered(order *model.GoodsOrder, userName string) (err error) {
|
||||
return c.Swtich2SelfDelivered(order, userName)
|
||||
if globals.EnableStoreWrite {
|
||||
err = c.Swtich2SelfDelivered(order, userName)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) RefreshRealMobile(ctx *jxcontext.Context, fromTime, toTime time.Time, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||
|
||||
@@ -158,7 +158,6 @@ func (c *PurchaseHandler) onOrderMsg(msg *mtwmapi.CallbackMsg) (response *mtwmap
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// todo 好像没有“商家已收到”消息回调,是否需要模拟?
|
||||
status := c.callbackMsg2Status(msg)
|
||||
err = partner.CurOrderManager.OnOrderStatusChanged(status)
|
||||
}
|
||||
@@ -199,38 +198,31 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *mtwmapi.CallbackMsg) *model.Or
|
||||
return orderStatus
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) postFakeFinishedPickupMsg(vendorOrderID string) {
|
||||
func (c *PurchaseHandler) postFakeMsg(vendorOrderID, cmd, vendorStatus string) {
|
||||
msg := &mtwmapi.CallbackMsg{
|
||||
Cmd: mtwmapi.MsgTypeOrderAccepted,
|
||||
Data: make(url.Values),
|
||||
}
|
||||
timeStr := utils.Int64ToStr(time.Now().Unix())
|
||||
msg.Data.Add(mtwmapi.KeyOrderID, vendorOrderID)
|
||||
msg.Data.Add("status", mtwmapi.OrderStatusAccepted)
|
||||
msg.Data.Add("timestamp", timeStr)
|
||||
msg.Data.Add("utime", timeStr)
|
||||
msg.Data.Set(mtwmapi.KeyOrderID, vendorOrderID)
|
||||
msg.Data.Set("status", mtwmapi.OrderStatusAccepted)
|
||||
msg.Data.Set("timestamp", timeStr)
|
||||
msg.Data.Set("utime", timeStr)
|
||||
utils.CallFuncAsync(func() {
|
||||
OnOrderCallbackMsg(msg)
|
||||
})
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) {
|
||||
if globals.EnableStoreWrite && globals.EnableMtwmStoreWrite {
|
||||
if isAcceptIt {
|
||||
if err = api.MtwmAPI.OrderReceived(utils.Str2Int64(order.VendorOrderID)); err == nil {
|
||||
msg := &mtwmapi.CallbackMsg{
|
||||
Cmd: FakeMsgTypeOrderReceived,
|
||||
Data: url.Values{},
|
||||
}
|
||||
msg.Data.Set(mtwmapi.KeyOrderID, order.VendorOrderID)
|
||||
msg.Data.Set("status", mtwmapi.OrderStatusReceived)
|
||||
msg.Data.Set("timestamp", utils.Int64ToStr(time.Now().Unix()))
|
||||
msg.Data.Set("utime", msg.Data.Get("timestamp"))
|
||||
utils.CallFuncAsync(func() {
|
||||
OnOrderCallbackMsg(msg)
|
||||
})
|
||||
}
|
||||
} else {
|
||||
if isAcceptIt {
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
err = api.MtwmAPI.OrderReceived(utils.Str2Int64(order.VendorOrderID))
|
||||
}
|
||||
if err == nil {
|
||||
c.postFakeMsg(order.VendorOrderID, FakeMsgTypeOrderReceived, mtwmapi.OrderStatusReceived)
|
||||
}
|
||||
} else {
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
err = api.MtwmAPI.OrderCancel(utils.Str2Int64(order.VendorOrderID))
|
||||
}
|
||||
}
|
||||
@@ -238,27 +230,39 @@ func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDeilivery bool, userName string) (err error) {
|
||||
if globals.EnableStoreWrite && globals.EnableMtwmStoreWrite && !isSelfDeilivery {
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
err = api.MtwmAPI.OrderConfirm(utils.Str2Int64(order.VendorOrderID))
|
||||
} else {
|
||||
c.postFakeFinishedPickupMsg(order.VendorOrderID)
|
||||
c.postFakeMsg(order.VendorOrderID, mtwmapi.MsgTypeOrderAccepted, mtwmapi.OrderStatusAccepted)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error) {
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
err = api.MtwmAPI.OrderLogisticsChange2Self(utils.Str2Int64(order.VendorOrderID))
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error) {
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
err = api.MtwmAPI.OrderArrived(utils.Str2Int64(order.VendorOrderID))
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userName string) (err error) {
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
err = api.MtwmAPI.OrderDelivering(utils.Str2Int64(order.VendorOrderID))
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) SelfDeliverDelievered(order *model.GoodsOrder, userName string) (err error) {
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
err = api.MtwmAPI.OrderArrived(utils.Str2Int64(order.VendorOrderID))
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user