From 5746c8f3aed84782d09622ac070482dd231cbca3 Mon Sep 17 00:00:00 2001 From: gazebo Date: Sun, 12 May 2019 09:25:37 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E8=B0=83=E6=95=B4=E7=BE=8E=E5=9B=A2?= =?UTF-8?q?=E5=A4=96=E5=8D=96=E5=94=AE=E5=90=8E=E5=8D=95=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E7=BB=93=E6=9E=84=EF=BC=88=E4=B8=8EJD?= =?UTF-8?q?=E5=92=8CEBAI=E4=B8=80=E8=87=B4=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../partner/purchase/ebai/financial_test.go | 2 +- business/partner/purchase/mtwm/callback.go | 5 +- .../partner/purchase/mtwm/financial_test.go | 2 +- business/partner/purchase/mtwm/order.go | 76 ++++++++++--------- business/partner/purchase/mtwm/order_afs.go | 38 ++++++++++ 5 files changed, 82 insertions(+), 41 deletions(-) diff --git a/business/partner/purchase/ebai/financial_test.go b/business/partner/purchase/ebai/financial_test.go index abb48c87d..dd8b99cd5 100644 --- a/business/partner/purchase/ebai/financial_test.go +++ b/business/partner/purchase/ebai/financial_test.go @@ -27,7 +27,7 @@ func TestOnFinancialMsg(t *testing.T) { // msg.Body["type"] = json.Number("40") // msg.Body["cancel_type"] = json.Number("2") - res := CurPurchaseHandler.OnFinancialMsg(msg) + res := CurPurchaseHandler.onAfsOrderMsg(msg) fmt.Println(res) } diff --git a/business/partner/purchase/mtwm/callback.go b/business/partner/purchase/mtwm/callback.go index 4bb0df4ee..f0c5c6937 100644 --- a/business/partner/purchase/mtwm/callback.go +++ b/business/partner/purchase/mtwm/callback.go @@ -2,7 +2,6 @@ package mtwm import ( "git.rosy.net.cn/baseapi/platformapi/mtwmapi" - "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/model" ) @@ -19,11 +18,11 @@ func OnOrderCallbackMsg(msg *mtwmapi.CallbackMsg) (response *mtwmapi.CallbackRes } }, jxutils.ComposeUniversalOrderID(orderID, model.VendorIDMTWM)) } - if msg.Cmd == mtwmapi.MsgTypeOrderRefund || msg.Cmd == mtwmapi.MsgTypeOrderPartialRefund { + /*if msg.Cmd == mtwmapi.MsgTypeOrderRefund || msg.Cmd == mtwmapi.MsgTypeOrderPartialRefund { utils.CallFuncAsync(func() { OnFinancialMsg(msg) }) - } else if msg.Cmd == mtwmapi.MsgTypeStoreStatusChanged { + } else */if msg.Cmd == mtwmapi.MsgTypeStoreStatusChanged { response = curPurchaseHandler.onStoreStatusChanged(msg) } } diff --git a/business/partner/purchase/mtwm/financial_test.go b/business/partner/purchase/mtwm/financial_test.go index 28fbaa1ff..ac96d99b0 100644 --- a/business/partner/purchase/mtwm/financial_test.go +++ b/business/partner/purchase/mtwm/financial_test.go @@ -41,7 +41,7 @@ func TestOnFinancialMsg(t *testing.T) { }, } msg.Data.Set("food", string(utils.MustMarshal(food))) - res := OnFinancialMsg(msg) + res := curPurchaseHandler.onAfsOrderMsg(msg) fmt.Println(res) } diff --git a/business/partner/purchase/mtwm/order.go b/business/partner/purchase/mtwm/order.go index 4afea5a37..a1ac61abb 100644 --- a/business/partner/purchase/mtwm/order.go +++ b/business/partner/purchase/mtwm/order.go @@ -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 || diff --git a/business/partner/purchase/mtwm/order_afs.go b/business/partner/purchase/mtwm/order_afs.go index 0a5d5f6b6..94721e1ce 100644 --- a/business/partner/purchase/mtwm/order_afs.go +++ b/business/partner/purchase/mtwm/order_afs.go @@ -1,16 +1,54 @@ package mtwm import ( + "fmt" + + "git.rosy.net.cn/baseapi/platformapi/mtwmapi" + "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" + "git.rosy.net.cn/jx-callback/business/partner" + "git.rosy.net.cn/jx-callback/globals" + "git.rosy.net.cn/jx-callback/globals/api" ) +func (c *PurchaseHandler) isAfsMsg(msg *mtwmapi.CallbackMsg) bool { + if msg.Cmd == mtwmapi.MsgTypeOrderRefund || msg.Cmd == mtwmapi.MsgTypeOrderPartialRefund { + return c.isOrderFinished(utils.Str2Int64(GetOrderIDFromMsg(msg))) + } + return false +} + +func (c *PurchaseHandler) OnAfsOrderMsg(msg *mtwmapi.CallbackMsg) (retVal *mtwmapi.CallbackResponse) { + utils.CallFuncAsync(func() { + jxutils.CallMsgHandler(func() { + retVal = c.onAfsOrderMsg(msg) + }, jxutils.ComposeUniversalOrderID(GetOrderIDFromMsg(msg), model.VendorIDEBAI)) + }) + return retVal +} + +func (c *PurchaseHandler) onAfsOrderMsg(msg *mtwmapi.CallbackMsg) (retVal *mtwmapi.CallbackResponse) { + var err error + err = OnFinancialMsg(msg) + return mtwmapi.Err2CallbackResponse(err, "") +} + // 审核售后单申请 func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.AfsOrder, approveType int, reason string) (err error) { + if globals.EnableMtwmStoreWrite { + if approveType == partner.AfsApproveTypeRefused { + err = api.MtwmAPI.OrderRefundReject(utils.Str2Int64(order.VendorOrderID), reason) + } else { + err = api.MtwmAPI.OrderRefundAgree(utils.Str2Int64(order.VendorOrderID), reason) + } + } return err } // 确认收到退货 func (c *PurchaseHandler) ConfirmReceivedReturnGoods(ctx *jxcontext.Context, order *model.AfsOrder) (err error) { + err = fmt.Errorf("内部错误,美团外卖平台不支持确认收到退货操作") return err }