!!!修改美团订单的逻辑,不在用接受订单当成拣货完成,使用order/preparationMealComplete为实际拣货
This commit is contained in:
@@ -11,7 +11,6 @@ import (
|
||||
|
||||
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
|
||||
"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/jxcontext"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
||||
@@ -23,9 +22,9 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
FakeMsgTypeOrderReceived = "orderReceived"
|
||||
FakeMsgTypeOrderDelivering = "orderDelivering"
|
||||
FakeMsgType = "fakeMsgType"
|
||||
|
||||
fakeFinishedPickup = "fake_finished_pickup"
|
||||
fakeUserApplyCancel = "fake_user_apply_cancel"
|
||||
fakeMerchantAgreeApplyCancel = "fake_merchant_agree_apply_cancel"
|
||||
fakeRefuseUserApplyCancel = "fake_refuse_user_apply_cancel"
|
||||
@@ -38,11 +37,11 @@ const (
|
||||
)
|
||||
|
||||
const (
|
||||
// pickupOrderDelay = 260 * time.Second
|
||||
pickupOrderDelay = 1 * time.Second
|
||||
// pickupOrderDelay = 260 * time.Second
|
||||
// pickupOrderDelay = 1 * time.Second
|
||||
|
||||
callDeliveryDelay = 10 * time.Minute
|
||||
callDeliveryDelayGap = 30
|
||||
// callDeliveryDelay = 10 * time.Minute
|
||||
// callDeliveryDelayGap = 30
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -53,13 +52,16 @@ var (
|
||||
VendorStatus2StatusMap = map[string]int{
|
||||
mtwmapi.OrderStatusUserCommitted: model.OrderStatusUnknown,
|
||||
mtwmapi.OrderStatusNew: model.OrderStatusNew,
|
||||
mtwmapi.OrderStatusReceived: model.OrderStatusAccepted,
|
||||
mtwmapi.OrderStatusAccepted: model.OrderStatusFinishedPickup,
|
||||
mtwmapi.OrderStatusDelivering: model.OrderStatusDelivering,
|
||||
mtwmapi.OrderStatusDelivered: model.OrderStatusUnknown, // 以mtwmapi.OrderStatusFinished为结束状态,这个当成一个中间状态(且很少看到这个状态)
|
||||
mtwmapi.OrderStatusFinished: model.OrderStatusFinished,
|
||||
mtwmapi.OrderStatusCanceled: model.OrderStatusCanceled,
|
||||
// mtwmapi.OrderStatusReceived: model.OrderStatusAccepted,
|
||||
// mtwmapi.OrderStatusAccepted: model.OrderStatusFinishedPickup,
|
||||
mtwmapi.OrderStatusAccepted: model.OrderStatusAccepted,
|
||||
|
||||
mtwmapi.OrderStatusDelivering: model.OrderStatusDelivering,
|
||||
mtwmapi.OrderStatusDelivered: model.OrderStatusUnknown, // 以mtwmapi.OrderStatusFinished为结束状态,这个当成一个中间状态(且很少看到这个状态)
|
||||
mtwmapi.OrderStatusFinished: model.OrderStatusFinished,
|
||||
mtwmapi.OrderStatusCanceled: model.OrderStatusCanceled,
|
||||
|
||||
fakeFinishedPickup: model.OrderStatusFinishedPickup,
|
||||
fakeOrderAdjustFinished: model.OrderStatusAdjust,
|
||||
fakeRefuseUserApplyCancel: model.OrderStatusUnlocked,
|
||||
fakeUserApplyCancel: model.OrderStatusApplyCancel,
|
||||
@@ -142,9 +144,10 @@ func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo
|
||||
if openUID > 0 {
|
||||
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)
|
||||
if utils.IsTimeZero(order.ExpectedDeliveredTime) {
|
||||
order.BusinessType = model.BusinessTypeImmediate
|
||||
@@ -347,7 +350,7 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *mtwmapi.CallbackMsg) (orderSta
|
||||
case mtwmapi.MsgTypeOrderCanceled:
|
||||
vendorStatus = mtwmapi.OrderStatusCanceled
|
||||
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")
|
||||
statusTime = utils.Str2Int64(msg.FormData.Get("utime"))
|
||||
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)
|
||||
if isAcceptIt {
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
err = api.MtwmAPI.OrderReceived(utils.Str2Int64(order.VendorOrderID))
|
||||
}
|
||||
if err == nil {
|
||||
c.postFakeMsg(order.VendorOrderID, FakeMsgTypeOrderReceived, mtwmapi.OrderStatusReceived)
|
||||
// err = api.MtwmAPI.OrderReceived(utils.Str2Int64(order.VendorOrderID))
|
||||
err = api.MtwmAPI.OrderConfirm(utils.Str2Int64(order.VendorOrderID))
|
||||
if err != nil {
|
||||
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 {
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
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) {
|
||||
globals.SugarLogger.Debugf("mtwm PickupGoods orderID:%s, isSelfDelivery:%t", order.VendorOrderID, isSelfDelivery)
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
err = api.MtwmAPI.OrderConfirm(utils.Str2Int64(order.VendorOrderID))
|
||||
} else {
|
||||
c.postFakeMsg(order.VendorOrderID, mtwmapi.MsgTypeOrderAccepted, mtwmapi.OrderStatusAccepted)
|
||||
// err = api.MtwmAPI.OrderConfirm(utils.Str2Int64(order.VendorOrderID))
|
||||
err = api.MtwmAPI.PreparationMealComplete(utils.Str2Int64(order.VendorOrderID))
|
||||
}
|
||||
if err == nil {
|
||||
c.postFakeMsg(order.VendorOrderID, FakeMsgType, fakeFinishedPickup)
|
||||
}
|
||||
return err
|
||||
}
|
||||
@@ -495,19 +504,19 @@ func (c *PurchaseHandler) GetOrderRealMobile(ctx *jxcontext.Context, order *mode
|
||||
return mobile, err
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) GetStatusActionTimeout(order *model.GoodsOrder, statusType, status int) (params *partner.StatusActionParams) {
|
||||
if statusType == scheduler.TimerStatusTypeOrder && status == model.OrderStatusAccepted {
|
||||
params = &partner.StatusActionParams{ // PickDeadline没有设置时才有效,美团外卖要求在5分钟内拣货,不然订单会被取消
|
||||
Timeout: pickupOrderDelay,
|
||||
}
|
||||
} else if statusType == scheduler.TimerStatusTypeOrder && status == model.OrderStatusFinishedPickup {
|
||||
params = &partner.StatusActionParams{ // 立即达订单有效,自配送延时召唤配送
|
||||
Timeout: callDeliveryDelay,
|
||||
TimeoutGap: callDeliveryDelayGap,
|
||||
}
|
||||
}
|
||||
return params
|
||||
}
|
||||
// func (c *PurchaseHandler) GetStatusActionTimeout(order *model.GoodsOrder, statusType, status int) (params *partner.StatusActionParams) {
|
||||
// if statusType == scheduler.TimerStatusTypeOrder && status == model.OrderStatusAccepted {
|
||||
// params = &partner.StatusActionParams{ // PickDeadline没有设置时才有效,美团外卖要求在5分钟内拣货,不然订单会被取消
|
||||
// Timeout: pickupOrderDelay,
|
||||
// }
|
||||
// } else if statusType == scheduler.TimerStatusTypeOrder && status == model.OrderStatusFinishedPickup {
|
||||
// params = &partner.StatusActionParams{ // 立即达订单有效,自配送延时召唤配送
|
||||
// Timeout: callDeliveryDelay,
|
||||
// TimeoutGap: callDeliveryDelayGap,
|
||||
// }
|
||||
// }
|
||||
// return params
|
||||
// }
|
||||
|
||||
func (c *PurchaseHandler) AgreeOrRefuseCancel(ctx *jxcontext.Context, order *model.GoodsOrder, isAgree bool, reason string) (err error) {
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
package mtwm
|
||||
|
||||
import (
|
||||
"net/url"
|
||||
"time"
|
||||
|
||||
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"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)
|
||||
err := partner.CurOrderManager.OnWaybillStatusChanged(waybill)
|
||||
if err == nil && waybill.Status == model.WaybillStatusDelivering {
|
||||
msg := &mtwmapi.CallbackMsg{
|
||||
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)
|
||||
})
|
||||
c.postFakeMsg(waybill.VendorOrderID, FakeMsgType, mtwmapi.OrderStatusDelivering)
|
||||
}
|
||||
return mtwmapi.Err2CallbackResponse(err, "")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user