!!!修改美团订单的逻辑,不在用接受订单当成拣货完成,使用order/preparationMealComplete为实际拣货

This commit is contained in:
gazebo
2019-11-12 14:59:14 +08:00
parent ca3404dd77
commit 0b82b6a099
2 changed files with 47 additions and 51 deletions

View File

@@ -11,7 +11,6 @@ import (
"git.rosy.net.cn/baseapi/platformapi/mtwmapi" "git.rosy.net.cn/baseapi/platformapi/mtwmapi"
"git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils"
"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/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch" "git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
@@ -23,9 +22,9 @@ import (
) )
const ( const (
FakeMsgTypeOrderReceived = "orderReceived" FakeMsgType = "fakeMsgType"
FakeMsgTypeOrderDelivering = "orderDelivering"
fakeFinishedPickup = "fake_finished_pickup"
fakeUserApplyCancel = "fake_user_apply_cancel" fakeUserApplyCancel = "fake_user_apply_cancel"
fakeMerchantAgreeApplyCancel = "fake_merchant_agree_apply_cancel" fakeMerchantAgreeApplyCancel = "fake_merchant_agree_apply_cancel"
fakeRefuseUserApplyCancel = "fake_refuse_user_apply_cancel" fakeRefuseUserApplyCancel = "fake_refuse_user_apply_cancel"
@@ -38,11 +37,11 @@ const (
) )
const ( const (
// pickupOrderDelay = 260 * time.Second // pickupOrderDelay = 260 * time.Second
pickupOrderDelay = 1 * time.Second // pickupOrderDelay = 1 * time.Second
callDeliveryDelay = 10 * time.Minute // callDeliveryDelay = 10 * time.Minute
callDeliveryDelayGap = 30 // callDeliveryDelayGap = 30
) )
var ( var (
@@ -53,13 +52,16 @@ var (
VendorStatus2StatusMap = map[string]int{ VendorStatus2StatusMap = map[string]int{
mtwmapi.OrderStatusUserCommitted: model.OrderStatusUnknown, mtwmapi.OrderStatusUserCommitted: model.OrderStatusUnknown,
mtwmapi.OrderStatusNew: model.OrderStatusNew, mtwmapi.OrderStatusNew: model.OrderStatusNew,
mtwmapi.OrderStatusReceived: model.OrderStatusAccepted, // mtwmapi.OrderStatusReceived: model.OrderStatusAccepted,
mtwmapi.OrderStatusAccepted: model.OrderStatusFinishedPickup, // mtwmapi.OrderStatusAccepted: model.OrderStatusFinishedPickup,
mtwmapi.OrderStatusDelivering: model.OrderStatusDelivering, mtwmapi.OrderStatusAccepted: model.OrderStatusAccepted,
mtwmapi.OrderStatusDelivered: model.OrderStatusUnknown, // 以mtwmapi.OrderStatusFinished为结束状态这个当成一个中间状态且很少看到这个状态
mtwmapi.OrderStatusFinished: model.OrderStatusFinished,
mtwmapi.OrderStatusCanceled: model.OrderStatusCanceled,
mtwmapi.OrderStatusDelivering: model.OrderStatusDelivering,
mtwmapi.OrderStatusDelivered: model.OrderStatusUnknown, // 以mtwmapi.OrderStatusFinished为结束状态这个当成一个中间状态且很少看到这个状态
mtwmapi.OrderStatusFinished: model.OrderStatusFinished,
mtwmapi.OrderStatusCanceled: model.OrderStatusCanceled,
fakeFinishedPickup: model.OrderStatusFinishedPickup,
fakeOrderAdjustFinished: model.OrderStatusAdjust, fakeOrderAdjustFinished: model.OrderStatusAdjust,
fakeRefuseUserApplyCancel: model.OrderStatusUnlocked, fakeRefuseUserApplyCancel: model.OrderStatusUnlocked,
fakeUserApplyCancel: model.OrderStatusApplyCancel, fakeUserApplyCancel: model.OrderStatusApplyCancel,
@@ -142,9 +144,10 @@ func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo
if openUID > 0 { if openUID > 0 {
order.VendorUserID = utils.Int64ToStr(openUID) order.VendorUserID = utils.Int64ToStr(openUID)
} }
if utils.IsTimeZero(order.PickDeadline) && !utils.IsTimeZero(order.StatusTime) { // 不设置最晚拣货时间,以缺省值为准
order.PickDeadline = order.StatusTime.Add(pickupOrderDelay) // 美团外卖要求在5分钟内拣货不然订单会被取消 // if utils.IsTimeZero(order.PickDeadline) && !utils.IsTimeZero(order.StatusTime) {
} // order.PickDeadline = order.StatusTime.Add(pickupOrderDelay) // 美团外卖要求在5分钟内拣货不然订单会被取消
// }
order.Status = p.getStatusFromVendorStatus(order.VendorStatus) order.Status = p.getStatusFromVendorStatus(order.VendorStatus)
if utils.IsTimeZero(order.ExpectedDeliveredTime) { if utils.IsTimeZero(order.ExpectedDeliveredTime) {
order.BusinessType = model.BusinessTypeImmediate order.BusinessType = model.BusinessTypeImmediate
@@ -347,7 +350,7 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *mtwmapi.CallbackMsg) (orderSta
case mtwmapi.MsgTypeOrderCanceled: case mtwmapi.MsgTypeOrderCanceled:
vendorStatus = mtwmapi.OrderStatusCanceled vendorStatus = mtwmapi.OrderStatusCanceled
remark = msg.FormData.Get("reason") remark = msg.FormData.Get("reason")
case mtwmapi.MsgTypeNewOrder, FakeMsgTypeOrderReceived, mtwmapi.MsgTypeOrderAccepted, FakeMsgTypeOrderDelivering, mtwmapi.MsgTypeOrderFinished: case FakeMsgType, mtwmapi.MsgTypeNewOrder, mtwmapi.MsgTypeOrderAccepted, mtwmapi.MsgTypeOrderFinished:
vendorStatus = msg.FormData.Get("status") vendorStatus = msg.FormData.Get("status")
statusTime = utils.Str2Int64(msg.FormData.Get("utime")) statusTime = utils.Str2Int64(msg.FormData.Get("utime"))
case mtwmapi.MsgTypeOrderRefund, mtwmapi.MsgTypeOrderPartialRefund: case mtwmapi.MsgTypeOrderRefund, mtwmapi.MsgTypeOrderPartialRefund:
@@ -414,11 +417,15 @@ func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI
globals.SugarLogger.Debugf("mtwm AcceptOrRefuseOrder orderID:%s, isAcceptIt:%t", order.VendorOrderID, isAcceptIt) globals.SugarLogger.Debugf("mtwm AcceptOrRefuseOrder orderID:%s, isAcceptIt:%t", order.VendorOrderID, isAcceptIt)
if isAcceptIt { if isAcceptIt {
if globals.EnableMtwmStoreWrite { if globals.EnableMtwmStoreWrite {
err = api.MtwmAPI.OrderReceived(utils.Str2Int64(order.VendorOrderID)) // err = api.MtwmAPI.OrderReceived(utils.Str2Int64(order.VendorOrderID))
} err = api.MtwmAPI.OrderConfirm(utils.Str2Int64(order.VendorOrderID))
if err == nil { if err != nil {
c.postFakeMsg(order.VendorOrderID, FakeMsgTypeOrderReceived, mtwmapi.OrderStatusReceived) globals.SugarLogger.Warnf("mtwm AcceptOrRefuseOrder orderID:%s failed with err:%v", order.VendorOrderID, err)
}
} }
// if err == nil {
// c.postFakeMsg(order.VendorOrderID, FakeMsgType, mtwmapi.OrderStatusReceived)
// }
} else { } else {
if globals.EnableMtwmStoreWrite { if globals.EnableMtwmStoreWrite {
err = c.CancelOrder(jxcontext.AdminCtx, order, "bu") err = c.CancelOrder(jxcontext.AdminCtx, order, "bu")
@@ -430,9 +437,11 @@ func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI
func (c *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string) (err error) { func (c *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string) (err error) {
globals.SugarLogger.Debugf("mtwm PickupGoods orderID:%s, isSelfDelivery:%t", order.VendorOrderID, isSelfDelivery) globals.SugarLogger.Debugf("mtwm PickupGoods orderID:%s, isSelfDelivery:%t", order.VendorOrderID, isSelfDelivery)
if globals.EnableMtwmStoreWrite { if globals.EnableMtwmStoreWrite {
err = api.MtwmAPI.OrderConfirm(utils.Str2Int64(order.VendorOrderID)) // err = api.MtwmAPI.OrderConfirm(utils.Str2Int64(order.VendorOrderID))
} else { err = api.MtwmAPI.PreparationMealComplete(utils.Str2Int64(order.VendorOrderID))
c.postFakeMsg(order.VendorOrderID, mtwmapi.MsgTypeOrderAccepted, mtwmapi.OrderStatusAccepted) }
if err == nil {
c.postFakeMsg(order.VendorOrderID, FakeMsgType, fakeFinishedPickup)
} }
return err return err
} }
@@ -495,19 +504,19 @@ func (c *PurchaseHandler) GetOrderRealMobile(ctx *jxcontext.Context, order *mode
return mobile, err return mobile, err
} }
func (c *PurchaseHandler) GetStatusActionTimeout(order *model.GoodsOrder, statusType, status int) (params *partner.StatusActionParams) { // func (c *PurchaseHandler) GetStatusActionTimeout(order *model.GoodsOrder, statusType, status int) (params *partner.StatusActionParams) {
if statusType == scheduler.TimerStatusTypeOrder && status == model.OrderStatusAccepted { // if statusType == scheduler.TimerStatusTypeOrder && status == model.OrderStatusAccepted {
params = &partner.StatusActionParams{ // PickDeadline没有设置时才有效美团外卖要求在5分钟内拣货不然订单会被取消 // params = &partner.StatusActionParams{ // PickDeadline没有设置时才有效美团外卖要求在5分钟内拣货不然订单会被取消
Timeout: pickupOrderDelay, // Timeout: pickupOrderDelay,
} // }
} else if statusType == scheduler.TimerStatusTypeOrder && status == model.OrderStatusFinishedPickup { // } else if statusType == scheduler.TimerStatusTypeOrder && status == model.OrderStatusFinishedPickup {
params = &partner.StatusActionParams{ // 立即达订单有效,自配送延时召唤配送 // params = &partner.StatusActionParams{ // 立即达订单有效,自配送延时召唤配送
Timeout: callDeliveryDelay, // Timeout: callDeliveryDelay,
TimeoutGap: callDeliveryDelayGap, // TimeoutGap: callDeliveryDelayGap,
} // }
} // }
return params // return params
} // }
func (c *PurchaseHandler) AgreeOrRefuseCancel(ctx *jxcontext.Context, order *model.GoodsOrder, isAgree bool, reason string) (err error) { func (c *PurchaseHandler) AgreeOrRefuseCancel(ctx *jxcontext.Context, order *model.GoodsOrder, isAgree bool, reason string) (err error) {
if globals.EnableMtwmStoreWrite { if globals.EnableMtwmStoreWrite {

View File

@@ -1,9 +1,6 @@
package mtwm package mtwm
import ( import (
"net/url"
"time"
"git.rosy.net.cn/baseapi/platformapi/mtwmapi" "git.rosy.net.cn/baseapi/platformapi/mtwmapi"
"git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model"
@@ -33,17 +30,7 @@ func (c *PurchaseHandler) onWaybillMsg(msg *mtwmapi.CallbackMsg) (response *mtwm
waybill := c.callbackMsg2Waybill(msg) waybill := c.callbackMsg2Waybill(msg)
err := partner.CurOrderManager.OnWaybillStatusChanged(waybill) err := partner.CurOrderManager.OnWaybillStatusChanged(waybill)
if err == nil && waybill.Status == model.WaybillStatusDelivering { if err == nil && waybill.Status == model.WaybillStatusDelivering {
msg := &mtwmapi.CallbackMsg{ c.postFakeMsg(waybill.VendorOrderID, FakeMsgType, mtwmapi.OrderStatusDelivering)
Cmd: FakeMsgTypeOrderDelivering,
FormData: url.Values{},
}
msg.FormData.Set("timestamp", utils.Int64ToStr(time.Now().Unix()))
msg.FormData.Set("utime", msg.FormData.Get("timestamp"))
msg.FormData.Set(mtwmapi.KeyOrderID, waybill.VendorOrderID)
msg.FormData.Set("status", mtwmapi.OrderStatusDelivering)
utils.CallFuncAsync(func() {
c.onOrderMsg(msg)
})
} }
return mtwmapi.Err2CallbackResponse(err, "") return mtwmapi.Err2CallbackResponse(err, "")
} }