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