From 87ea9ff15a677bb8a4ab5027d9fa9dd65af43992 Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 27 Mar 2019 11:39:24 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E5=AE=8C=E6=88=90=E7=BE=8E=E5=9B=A2?= =?UTF-8?q?=E5=A4=96=E5=8D=96=E8=BF=90=E5=8D=95=E8=B0=83=E5=BA=A6=20-=20?= =?UTF-8?q?=E6=95=B4=E7=90=86=E8=99=9A=E6=8B=9F=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/ebai/order.go | 42 +++++++------------- business/partner/purchase/jd/order.go | 48 +++++++++++++++-------- business/partner/purchase/mtwm/order.go | 52 +++++++++++++------------ 3 files changed, 72 insertions(+), 70 deletions(-) diff --git a/business/partner/purchase/ebai/order.go b/business/partner/purchase/ebai/order.go index 6db8aae29..34992576e 100644 --- a/business/partner/purchase/ebai/order.go +++ b/business/partner/purchase/ebai/order.go @@ -155,9 +155,9 @@ func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo func (p *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) { globals.SugarLogger.Debugf("ebai AcceptOrRefuseOrder orderID:%s", order.VendorOrderID) if isAcceptIt { - p.postFakeOrderAcceptMsg(order.VendorOrderID) + p.postFakeMsg(order.VendorOrderID, fakeAcceptOrder) } else { - if globals.EnableStoreWrite && globals.EnableEbaiStoreWrite { + if globals.EnableEbaiStoreWrite { err = api.EbaiAPI.OrderCancel(order.VendorOrderID, ebaiapi.CancelTypeCustom, "bu") } } @@ -166,11 +166,10 @@ func (p *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI func (p *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDeilivery bool, userName string) (err error) { globals.SugarLogger.Debugf("ebai PickupGoods orderID:%s", order.VendorOrderID) - if globals.EnableStoreWrite && globals.EnableEbaiStoreWrite { + if globals.EnableEbaiStoreWrite { err = api.EbaiAPI.OrderConfirm(order.VendorOrderID) - // if err == nil && !isSelfDeilivery { - // err = api.EbaiAPI.OrderCallDelivery(order.VendorOrderID) - // } + } else { + p.postFakeMsg(order.VendorOrderID, ebaiapi.OrderStatusAccepted) } return err } @@ -178,7 +177,7 @@ func (p *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDeilivery b // 将订单从购物平台配送转为自送 func (p *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error) { globals.SugarLogger.Debugf("ebai Swtich2SelfDeliver orderID:%s", order.VendorOrderID) - if globals.EnableStoreWrite && globals.EnableEbaiStoreWrite { + if globals.EnableEbaiStoreWrite { err = api.EbaiAPI.OrderSwitchselfdelivery(order.VendorOrderID) } return err @@ -194,7 +193,7 @@ func (p *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName // 完全自送的门店表示开始配送 func (p *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userName string) (err error) { globals.SugarLogger.Debugf("ebai SelfDeliverDelivering orderID:%s", order.VendorOrderID) - if globals.EnableStoreWrite && globals.EnableEbaiStoreWrite { + if globals.EnableEbaiStoreWrite { err = api.EbaiAPI.OrderSendOut(order.VendorOrderID, userName) } return err @@ -203,7 +202,7 @@ func (p *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userNam // 完全自送的门店表示配送完成 func (p *PurchaseHandler) SelfDeliverDelievered(order *model.GoodsOrder, userName string) (err error) { globals.SugarLogger.Debugf("ebai SelfDeliverDelievered orderID:%s", order.VendorOrderID) - if globals.EnableStoreWrite && globals.EnableEbaiStoreWrite { + if globals.EnableEbaiStoreWrite { err = api.EbaiAPI.OrderComplete(order.VendorOrderID, userName) } return err @@ -215,26 +214,11 @@ func (c *PurchaseHandler) onOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaiapi. retVal = c.onOrderNew(msg) } else { status := c.callbackMsg2Status(msg) + var err error if status != nil { - err := partner.CurOrderManager.OnOrderStatusChanged(status) - - // 如果订单所属的门店是专送模式,直接跳到拣货完成,因为饿百没有拣货完成的概念,接单就视为拣货完成 - // if status.Status == model.OrderStatusAccepted { - // postFakeFinishedPickupMsg := true - // vendorOrderID := GetOrderIDFromMsg(msg) - // if order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, model.VendorIDEBAI); err == nil { - // if c.getOrderStoreDeliveryType(order) != scheduler.StoreDeliveryTypeByPlatform { - // postFakeFinishedPickupMsg = false - // } - // } - // if postFakeFinishedPickupMsg { - // c.postFakeOrderAcceptMsg(vendorOrderID) - // } - // } - retVal = api.EbaiAPI.Err2CallbackResponse(msg.Cmd, err, nil) - } else { - retVal = api.EbaiAPI.Err2CallbackResponse(msg.Cmd, nil, nil) + err = partner.CurOrderManager.OnOrderStatusChanged(status) } + retVal = api.EbaiAPI.Err2CallbackResponse(msg.Cmd, err, nil) } return retVal } @@ -321,12 +305,12 @@ func (c *PurchaseHandler) getOrderStoreDeliveryType(order *model.GoodsOrder) (de return scheduler.StoreDeliveryTypeByPlatform } -func (c *PurchaseHandler) postFakeOrderAcceptMsg(vendorOrderID string) { +func (c *PurchaseHandler) postFakeMsg(vendorOrderID, vendorStatus string) { msg := &ebaiapi.CallbackMsg{ Cmd: ebaiapi.CmdOrderStatus, Timestamp: time.Now().Unix(), Body: map[string]interface{}{ - "status": fakeAcceptOrder, + "status": vendorStatus, "order_id": vendorOrderID, }, } diff --git a/business/partner/purchase/jd/order.go b/business/partner/purchase/jd/order.go index e1218f65e..783905e9b 100644 --- a/business/partner/purchase/jd/order.go +++ b/business/partner/purchase/jd/order.go @@ -226,10 +226,10 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *jdapi.CallbackOrderMsg) *model return orderStatus } -func (c *PurchaseHandler) postFakeFinishedPickupMsg(vendorOrderID string) { +func (c *PurchaseHandler) postFakeMsg(vendorOrderID, vendorStatus string) { msg := &jdapi.CallbackOrderMsg{ BillID: vendorOrderID, - StatusID: jdapi.OrderStatusFinishedPickup, + StatusID: vendorStatus, Timestamp: utils.Time2Str(time.Now()), } utils.CallFuncAsync(func() { @@ -246,28 +246,35 @@ func (c *PurchaseHandler) GetStatusFromVendorStatus(vendorStatus string) int { } func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) { - return api.JdAPI.OrderAcceptOperate(order.VendorOrderID, isAcceptIt, userName) + if globals.EnableStoreWrite { + err = api.JdAPI.OrderAcceptOperate(order.VendorOrderID, isAcceptIt, userName) + } else { + c.postFakeMsg(order.VendorOrderID, jdapi.OrderStatusWaitOutStore) + } + return err } func (c *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDeilivery bool, userName string) (err error) { - if !isSelfDeilivery { + if !isSelfDeilivery && globals.EnableStoreWrite { _, err = api.JdAPI.OrderJDZBDelivery(order.VendorOrderID, userName) } else { - c.postFakeFinishedPickupMsg(order.VendorOrderID) + c.postFakeMsg(order.VendorOrderID, jdapi.OrderStatusFinishedPickup) } return err } func (c *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error) { - _, err = api.JdAPI.ModifySellerDelivery(order.VendorOrderID, userName) - if err != nil { - if errWithCode, ok := err.(*utils.ErrorWithCode); ok && errWithCode.Level() == 1 { - globals.SugarLogger.Infof("Swtich2SelfDeliver failed with error:%v try get current status", err) - if order2, err2 := c.GetOrder(order.VendorOrderID); err2 == nil { - var mapData map[string]interface{} - if err2 = utils.UnmarshalUseNumber([]byte(order2.OriginalData), &mapData); err2 == nil { - if utils.Interface2String(mapData["deliveryCarrierNo"]) == "2938" { // 当前已经是自送状态了 - err = nil + if globals.EnableStoreWrite { + _, err = api.JdAPI.ModifySellerDelivery(order.VendorOrderID, userName) + if err != nil { + if errWithCode, ok := err.(*utils.ErrorWithCode); ok && errWithCode.Level() == 1 { + globals.SugarLogger.Infof("Swtich2SelfDeliver failed with error:%v try get current status", err) + if order2, err2 := c.GetOrder(order.VendorOrderID); err2 == nil { + var mapData map[string]interface{} + if err2 = utils.UnmarshalUseNumber([]byte(order2.OriginalData), &mapData); err2 == nil { + if utils.Interface2String(mapData["deliveryCarrierNo"]) == "2938" { // 当前已经是自送状态了 + err = nil + } } } } @@ -277,18 +284,25 @@ func (c *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName s } func (c *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error) { - _, err = api.JdAPI.DeliveryEndOrder(order.VendorOrderID, userName) + if globals.EnableStoreWrite { + _, err = api.JdAPI.DeliveryEndOrder(order.VendorOrderID, userName) + } return err } func (c *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userName string) (err error) { - _, err = api.JdAPI.OrderSerllerDelivery(order.VendorOrderID, userName) + if globals.EnableStoreWrite { + _, err = api.JdAPI.OrderSerllerDelivery(order.VendorOrderID, userName) + } return err } // 京东送达接口都是一样的 func (c *PurchaseHandler) SelfDeliverDelievered(order *model.GoodsOrder, userName string) (err error) { - return c.Swtich2SelfDelivered(order, userName) + if globals.EnableStoreWrite { + err = c.Swtich2SelfDelivered(order, userName) + } + return err } func (c *PurchaseHandler) RefreshRealMobile(ctx *jxcontext.Context, fromTime, toTime time.Time, isAsync, isContinueWhenError bool) (hint string, err error) { diff --git a/business/partner/purchase/mtwm/order.go b/business/partner/purchase/mtwm/order.go index ff6137d61..c25a6d738 100644 --- a/business/partner/purchase/mtwm/order.go +++ b/business/partner/purchase/mtwm/order.go @@ -158,7 +158,6 @@ func (c *PurchaseHandler) onOrderMsg(msg *mtwmapi.CallbackMsg) (response *mtwmap } } } else { - // todo 好像没有“商家已收到”消息回调,是否需要模拟? status := c.callbackMsg2Status(msg) err = partner.CurOrderManager.OnOrderStatusChanged(status) } @@ -199,38 +198,31 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *mtwmapi.CallbackMsg) *model.Or return orderStatus } -func (c *PurchaseHandler) postFakeFinishedPickupMsg(vendorOrderID string) { +func (c *PurchaseHandler) postFakeMsg(vendorOrderID, cmd, vendorStatus string) { msg := &mtwmapi.CallbackMsg{ Cmd: mtwmapi.MsgTypeOrderAccepted, Data: make(url.Values), } timeStr := utils.Int64ToStr(time.Now().Unix()) - msg.Data.Add(mtwmapi.KeyOrderID, vendorOrderID) - msg.Data.Add("status", mtwmapi.OrderStatusAccepted) - msg.Data.Add("timestamp", timeStr) - msg.Data.Add("utime", timeStr) + msg.Data.Set(mtwmapi.KeyOrderID, vendorOrderID) + msg.Data.Set("status", mtwmapi.OrderStatusAccepted) + msg.Data.Set("timestamp", timeStr) + msg.Data.Set("utime", timeStr) utils.CallFuncAsync(func() { OnOrderCallbackMsg(msg) }) } func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) { - if globals.EnableStoreWrite && globals.EnableMtwmStoreWrite { - if isAcceptIt { - if err = api.MtwmAPI.OrderReceived(utils.Str2Int64(order.VendorOrderID)); err == nil { - msg := &mtwmapi.CallbackMsg{ - Cmd: FakeMsgTypeOrderReceived, - Data: url.Values{}, - } - msg.Data.Set(mtwmapi.KeyOrderID, order.VendorOrderID) - msg.Data.Set("status", mtwmapi.OrderStatusReceived) - msg.Data.Set("timestamp", utils.Int64ToStr(time.Now().Unix())) - msg.Data.Set("utime", msg.Data.Get("timestamp")) - utils.CallFuncAsync(func() { - OnOrderCallbackMsg(msg) - }) - } - } else { + if isAcceptIt { + if globals.EnableMtwmStoreWrite { + err = api.MtwmAPI.OrderReceived(utils.Str2Int64(order.VendorOrderID)) + } + if err == nil { + c.postFakeMsg(order.VendorOrderID, FakeMsgTypeOrderReceived, mtwmapi.OrderStatusReceived) + } + } else { + if globals.EnableMtwmStoreWrite { err = api.MtwmAPI.OrderCancel(utils.Str2Int64(order.VendorOrderID)) } } @@ -238,27 +230,39 @@ func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI } func (c *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDeilivery bool, userName string) (err error) { - if globals.EnableStoreWrite && globals.EnableMtwmStoreWrite && !isSelfDeilivery { + if globals.EnableMtwmStoreWrite { err = api.MtwmAPI.OrderConfirm(utils.Str2Int64(order.VendorOrderID)) } else { - c.postFakeFinishedPickupMsg(order.VendorOrderID) + c.postFakeMsg(order.VendorOrderID, mtwmapi.MsgTypeOrderAccepted, mtwmapi.OrderStatusAccepted) } return err } func (c *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error) { + if globals.EnableMtwmStoreWrite { + err = api.MtwmAPI.OrderLogisticsChange2Self(utils.Str2Int64(order.VendorOrderID)) + } return err } func (c *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error) { + if globals.EnableMtwmStoreWrite { + err = api.MtwmAPI.OrderArrived(utils.Str2Int64(order.VendorOrderID)) + } return err } func (c *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userName string) (err error) { + if globals.EnableMtwmStoreWrite { + err = api.MtwmAPI.OrderDelivering(utils.Str2Int64(order.VendorOrderID)) + } return err } func (c *PurchaseHandler) SelfDeliverDelievered(order *model.GoodsOrder, userName string) (err error) { + if globals.EnableMtwmStoreWrite { + err = api.MtwmAPI.OrderArrived(utils.Str2Int64(order.VendorOrderID)) + } return err }