From 24af4bc3304aa452c9e5b106c432676fde2c4512 Mon Sep 17 00:00:00 2001 From: gazebo Date: Thu, 28 Mar 2019 15:09:23 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E9=87=8D=E6=9E=84RefreshOrderRealMobile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/misc/misc.go | 58 ++++++++++++++++++- business/partner/partner.go | 2 +- business/partner/purchase/ebai/order.go | 47 +-------------- business/partner/purchase/elm/order.go | 6 +- business/partner/purchase/jd/order.go | 5 +- business/partner/purchase/mtwm/order.go | 6 +- business/partner/purchase/weimob/wsc/order.go | 5 +- controllers/jx_order.go | 12 ++-- 8 files changed, 78 insertions(+), 63 deletions(-) diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index 1aee07076..2834f33cf 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -1,11 +1,17 @@ package misc import ( + "fmt" + "strings" "time" "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/partner/purchase/ebai" + "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" + "git.rosy.net.cn/jx-callback/business/model" + "git.rosy.net.cn/jx-callback/business/model/dao" + "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals" ) @@ -18,8 +24,56 @@ func StartRefreshEbaiRealMobile() { } func RefreshEbaiRealMobile() { - ebai.CurPurchaseHandler.RefreshRealMobile(jxcontext.AdminCtx, time.Now().Add(-6*time.Hour), utils.DefaultTimeValue, true, true) + RefreshRealMobile(jxcontext.AdminCtx, model.VendorIDEBAI, time.Now().Add(-24*time.Hour), utils.DefaultTimeValue, true, true) utils.AfterFuncWithRecover(1*time.Hour, func() { RefreshEbaiRealMobile() }) } + +func RefreshRealMobile(ctx *jxcontext.Context, vendorID int, fromTime, toTime time.Time, isAsync, isContinueWhenError bool) (hint string, err error) { + handler := partner.GetPurchasePlatformFromVendorID(vendorID) + if handler == nil { + return "", fmt.Errorf("不合法的vendorID:%d", vendorID) + } + sql := ` + SELECT * + FROM goods_order + WHERE vendor_id = ? AND consignee_mobile2 = '' AND order_created_at <= ? + ` + sqlParams := []interface{}{ + vendorID, + time.Now().Add(-4 * time.Hour), // 最近的刷新意义不大 + } + if !utils.IsTimeZero(fromTime) { + sql += " AND order_created_at >= ?" + sqlParams = append(sqlParams, fromTime) + } + if !utils.IsTimeZero(toTime) { + sql += " AND order_created_at <= ?" + sqlParams = append(sqlParams, toTime) + } + var orderList []*model.GoodsOrder + db := dao.GetDB() + if err = dao.GetRows(db, &orderList, sql, sqlParams...); err == nil && len(orderList) > 0 { + task := tasksch.NewParallelTask("misc RefreshRealMobile", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, + func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + order := batchItemList[0].(*model.GoodsOrder) + mobile, err2 := handler.GetOrderRealMobile(ctx, order) + if err = err2; err == nil { + if !jxutils.IsMobileFake(mobile) && strings.Index(order.ConsigneeMobile, mobile) == -1 { + order.ConsigneeMobile2 = mobile + _, err = dao.UpdateEntity(db, order, "ConsigneeMobile2") + } + } else { + globals.SugarLogger.Infof("RefreshRealMobile orderID:%s failed with error:%v", order.VendorOrderID, err) + } + return nil, err + }, orderList) + tasksch.HandleTask(task, nil, true).Run() + hint = task.ID + if !isAsync { + _, err = task.GetResult(0) + } + } + return hint, err +} diff --git a/business/partner/partner.go b/business/partner/partner.go index 8e0fa415f..03b1dd709 100644 --- a/business/partner/partner.go +++ b/business/partner/partner.go @@ -115,7 +115,7 @@ type IPurchasePlatformHandler interface { FullSyncStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, isAsync, isContinueWhenError bool) (hint string, err error) DeleteRemoteStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, isAsync, isContinueWhenError bool) (hint string, err error) GetVendorID() int - RefreshRealMobile(ctx *jxcontext.Context, fromTime, toTime time.Time, isAsync, isContinueWhenError bool) (hint string, err error) + GetOrderRealMobile(ctx *jxcontext.Context, order *model.GoodsOrder) (mobile string, err error) ReplyOrderComment(ctx *jxcontext.Context, orderComment *model.OrderComment, replyComment string) (err error) } diff --git a/business/partner/purchase/ebai/order.go b/business/partner/purchase/ebai/order.go index b8a4e433e..5805b0942 100644 --- a/business/partner/purchase/ebai/order.go +++ b/business/partner/purchase/ebai/order.go @@ -2,7 +2,6 @@ package ebai import ( "math" - "strings" "time" "git.rosy.net.cn/baseapi/platformapi/autonavi" @@ -11,7 +10,6 @@ import ( "git.rosy.net.cn/jx-callback/business/jxcallback/scheduler" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" - "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/partner" @@ -339,46 +337,7 @@ func getTimeFromInterface(timeValue interface{}) time.Time { return utils.Timestamp2Time(timeStamp) } -func (c *PurchaseHandler) RefreshRealMobile(ctx *jxcontext.Context, fromTime, toTime time.Time, isAsync, isContinueWhenError bool) (hint string, err error) { - sql := ` - SELECT * - FROM goods_order - WHERE vendor_id = ? AND consignee_mobile2 = '' AND order_created_at <= ? - ` - sqlParams := []interface{}{ - model.VendorIDEBAI, - time.Now().Add(-4 * time.Hour), - } - if !utils.IsTimeZero(fromTime) { - sql += " AND order_created_at >= ?" - sqlParams = append(sqlParams, fromTime) - } - if !utils.IsTimeZero(toTime) { - sql += " AND order_created_at <= ?" - sqlParams = append(sqlParams, toTime) - } - var orderList []*model.GoodsOrder - db := dao.GetDB() - if err = dao.GetRows(db, &orderList, sql, sqlParams...); err == nil && len(orderList) > 0 { - task := tasksch.NewParallelTask("ebai RefreshRealMobile", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, - func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - order := batchItemList[0].(*model.GoodsOrder) - mobile, err2 := api.EbaiAPI.GetRealMobile4Order(order.VendorOrderID) - if err = err2; err == nil { - if !jxutils.IsMobileFake(mobile) && strings.Index(order.ConsigneeMobile, mobile) == -1 { - order.ConsigneeMobile2 = mobile - _, err = dao.UpdateEntity(db, order, "ConsigneeMobile2") - } - } else { - globals.SugarLogger.Infof("RefreshRealMobile orderID:%s failed with error:%v", order.VendorOrderID, err) - } - return nil, err - }, orderList) - tasksch.HandleTask(task, nil, true).Run() - hint = task.ID - if !isAsync { - _, err = task.GetResult(0) - } - } - return hint, err +func (c *PurchaseHandler) GetOrderRealMobile(ctx *jxcontext.Context, order *model.GoodsOrder) (mobile string, err error) { + mobile, err = api.EbaiAPI.GetRealMobile4Order(order.VendorOrderID) + return mobile, err } diff --git a/business/partner/purchase/elm/order.go b/business/partner/purchase/elm/order.go index d402ddacd..14b2e3c0d 100644 --- a/business/partner/purchase/elm/order.go +++ b/business/partner/purchase/elm/order.go @@ -1,6 +1,7 @@ package elm import ( + "errors" "fmt" "math" "strings" @@ -326,6 +327,7 @@ func (c *PurchaseHandler) GetStatusActionTimeout(order *model.GoodsOrder, status return params } -func (c *PurchaseHandler) RefreshRealMobile(ctx *jxcontext.Context, fromTime, toTime time.Time, isAsync, isContinueWhenError bool) (hint string, err error) { - return hint, err +func (c *PurchaseHandler) GetOrderRealMobile(ctx *jxcontext.Context, order *model.GoodsOrder) (mobile string, err error) { + err = errors.New("饿了么还未实现GetOrderRealMobile") + return mobile, err } diff --git a/business/partner/purchase/jd/order.go b/business/partner/purchase/jd/order.go index 2260511d5..bd9f750c0 100644 --- a/business/partner/purchase/jd/order.go +++ b/business/partner/purchase/jd/order.go @@ -305,6 +305,7 @@ func (c *PurchaseHandler) SelfDeliverDelivered(order *model.GoodsOrder, userName return err } -func (c *PurchaseHandler) RefreshRealMobile(ctx *jxcontext.Context, fromTime, toTime time.Time, isAsync, isContinueWhenError bool) (hint string, err error) { - return hint, err +func (c *PurchaseHandler) GetOrderRealMobile(ctx *jxcontext.Context, order *model.GoodsOrder) (mobile string, err error) { + mobile, err = api.JdAPI.GetRealMobile4Order(order.VendorOrderID, order.VendorStoreID) + return mobile, err } diff --git a/business/partner/purchase/mtwm/order.go b/business/partner/purchase/mtwm/order.go index aec0e56de..b6541f41c 100644 --- a/business/partner/purchase/mtwm/order.go +++ b/business/partner/purchase/mtwm/order.go @@ -1,6 +1,7 @@ package mtwm import ( + "errors" "fmt" "net/url" "time" @@ -276,8 +277,9 @@ func getTimeFromTimestamp(timeStamp int64) time.Time { return utils.Timestamp2Time(timeStamp) } -func (c *PurchaseHandler) RefreshRealMobile(ctx *jxcontext.Context, fromTime, toTime time.Time, isAsync, isContinueWhenError bool) (hint string, err error) { - return hint, err +func (c *PurchaseHandler) GetOrderRealMobile(ctx *jxcontext.Context, order *model.GoodsOrder) (mobile string, err error) { + err = errors.New("美团外卖还未实现GetOrderRealMobile") + return mobile, err } func (c *PurchaseHandler) GetStatusActionTimeout(order *model.GoodsOrder, statusType, status int) (params *partner.StatusActionParams) { diff --git a/business/partner/purchase/weimob/wsc/order.go b/business/partner/purchase/weimob/wsc/order.go index 30ceb3605..41e92e0b9 100644 --- a/business/partner/purchase/weimob/wsc/order.go +++ b/business/partner/purchase/weimob/wsc/order.go @@ -335,6 +335,7 @@ func (p *PurchaseHandler) setStoreOrderSeq(order *model.GoodsOrder) { } } -func (c *PurchaseHandler) RefreshRealMobile(ctx *jxcontext.Context, fromTime, toTime time.Time, isAsync, isContinueWhenError bool) (hint string, err error) { - return hint, err +func (c *PurchaseHandler) GetOrderRealMobile(ctx *jxcontext.Context, order *model.GoodsOrder) (mobile string, err error) { + err = errors.New("微盟微商城还未实现GetOrderRealMobile") + return mobile, err } diff --git a/controllers/jx_order.go b/controllers/jx_order.go index fcc63b0de..c09b15ce2 100644 --- a/controllers/jx_order.go +++ b/controllers/jx_order.go @@ -8,10 +8,10 @@ import ( "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxcallback/orderman" "git.rosy.net.cn/jx-callback/business/jxcallback/scheduler/defsch" + "git.rosy.net.cn/jx-callback/business/jxstore/misc" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" - "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals" "github.com/astaxie/beego" ) @@ -290,13 +290,9 @@ func (c *OrderController) GetOrderStatusList() { // @router /RefreshOrderRealMobile [put] func (c *OrderController) RefreshOrderRealMobile() { c.callRefreshOrderRealMobile(func(params *tOrderRefreshOrderRealMobileParams) (retVal interface{}, errCode string, err error) { - if handler := partner.GetPurchasePlatformFromVendorID(params.VendorID); handler != nil { - timeList, err2 := jxutils.BatchStr2Time(params.FromTime, params.ToTime) - if err = err2; err == nil { - retVal, err = handler.RefreshRealMobile(params.Ctx, timeList[0], timeList[1], params.IsAsync, params.IsContinueWhenError) - } - } else { - err = fmt.Errorf("vendorID:%d非法", params.VendorID) + timeList, err2 := jxutils.BatchStr2Time(params.FromTime, params.ToTime) + if err = err2; err == nil { + retVal, err = misc.RefreshRealMobile(params.Ctx, params.VendorID, timeList[0], timeList[1], params.IsAsync, params.IsContinueWhenError) } return retVal, "", err })