- 调整美团外卖售后单事件调用结构(与JD和EBAI一致)
This commit is contained in:
@@ -153,47 +153,51 @@ func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo
|
||||
|
||||
func (c *PurchaseHandler) onOrderMsg(msg *mtwmapi.CallbackMsg) (response *mtwmapi.CallbackResponse) {
|
||||
var err error
|
||||
if msg.Cmd == mtwmapi.MsgTypeNewOrder {
|
||||
order, orderMap, err2 := c.getOrder(GetOrderIDFromMsg(msg))
|
||||
if err = err2; err == nil {
|
||||
err = partner.CurOrderManager.OnOrderNew(order, c.callbackMsg2Status(msg))
|
||||
if err == nil {
|
||||
utils.CallFuncAsync(func() {
|
||||
if msg.Cmd == mtwmapi.MsgTypeNewOrder {
|
||||
c.OnOrderDetail(orderMap, partner.CreatedPeration)
|
||||
} else {
|
||||
c.OnOrderDetail(orderMap, partner.UpdatedPeration)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
if c.isAfsMsg(msg) {
|
||||
response = c.OnAfsOrderMsg(msg)
|
||||
} else {
|
||||
if status := c.callbackMsg2Status(msg); status != nil {
|
||||
if status.Status == model.OrderStatusAdjust {
|
||||
var order *model.GoodsOrder
|
||||
if order, err = c.GetOrder(GetOrderIDFromMsg(msg)); err == nil {
|
||||
skuList := api.MtwmAPI.GetRefundSkuDetailFromMsg(msg)
|
||||
var removedSkuList []*model.OrderSku
|
||||
for _, mtwmSku := range skuList {
|
||||
removedSkuList = append(removedSkuList, &model.OrderSku{
|
||||
SkuID: int(utils.Str2Int64WithDefault(mtwmSku.SkuID, 0)),
|
||||
Count: mtwmSku.Count,
|
||||
})
|
||||
}
|
||||
order = jxutils.RemoveSkuFromOrder(order, removedSkuList)
|
||||
err = partner.CurOrderManager.OnOrderAdjust(order, status)
|
||||
}
|
||||
} else {
|
||||
err = partner.CurOrderManager.OnOrderStatusChanged(status)
|
||||
if err == nil && msg.Cmd == mtwmapi.MsgTypeOrderFinished {
|
||||
if msg.Cmd == mtwmapi.MsgTypeNewOrder {
|
||||
order, orderMap, err2 := c.getOrder(GetOrderIDFromMsg(msg))
|
||||
if err = err2; err == nil {
|
||||
err = partner.CurOrderManager.OnOrderNew(order, c.callbackMsg2Status(msg))
|
||||
if err == nil {
|
||||
utils.CallFuncAsync(func() {
|
||||
orderMap, err := api.MtwmAPI.OrderGetOrderDetail(utils.Str2Int64(GetOrderIDFromMsg(msg)), true)
|
||||
if err == nil && utils.MustInterface2Int64(orderMap["is_third_shipping"]) == SelfDeliveryCarrierNo {
|
||||
if msg.Cmd == mtwmapi.MsgTypeNewOrder {
|
||||
c.OnOrderDetail(orderMap, partner.CreatedPeration)
|
||||
} else {
|
||||
c.OnOrderDetail(orderMap, partner.UpdatedPeration)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if status := c.callbackMsg2Status(msg); status != nil {
|
||||
if status.Status == model.OrderStatusAdjust {
|
||||
var order *model.GoodsOrder
|
||||
if order, err = c.GetOrder(GetOrderIDFromMsg(msg)); err == nil {
|
||||
skuList := api.MtwmAPI.GetRefundSkuDetailFromMsg(msg)
|
||||
var removedSkuList []*model.OrderSku
|
||||
for _, mtwmSku := range skuList {
|
||||
removedSkuList = append(removedSkuList, &model.OrderSku{
|
||||
SkuID: int(utils.Str2Int64WithDefault(mtwmSku.SkuID, 0)),
|
||||
Count: mtwmSku.Count,
|
||||
})
|
||||
}
|
||||
order = jxutils.RemoveSkuFromOrder(order, removedSkuList)
|
||||
err = partner.CurOrderManager.OnOrderAdjust(order, status)
|
||||
}
|
||||
} else {
|
||||
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, "")
|
||||
@@ -216,7 +220,7 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *mtwmapi.CallbackMsg) (orderSta
|
||||
case mtwmapi.MsgTypeOrderRefund, mtwmapi.MsgTypeOrderPartialRefund:
|
||||
notifyType := msg.Data.Get("notify_type")
|
||||
vendorStatus = msg.Cmd + "-" + notifyType
|
||||
if !isOrderFinished(utils.Str2Int64(orderID)) {
|
||||
if true /*!c.isOrderFinished(utils.Str2Int64(orderID))*/ { // 已经提前判断了,到这里的都是售中
|
||||
remark = msg.Data.Get("reason")
|
||||
if msg.Cmd == mtwmapi.MsgTypeOrderPartialRefund {
|
||||
if notifyType == mtwmapi.NotifyTypePartyApply {
|
||||
@@ -404,7 +408,7 @@ func (c *PurchaseHandler) AdjustOrder(ctx *jxcontext.Context, order *model.Goods
|
||||
return err
|
||||
}
|
||||
|
||||
func isOrderFinished(vendorOrderID int64) bool {
|
||||
func (c *PurchaseHandler) isOrderFinished(vendorOrderID int64) bool {
|
||||
if status, err := api.MtwmAPI.OrderViewStatus(vendorOrderID); err == nil {
|
||||
strStatus := utils.Int2Str(status)
|
||||
return strStatus == mtwmapi.OrderStatusFinished ||
|
||||
|
||||
Reference in New Issue
Block a user