- 美团外卖实现调整单及订单申请取消
This commit is contained in:
@@ -33,16 +33,16 @@ const (
|
||||
|
||||
var (
|
||||
VendorStatus2StatusMap = map[string]int{
|
||||
fakeOrderAdjustFinished: model.OrderStatusAdjust,
|
||||
|
||||
ebaiapi.OrderStatusNew: model.OrderStatusNew,
|
||||
fakeAcceptOrder: model.OrderStatusAccepted,
|
||||
ebaiapi.OrderStatusAccepted: model.OrderStatusFinishedPickup,
|
||||
fakeUserApplyCancel: model.OrderStatusApplyCancel,
|
||||
ebaiapi.OrderStatusCourierAccepted: model.OrderStatusDelivering,
|
||||
ebaiapi.OrderStatusCourierPickedup: model.OrderStatusDelivering,
|
||||
ebaiapi.OrderStatusFinished: model.OrderStatusFinished,
|
||||
ebaiapi.OrderStatusCanceled: model.OrderStatusCanceled,
|
||||
|
||||
fakeOrderAdjustFinished: model.OrderStatusAdjust,
|
||||
fakeUserApplyCancel: model.OrderStatusApplyCancel,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@@ -20,7 +20,6 @@ var (
|
||||
VendorStatus2StatusMap = map[string]int{
|
||||
jdapi.OrderStatusPurchased: model.OrderStatusNew,
|
||||
jdapi.OrderStatusNew: model.OrderStatusNew,
|
||||
jdapi.OrderStatusAdjust: model.OrderStatusAdjust,
|
||||
jdapi.OrderStatusWaitOutStore: model.OrderStatusAccepted,
|
||||
jdapi.OrderStatusFinishedPickup: model.OrderStatusFinishedPickup,
|
||||
jdapi.OrderStatusDelivering: model.OrderStatusDelivering,
|
||||
@@ -28,6 +27,7 @@ var (
|
||||
jdapi.OrderStatusFinished: model.OrderStatusFinished,
|
||||
jdapi.OrderStatusCanceled: model.OrderStatusCanceled,
|
||||
|
||||
jdapi.OrderStatusAdjust: model.OrderStatusAdjust,
|
||||
jdapi.OrderStatusUserApplyCancel: model.OrderStatusApplyCancel,
|
||||
jdapi.OrderStatusLocked: model.OrderStatusLocked,
|
||||
jdapi.OrderStatusUnlocked: model.OrderStatusUnlocked,
|
||||
|
||||
@@ -20,10 +20,15 @@ import (
|
||||
const (
|
||||
FakeMsgTypeOrderReceived = "orderReceived"
|
||||
FakeMsgTypeOrderDelivering = "orderDelivering"
|
||||
|
||||
fakeUserApplyCancel = "fake_user_apply_cancel"
|
||||
fakeOrderAdjustFinished = "fake_order_adjust_finished"
|
||||
)
|
||||
|
||||
const (
|
||||
SelfDeliveryCarrierNo = 1 // 美团配送方式:0-美团专送,1-商家自送
|
||||
)
|
||||
|
||||
const (
|
||||
pickupOrderDelay = 260 * time.Second
|
||||
|
||||
@@ -41,6 +46,9 @@ var (
|
||||
mtwmapi.OrderStatusDelivered: model.OrderStatusDelivered,
|
||||
mtwmapi.OrderStatusFinished: model.OrderStatusFinished,
|
||||
mtwmapi.OrderStatusCanceled: model.OrderStatusCanceled,
|
||||
|
||||
fakeOrderAdjustFinished: model.OrderStatusAdjust,
|
||||
fakeUserApplyCancel: model.OrderStatusApplyCancel,
|
||||
}
|
||||
)
|
||||
|
||||
@@ -162,21 +170,22 @@ func (c *PurchaseHandler) onOrderMsg(msg *mtwmapi.CallbackMsg) (response *mtwmap
|
||||
}
|
||||
}
|
||||
} else {
|
||||
status := c.callbackMsg2Status(msg)
|
||||
err = partner.CurOrderManager.OnOrderStatusChanged(status)
|
||||
if err == nil && msg.Cmd == mtwmapi.MsgTypeOrderFinished {
|
||||
utils.CallFuncAsync(func() {
|
||||
orderMap, err := api.MtwmAPI.OrderGetOrderDetail(utils.Str2Int64(GetOrderIDFromMsg(msg)), true)
|
||||
if err == nil && utils.MustInterface2Int64(orderMap["is_third_shipping"]) == SelfDeliveryCarrierNo {
|
||||
c.OnOrderDetail(orderMap, partner.UpdatedPeration)
|
||||
}
|
||||
})
|
||||
if status := c.callbackMsg2Status(msg); status != nil {
|
||||
err = partner.CurOrderManager.OnOrderStatusChanged(status)
|
||||
if err == nil && msg.Cmd == mtwmapi.MsgTypeOrderFinished {
|
||||
utils.CallFuncAsync(func() {
|
||||
orderMap, err := api.MtwmAPI.OrderGetOrderDetail(utils.Str2Int64(GetOrderIDFromMsg(msg)), true)
|
||||
if err == nil && utils.MustInterface2Int64(orderMap["is_third_shipping"]) == SelfDeliveryCarrierNo {
|
||||
c.OnOrderDetail(orderMap, partner.UpdatedPeration)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
return mtwmapi.Err2CallbackResponse(err, "")
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) callbackMsg2Status(msg *mtwmapi.CallbackMsg) *model.OrderStatus {
|
||||
func (c *PurchaseHandler) callbackMsg2Status(msg *mtwmapi.CallbackMsg) (orderStatus *model.OrderStatus) {
|
||||
orderID := GetOrderIDFromMsg(msg)
|
||||
vendorStatus := ""
|
||||
remark := ""
|
||||
@@ -191,21 +200,37 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *mtwmapi.CallbackMsg) *model.Or
|
||||
vendorStatus = msg.Data.Get("status")
|
||||
statusTime = utils.Str2Int64(msg.Data.Get("utime"))
|
||||
case mtwmapi.MsgTypeOrderRefund, mtwmapi.MsgTypeOrderPartialRefund:
|
||||
vendorStatus = msg.Cmd
|
||||
remark = msg.Data.Get("reason")
|
||||
notifyType := msg.Data.Get("notify_type")
|
||||
vendorStatus = msg.Cmd + "-" + notifyType
|
||||
if !isOrderFinished(utils.Str2Int64(orderID)) {
|
||||
remark = msg.Data.Get("reason")
|
||||
if msg.Cmd == mtwmapi.MsgTypeOrderPartialRefund {
|
||||
if notifyType == mtwmapi.NotifyTypePartyApply {
|
||||
api.MtwmAPI.OrderRefundAgree(utils.Str2Int64(orderID), "bu") // todo 自动同意调整单
|
||||
} else if notifyType == mtwmapi.NotifyTypeSuccess {
|
||||
vendorStatus = fakeOrderAdjustFinished
|
||||
}
|
||||
} else if msg.Cmd == mtwmapi.MsgTypeOrderRefund {
|
||||
if notifyType == mtwmapi.NotifyTypeApply {
|
||||
vendorStatus = fakeUserApplyCancel
|
||||
}
|
||||
}
|
||||
}
|
||||
default:
|
||||
globals.SugarLogger.Errorf("mtwm unkonw msg:%s", utils.Format4Output(msg, false))
|
||||
}
|
||||
orderStatus := &model.OrderStatus{
|
||||
VendorOrderID: orderID,
|
||||
VendorID: model.VendorIDMTWM,
|
||||
OrderType: model.OrderTypeOrder,
|
||||
RefVendorOrderID: orderID,
|
||||
RefVendorID: model.VendorIDMTWM,
|
||||
VendorStatus: vendorStatus,
|
||||
Status: c.GetStatusFromVendorStatus(vendorStatus),
|
||||
StatusTime: getTimeFromTimestamp(statusTime),
|
||||
Remark: remark,
|
||||
if vendorStatus != "" {
|
||||
orderStatus = &model.OrderStatus{
|
||||
VendorOrderID: orderID,
|
||||
VendorID: model.VendorIDMTWM,
|
||||
OrderType: model.OrderTypeOrder,
|
||||
RefVendorOrderID: orderID,
|
||||
RefVendorID: model.VendorIDMTWM,
|
||||
VendorStatus: vendorStatus,
|
||||
Status: c.GetStatusFromVendorStatus(vendorStatus),
|
||||
StatusTime: getTimeFromTimestamp(statusTime),
|
||||
Remark: remark,
|
||||
}
|
||||
}
|
||||
return orderStatus
|
||||
}
|
||||
@@ -235,9 +260,7 @@ func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI
|
||||
c.postFakeMsg(order.VendorOrderID, FakeMsgTypeOrderReceived, mtwmapi.OrderStatusReceived)
|
||||
}
|
||||
} else {
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
err = api.MtwmAPI.OrderCancel(utils.Str2Int64(order.VendorOrderID), "bu", mtwmapi.CancelReasonOther)
|
||||
}
|
||||
err = c.CancelOrder(jxcontext.AdminCtx, order, "bu")
|
||||
}
|
||||
return err
|
||||
}
|
||||
@@ -323,7 +346,10 @@ func (c *PurchaseHandler) AgreeOrRefuseCancel(ctx *jxcontext.Context, order *mod
|
||||
|
||||
func (c *PurchaseHandler) CancelOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) {
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
err = api.MtwmAPI.OrderCancel(utils.Str2Int64(order.VendorOrderID), reason, mtwmapi.CancelReasonOther)
|
||||
if err = api.MtwmAPI.OrderCancel(utils.Str2Int64(order.VendorOrderID), reason, mtwmapi.CancelReasonOther); err == nil {
|
||||
// 调用开放平台接口取消订单,不推送取消订单消息和退款消息。
|
||||
c.postFakeMsg(order.VendorOrderID, mtwmapi.MsgTypeOrderCanceled, mtwmapi.OrderStatusCanceled)
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
@@ -343,3 +369,13 @@ func (c *PurchaseHandler) AdjustOrder(ctx *jxcontext.Context, order *model.Goods
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func isOrderFinished(vendorOrderID int64) bool {
|
||||
if status, err := api.MtwmAPI.OrderViewStatus(vendorOrderID); err == nil {
|
||||
strStatus := utils.Int2Str(status)
|
||||
return strStatus == mtwmapi.OrderStatusDelivered ||
|
||||
strStatus == mtwmapi.OrderStatusFinished ||
|
||||
strStatus == mtwmapi.OrderStatusCanceled
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user