- 重构RefreshOrderRealMobile
This commit is contained in:
@@ -1,11 +1,17 @@
|
|||||||
package misc
|
package misc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"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/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"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -18,8 +24,56 @@ func StartRefreshEbaiRealMobile() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func RefreshEbaiRealMobile() {
|
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() {
|
utils.AfterFuncWithRecover(1*time.Hour, func() {
|
||||||
RefreshEbaiRealMobile()
|
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
|
||||||
|
}
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ type IPurchasePlatformHandler interface {
|
|||||||
FullSyncStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, isAsync, isContinueWhenError bool) (hint string, err error)
|
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)
|
DeleteRemoteStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, isAsync, isContinueWhenError bool) (hint string, err error)
|
||||||
GetVendorID() int
|
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)
|
ReplyOrderComment(ctx *jxcontext.Context, orderComment *model.OrderComment, replyComment string) (err error)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package ebai
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"math"
|
"math"
|
||||||
"strings"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/autonavi"
|
"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/jxcallback/scheduler"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"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/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"
|
||||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||||
"git.rosy.net.cn/jx-callback/business/partner"
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
@@ -339,46 +337,7 @@ func getTimeFromInterface(timeValue interface{}) time.Time {
|
|||||||
return utils.Timestamp2Time(timeStamp)
|
return utils.Timestamp2Time(timeStamp)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) RefreshRealMobile(ctx *jxcontext.Context, fromTime, toTime time.Time, isAsync, isContinueWhenError bool) (hint string, err error) {
|
func (c *PurchaseHandler) GetOrderRealMobile(ctx *jxcontext.Context, order *model.GoodsOrder) (mobile string, err error) {
|
||||||
sql := `
|
mobile, err = api.EbaiAPI.GetRealMobile4Order(order.VendorOrderID)
|
||||||
SELECT *
|
return mobile, err
|
||||||
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
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package elm
|
package elm
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math"
|
"math"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -326,6 +327,7 @@ func (c *PurchaseHandler) GetStatusActionTimeout(order *model.GoodsOrder, status
|
|||||||
return params
|
return params
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) RefreshRealMobile(ctx *jxcontext.Context, fromTime, toTime time.Time, isAsync, isContinueWhenError bool) (hint string, err error) {
|
func (c *PurchaseHandler) GetOrderRealMobile(ctx *jxcontext.Context, order *model.GoodsOrder) (mobile string, err error) {
|
||||||
return hint, err
|
err = errors.New("饿了么还未实现GetOrderRealMobile")
|
||||||
|
return mobile, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -305,6 +305,7 @@ func (c *PurchaseHandler) SelfDeliverDelivered(order *model.GoodsOrder, userName
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) RefreshRealMobile(ctx *jxcontext.Context, fromTime, toTime time.Time, isAsync, isContinueWhenError bool) (hint string, err error) {
|
func (c *PurchaseHandler) GetOrderRealMobile(ctx *jxcontext.Context, order *model.GoodsOrder) (mobile string, err error) {
|
||||||
return hint, err
|
mobile, err = api.JdAPI.GetRealMobile4Order(order.VendorOrderID, order.VendorStoreID)
|
||||||
|
return mobile, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package mtwm
|
package mtwm
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/url"
|
"net/url"
|
||||||
"time"
|
"time"
|
||||||
@@ -276,8 +277,9 @@ func getTimeFromTimestamp(timeStamp int64) time.Time {
|
|||||||
return utils.Timestamp2Time(timeStamp)
|
return utils.Timestamp2Time(timeStamp)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) RefreshRealMobile(ctx *jxcontext.Context, fromTime, toTime time.Time, isAsync, isContinueWhenError bool) (hint string, err error) {
|
func (c *PurchaseHandler) GetOrderRealMobile(ctx *jxcontext.Context, order *model.GoodsOrder) (mobile string, err error) {
|
||||||
return hint, err
|
err = errors.New("美团外卖还未实现GetOrderRealMobile")
|
||||||
|
return mobile, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) GetStatusActionTimeout(order *model.GoodsOrder, statusType, status int) (params *partner.StatusActionParams) {
|
func (c *PurchaseHandler) GetStatusActionTimeout(order *model.GoodsOrder, statusType, status int) (params *partner.StatusActionParams) {
|
||||||
|
|||||||
@@ -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) {
|
func (c *PurchaseHandler) GetOrderRealMobile(ctx *jxcontext.Context, order *model.GoodsOrder) (mobile string, err error) {
|
||||||
return hint, err
|
err = errors.New("微盟微商城还未实现GetOrderRealMobile")
|
||||||
|
return mobile, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ import (
|
|||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxcallback/orderman"
|
"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/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/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||||
"git.rosy.net.cn/jx-callback/business/partner"
|
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"github.com/astaxie/beego"
|
"github.com/astaxie/beego"
|
||||||
)
|
)
|
||||||
@@ -290,13 +290,9 @@ func (c *OrderController) GetOrderStatusList() {
|
|||||||
// @router /RefreshOrderRealMobile [put]
|
// @router /RefreshOrderRealMobile [put]
|
||||||
func (c *OrderController) RefreshOrderRealMobile() {
|
func (c *OrderController) RefreshOrderRealMobile() {
|
||||||
c.callRefreshOrderRealMobile(func(params *tOrderRefreshOrderRealMobileParams) (retVal interface{}, errCode string, err error) {
|
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)
|
timeList, err2 := jxutils.BatchStr2Time(params.FromTime, params.ToTime)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
retVal, err = handler.RefreshRealMobile(params.Ctx, timeList[0], timeList[1], params.IsAsync, params.IsContinueWhenError)
|
retVal, err = misc.RefreshRealMobile(params.Ctx, params.VendorID, timeList[0], timeList[1], params.IsAsync, params.IsContinueWhenError)
|
||||||
}
|
|
||||||
} else {
|
|
||||||
err = fmt.Errorf("vendorID:%d非法", params.VendorID)
|
|
||||||
}
|
}
|
||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user