From 9498542e594cf8e1a3f42046cdef65cbb3259b34 Mon Sep 17 00:00:00 2001 From: gazebo Date: Thu, 19 Dec 2019 12:07:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AE=A2=E5=8D=95=E8=B0=83?= =?UTF-8?q?=E5=BA=A6=E5=AE=9A=E6=97=B6=E5=99=A8=E7=9A=84BUG=20PickupGoods?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E5=90=8E=E5=88=A4=E6=96=AD=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=A6=82=E6=9E=9C=E6=98=AF=E5=B7=B2=E7=BB=8F?= =?UTF-8?q?=E5=A4=A7=E4=BA=8E=E6=8B=A3=E8=B4=A7=E5=AE=8C=E6=88=90=EF=BC=8C?= =?UTF-8?q?=E5=88=99=E5=BF=BD=E7=95=A5=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/scheduler/basesch/basesch.go | 10 ++++++++-- business/jxcallback/scheduler/defsch/defsch.go | 9 +++++++-- business/partner/partner_order.go | 1 + business/partner/purchase/ebai/order.go | 8 ++++++++ business/partner/purchase/jd/order.go | 12 ++++++++++-- business/partner/purchase/jd/order_test.go | 8 ++++++++ business/partner/purchase/jd/sku_test.go | 14 -------------- business/partner/purchase/jx/order.go | 9 +++++++++ business/partner/purchase/mtwm/order.go | 8 ++++++++ business/partner/purchase/mtwm/order_test.go | 8 ++++++++ business/partner/purchase/weimob/wsc/order.go | 5 +++++ 11 files changed, 72 insertions(+), 20 deletions(-) diff --git a/business/jxcallback/scheduler/basesch/basesch.go b/business/jxcallback/scheduler/basesch/basesch.go index 72a09852d..1f623cd4f 100644 --- a/business/jxcallback/scheduler/basesch/basesch.go +++ b/business/jxcallback/scheduler/basesch/basesch.go @@ -37,8 +37,14 @@ func (c *BaseScheduler) PickupGoods(order *model.GoodsOrder, isSelfDelivery bool globals.SugarLogger.Infof("PickupGoods orderID:%s", order.VendorOrderID) if /*order.LockStatus == model.OrderStatusUnknown && */ order.Status == model.OrderStatusAccepted { if c.IsReallyCallPlatformAPI { - err = utils.CallFuncLogErrorWithInfo(func() error { - return partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).PickupGoods(order, isSelfDelivery, userName) + handler := partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID) + err = utils.CallFuncLogErrorWithInfo(func() (err error) { + if err = handler.PickupGoods(order, isSelfDelivery, userName); err != nil { + if status, err2 := handler.GetOrderStatus(order.VendorOrgCode, order.VendorOrderID); err2 == nil && status >= model.OrderStatusFinished { + err = nil + } + } + return err }, "PickupGoods orderID:%s", order.VendorOrderID) } } else { diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 1d757083c..b9893143b 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -175,7 +175,7 @@ func (w *WatchOrderInfo) StopTimer(statusType, vendorID, status int) { for _, timerInfo := range w.timerList { if (statusType == -1 || statusType == timerInfo.statusType) && (vendorID == -1 || vendorID == timerInfo.vendorID) && - (status == -1 || status <= timerInfo.status) { + (status == -1 || status >= timerInfo.status) { if timerInfo.timer != nil { timerInfo.timer.Stop() timerInfo.timer = nil @@ -187,6 +187,10 @@ func (w *WatchOrderInfo) StopTimer(statusType, vendorID, status int) { w.timerList = newTimerList } +func (w *WatchOrderInfo) AddTimer(timerInfo *tTimerInfo) { + w.timerList = append(w.timerList, timerInfo) +} + func (w *WatchOrderInfo) GetCreateWaybillTimeout() (timeoutSecond int) { // if w.timerStatusType == scheduler.TimerStatusTypeWaybill && w.timerStatus == model.WaybillStatusNew { // timeoutSecond = int(w.timerTime.Sub(time.Now()) / time.Second) @@ -267,7 +271,7 @@ func init() { return nil }, ShouldSetTimer: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) bool { - return savedOrderInfo.autoPickupTimeoutMinute > 0 + return savedOrderInfo.autoPickupTimeoutMinute > 0 && savedOrderInfo.order.Status < model.OrderStatusFinishedPickup }, }, model.OrderStatusFinishedPickup: &StatusActionConfig{ @@ -840,6 +844,7 @@ func (s *DefScheduler) resetTimer(savedOrderInfo *WatchOrderInfo, bill *model.Wa ts.StopTimer(statusType, vendorID, status) }, jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID)) }) + savedOrderInfo.AddTimer(timerInfo) } globals.SugarLogger.Debugf("resetTimer, orderID:%s, statusType:%d, status:%d, timeout:%v", order.VendorOrderID, statusType, status, timeout) } else { diff --git a/business/partner/partner_order.go b/business/partner/partner_order.go index 42065ab7d..55ffd0bf3 100644 --- a/business/partner/partner_order.go +++ b/business/partner/partner_order.go @@ -13,6 +13,7 @@ type OrderPhoneNumberInfo struct { type IPurchasePlatformOrderHandler interface { Map2Order(orderData map[string]interface{}) (order *model.GoodsOrder) GetOrder(vendorOrgCode, vendorOrderID string) (order *model.GoodsOrder, err error) + GetOrderStatus(vendorOrgCode, vendorOrderID string) (status int, err error) GetStatusActionTimeout(order *model.GoodsOrder, statusType, status int) (params *StatusActionParams) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) diff --git a/business/partner/purchase/ebai/order.go b/business/partner/purchase/ebai/order.go index a0bb3244d..2a54cd1e7 100644 --- a/business/partner/purchase/ebai/order.go +++ b/business/partner/purchase/ebai/order.go @@ -79,6 +79,14 @@ func (p *PurchaseHandler) GetOrder(vendorOrgCode, vendorOrderID string) (order * return order, err } +func (p *PurchaseHandler) GetOrderStatus(vendorOrgCode, vendorOrderID string) (status int, err error) { + status, err = api.EbaiAPI.OrderStatusGet(vendorOrderID) + if err == nil { + status = p.getStatusFromVendorStatus(utils.Int2Str(status)) + } + return status, err +} + func (p *PurchaseHandler) getOrder(vendorOrderID string) (order *model.GoodsOrder, orderMap map[string]interface{}, err error) { result, err := api.EbaiAPI.OrderGet(vendorOrderID) if err == nil { diff --git a/business/partner/purchase/jd/order.go b/business/partner/purchase/jd/order.go index ab6ca39a7..027916002 100644 --- a/business/partner/purchase/jd/order.go +++ b/business/partner/purchase/jd/order.go @@ -27,8 +27,8 @@ var ( jdapi.OrderStatusFinishedPickup: model.OrderStatusFinishedPickup, jdapi.OrderStatusDelivering: model.OrderStatusDelivering, jdapi.OrderStatusDelivered: model.OrderStatusFinished, - // jdapi.OrderStatusFinished: model.OrderStatusFinished, // todo 这个状态不是真正都完成的意思 - jdapi.OrderStatusCanceled: model.OrderStatusCanceled, + jdapi.OrderStatusFinished: model.OrderStatusFinished, // todo 这个状态不是真正都完成的意思? + jdapi.OrderStatusCanceled: model.OrderStatusCanceled, jdapi.OrderStatusAdjust: model.OrderStatusAdjust, jdapi.OrderStatusUserApplyCancel: model.OrderStatusApplyCancel, @@ -147,6 +147,14 @@ func (c *PurchaseHandler) GetOrder(vendorOrgCode, orderID string) (order *model. return order, err } +func (p *PurchaseHandler) GetOrderStatus(vendorOrgCode, vendorOrderID string) (status int, err error) { + order, err := getAPI(vendorOrgCode).QuerySingleOrder2(vendorOrderID) + if err == nil { + status = p.getStatusFromVendorStatus(utils.Int2Str(order.OrderStatus)) + } + return status, err +} + func (c *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *model.GoodsOrder) { result := orderData orderID := utils.Int64ToStr(utils.MustInterface2Int64(result["orderId"])) diff --git a/business/partner/purchase/jd/order_test.go b/business/partner/purchase/jd/order_test.go index 5703907bf..34aa07ea9 100644 --- a/business/partner/purchase/jd/order_test.go +++ b/business/partner/purchase/jd/order_test.go @@ -32,6 +32,14 @@ func TestGetOrder(t *testing.T) { } } +func TestGetOrderStatus(t *testing.T) { + status, err := CurPurchaseHandler.GetOrderStatus("", "929203144000041") + if err != nil { + t.Fatal(err.Error()) + } + t.Log(status) +} + func TestListOrders(t *testing.T) { result, err := CurPurchaseHandler.ListOrders(jxcontext.AdminCtx, "", nil, time.Now(), "") if err != nil { diff --git a/business/partner/purchase/jd/sku_test.go b/business/partner/purchase/jd/sku_test.go index 26a23090e..d3ced1fdd 100644 --- a/business/partner/purchase/jd/sku_test.go +++ b/business/partner/purchase/jd/sku_test.go @@ -23,20 +23,6 @@ func TestCreateSku(t *testing.T) { // } } -func TestUpdateSku(t *testing.T) { - // t.Log(beego.BConfig.RunMode) - db := dao.GetDB() - skuID := 21741 - sku := &model.Sku{} - sku.ID = skuID - dao.GetEntity(db, sku) - - err := CurPurchaseHandler.UpdateSku(db, sku, "autotest") - if err != nil { - t.Fatal(err.Error()) - } -} - func TestGetAllCategories(t *testing.T) { result, err := CurPurchaseHandler.GetAllCategories(jxcontext.AdminCtx, "") if err != nil || len(result) == 0 { diff --git a/business/partner/purchase/jx/order.go b/business/partner/purchase/jx/order.go index efd086d3f..49a0c62d5 100644 --- a/business/partner/purchase/jx/order.go +++ b/business/partner/purchase/jx/order.go @@ -16,9 +16,18 @@ func (c *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo } func (c *PurchaseHandler) GetOrder(vendorOrgCode, orderID string) (order *model.GoodsOrder, err error) { + order, err = partner.CurOrderManager.LoadOrder(orderID, model.VendorIDJX) return order, err } +func (p *PurchaseHandler) GetOrderStatus(vendorOrgCode, vendorOrderID string) (status int, err error) { + order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, model.VendorIDJX) + if err == nil { + status = order.Status + } + return status, err +} + func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) { var status int if isAcceptIt { diff --git a/business/partner/purchase/mtwm/order.go b/business/partner/purchase/mtwm/order.go index 37ac17b84..32783632c 100644 --- a/business/partner/purchase/mtwm/order.go +++ b/business/partner/purchase/mtwm/order.go @@ -99,6 +99,14 @@ func (p *PurchaseHandler) GetOrder(vendorOrgCode, vendorOrderID string) (order * return order, err } +func (p *PurchaseHandler) GetOrderStatus(vendorOrgCode, vendorOrderID string) (status int, err error) { + status, err = api.MtwmAPI.OrderViewStatus(utils.Str2Int64(vendorOrderID)) + if err == nil { + status = p.getStatusFromVendorStatus(utils.Int2Str(status)) + } + return status, err +} + func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *model.GoodsOrder) { result := orderData vendorOrderID := utils.Int64ToStr(utils.MustInterface2Int64(result["order_id"])) diff --git a/business/partner/purchase/mtwm/order_test.go b/business/partner/purchase/mtwm/order_test.go index b5a3cac58..a7e62f6fe 100644 --- a/business/partner/purchase/mtwm/order_test.go +++ b/business/partner/purchase/mtwm/order_test.go @@ -18,6 +18,14 @@ func TestGetOrder(t *testing.T) { t.Log(utils.Format4Output(result, false)) } +func TestGetOrderStatus(t *testing.T) { + result, err := CurPurchaseHandler.GetOrderStatus("", "71884881906304496") + if err != nil { + t.Fatal(err) + } + t.Log(utils.Format4Output(result, false)) +} + func TestListOrders(t *testing.T) { result, err := CurPurchaseHandler.ListOrders(jxcontext.AdminCtx, "", nil, time.Now(), "4626746") if err != nil { diff --git a/business/partner/purchase/weimob/wsc/order.go b/business/partner/purchase/weimob/wsc/order.go index 0e5967048..7978f3b62 100644 --- a/business/partner/purchase/weimob/wsc/order.go +++ b/business/partner/purchase/weimob/wsc/order.go @@ -2,6 +2,7 @@ package wsc import ( "errors" + "fmt" "time" "git.rosy.net.cn/baseapi/platformapi/weimobapi" @@ -108,6 +109,10 @@ func (p *PurchaseHandler) GetOrder(vendorOrgCode, vendorOrderID string) (order * return order, err } +func (p *PurchaseHandler) GetOrderStatus(vendorOrgCode, vendorOrderID string) (status int, err error) { + return 0, fmt.Errorf("未实现") +} + func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *model.GoodsOrder) { result := orderData vendorOrderID := utils.Int64ToStr(utils.MustInterface2Int64(result["orderNo"]))