diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go new file mode 100644 index 000000000..326d04c9a --- /dev/null +++ b/business/jxstore/misc/misc.go @@ -0,0 +1,20 @@ +package misc + +import ( + "time" + + "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" + "git.rosy.net.cn/jx-callback/business/partner/purchase/ebai" +) + +func Init() { + RefreshEbaiRealMobile() +} + +func RefreshEbaiRealMobile() { + ebai.CurPurchaseHandler.RefreshRealMobile(jxcontext.AdminCtx, time.Now().Add(-6*time.Hour), utils.DefaultTimeValue, true, true) + time.AfterFunc(1*time.Hour, func() { + RefreshEbaiRealMobile() + }) +} diff --git a/business/partner/partner.go b/business/partner/partner.go index a559c612b..2ea6fa79f 100644 --- a/business/partner/partner.go +++ b/business/partner/partner.go @@ -98,6 +98,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) } // db *dao.DaoDB, diff --git a/business/partner/purchase/ebai/callback.go b/business/partner/purchase/ebai/callback.go index 991bfdd6d..526df7216 100644 --- a/business/partner/purchase/ebai/callback.go +++ b/business/partner/purchase/ebai/callback.go @@ -12,9 +12,9 @@ func OnCallbackMsg(msg *ebaiapi.CallbackMsg) (response *ebaiapi.CallbackResponse jxutils.CallMsgHandler(func() { switch msg.Cmd { case ebaiapi.CmdOrderCreate, ebaiapi.CmdOrderStatus: - response = curPurchaseHandler.onOrderMsg(msg) + response = CurPurchaseHandler.onOrderMsg(msg) case ebaiapi.CmdOrderDeliveryStatus: - response = curPurchaseHandler.onWaybillMsg(msg) + response = CurPurchaseHandler.onWaybillMsg(msg) } }, jxutils.ComposeUniversalOrderID(orderID, model.VendorIDEBAI)) return response diff --git a/business/partner/purchase/ebai/ebai.go b/business/partner/purchase/ebai/ebai.go index e5cba88d1..61d924709 100644 --- a/business/partner/purchase/ebai/ebai.go +++ b/business/partner/purchase/ebai/ebai.go @@ -7,7 +7,7 @@ import ( ) var ( - curPurchaseHandler *PurchaseHandler + CurPurchaseHandler *PurchaseHandler ) type PurchaseHandler struct { @@ -15,8 +15,8 @@ type PurchaseHandler struct { } func init() { - curPurchaseHandler = new(PurchaseHandler) - partner.RegisterPurchasePlatform(curPurchaseHandler) + CurPurchaseHandler = new(PurchaseHandler) + partner.RegisterPurchasePlatform(CurPurchaseHandler) } func EbaiBusStatus2JxStatus(ebaiStatus int) int { diff --git a/business/partner/purchase/ebai/order.go b/business/partner/purchase/ebai/order.go index c29acd32a..a3bfcb081 100644 --- a/business/partner/purchase/ebai/order.go +++ b/business/partner/purchase/ebai/order.go @@ -10,6 +10,8 @@ import ( "git.rosy.net.cn/baseapi/utils" "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" @@ -300,3 +302,43 @@ func getTimeFromTimestampStr(sendTime string) 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.GetUserName(), 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 && !jxutils.IsMobileFake(mobile) { + order.ConsigneeMobile2 = mobile + _, err = dao.UpdateEntity(db, order, "ConsigneeMobile2") + } + return nil, err + }, orderList) + ctx.SetTaskOrAddChild(task, nil) + tasksch.ManageTask(task).Run() + hint = task.ID + if !isAsync { + _, err = task.GetResult(0) + } + } + return hint, err +} diff --git a/business/partner/purchase/elm/order.go b/business/partner/purchase/elm/order.go index fb6852571..790218c0c 100644 --- a/business/partner/purchase/elm/order.go +++ b/business/partner/purchase/elm/order.go @@ -13,6 +13,7 @@ import ( "git.rosy.net.cn/baseapi/utils" "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/model" "git.rosy.net.cn/jx-callback/business/partner" ) @@ -324,3 +325,7 @@ func (c *PurchaseHandler) GetStatusActionTimeout(statusType, status int) time.Du } return 0 } + +func (c *PurchaseHandler) RefreshRealMobile(ctx *jxcontext.Context, fromTime, toTime time.Time, isAsync, isContinueWhenError bool) (hint string, err error) { + return hint, err +} diff --git a/business/partner/purchase/jd/order.go b/business/partner/purchase/jd/order.go index 72947f414..3d143aee7 100644 --- a/business/partner/purchase/jd/order.go +++ b/business/partner/purchase/jd/order.go @@ -2,11 +2,13 @@ package jd import ( "strings" + "time" "git.rosy.net.cn/baseapi/platformapi/autonavi" "git.rosy.net.cn/baseapi/platformapi/jdapi" "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/tasksch" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/partner" @@ -258,3 +260,7 @@ func (c *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userNam func (c *PurchaseHandler) SelfDeliverDelievered(order *model.GoodsOrder, userName string) (err error) { return c.Swtich2SelfDelivered(order, userName) } + +func (c *PurchaseHandler) RefreshRealMobile(ctx *jxcontext.Context, fromTime, toTime time.Time, isAsync, isContinueWhenError bool) (hint string, err error) { + return hint, err +} diff --git a/business/partner/purchase/mtwm/order.go b/business/partner/purchase/mtwm/order.go index d9eac87fc..b8e4a43a4 100644 --- a/business/partner/purchase/mtwm/order.go +++ b/business/partner/purchase/mtwm/order.go @@ -8,6 +8,7 @@ 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/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" @@ -228,3 +229,7 @@ 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 +} diff --git a/business/partner/purchase/weimob/wsc/order.go b/business/partner/purchase/weimob/wsc/order.go index c64d72e89..590ae0991 100644 --- a/business/partner/purchase/weimob/wsc/order.go +++ b/business/partner/purchase/weimob/wsc/order.go @@ -8,6 +8,7 @@ import ( "git.rosy.net.cn/baseapi/platformapi/weimobapi" "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/model/dao" "git.rosy.net.cn/jx-callback/business/partner" @@ -333,3 +334,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 +} diff --git a/conf/app.conf b/conf/app.conf index 954428615..5c9b94ef3 100644 --- a/conf/app.conf +++ b/conf/app.conf @@ -40,6 +40,8 @@ weixinMiniAppID = "wx4b5930c13f8b1170" weixinMiniSecret = "2a57228a716ce991a52739f0ff41111d" jdStorePageCookie = "YYJV3NHVBPHLD36FWP6F3EM5PTXJ2XZQS7U4HWRIDPP4IWGUKUIB4XG5N26CZRDLDF7PKOXBPD6BNTUAJLETLZOIWMCVFI3K6MYZIY4QBIXIMXYDJNUKFGJVQTN5356SAD6WPCIHWNQAG7DDMF7L7S3SHBUOPCIUXDX4MQEAYEPUFFOAD4WJECT4R3K22T24MKC7OMIRDLX7S55243TDVXLO25PP4UYSPTTPMNRUFXDNP4WPE566Q6V4AH32F7HT" +ebaiStorePageCookieWMUSS = "AADIBAABbDlEpGl47c1EyBFcJSidBTBJHFHZEXyMSdBllJTZ9AUNOKV0tZFB9FlRVM73gEAIHRjBVagwAAHh98X2oPJ34Gal0ofFJBYXZ2Xnc6LCEXWQVnVxs7LDlaKBlFNz9DPCogYyZxJQhoHGVfVRIBa2oFUkEfDm1YZxZwLEwvZMjpB18rjw%7E3CaMQAo" +ebaiStorePageCookieWMSTOKEN = "HwXAAB9SGxnTT8pbEwWRDQsNGB3Y09_PF5rO157QUcoLRQAAAoKlgUEiVTOhIf5LjkCoFpAwwCaAAAUr-GEu-yDBeNAQAAHNneF25-uRjhYtgX4rsAAGHurh8C5GAQAA" weimobAppID = "319F5E7FB6784DFCA3684C9333EB7744" weimobAppSecret = "7267AA7F58261F6965599218F5A1D592" diff --git a/controllers/jx_order.go b/controllers/jx_order.go index d3b810760..b783a3058 100644 --- a/controllers/jx_order.go +++ b/controllers/jx_order.go @@ -8,7 +8,9 @@ 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/jxutils" "git.rosy.net.cn/jx-callback/business/model" + "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals" "github.com/astaxie/beego" ) @@ -257,3 +259,28 @@ func (c *OrderController) GetOrderStatusList() { return retVal, "", err }) } + +// @Title 刷新订单真实手机号 +// @Description 刷新订单真实手机号 +// @Param token header string true "认证token" +// @Param vendorID formData int true "厂商ID" +// @Param fromTime formData string false "起始时间" +// @Param toTime formData string false "结束时间" +// @Param isAsync formData bool true "是否异步操作" +// @Param isContinueWhenError formData bool false "单个同步失败是否继续,缺省false" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @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) + } + return retVal, "", err + }) +} diff --git a/globals/api/api.go b/globals/api/api.go index e0c5ab9db..70d46ea1b 100644 --- a/globals/api/api.go +++ b/globals/api/api.go @@ -67,6 +67,12 @@ func Init() { QiniuAPI = qbox.NewMac(beego.AppConfig.String("qiniuAK"), beego.AppConfig.String("qiniuSK")) if !beego.AppConfig.DefaultBool("disableEbai", false) { EbaiAPI = ebaiapi.New(beego.AppConfig.String("ebaiSource"), beego.AppConfig.String("ebaiSecret")) + ebaiStorePageCookieWMUSS := beego.AppConfig.DefaultString("ebaiStorePageCookieWMUSS", "") + ebaiStorePageCookieWMSTOKEN := beego.AppConfig.DefaultString("ebaiStorePageCookieWMSTOKEN", "") + if ebaiStorePageCookieWMUSS != "" && ebaiStorePageCookieWMSTOKEN != "" { + EbaiAPI.SetStoreCookie("WMUSS", ebaiStorePageCookieWMUSS) + EbaiAPI.SetStoreCookie("WMSTOKEN", ebaiStorePageCookieWMSTOKEN) + } } ShowAPI = showapi.New(beego.AppConfig.DefaultInt("showAppID", 0), beego.AppConfig.DefaultString("showAppSecret", "")) Cacher = redis.New(beego.AppConfig.DefaultString("redisHost", "localhost"), beego.AppConfig.DefaultInt("redisPort", 0), beego.AppConfig.DefaultString("redisPassword", "")) diff --git a/main.go b/main.go index 2ebf1e883..9aff6e73c 100644 --- a/main.go +++ b/main.go @@ -8,6 +8,7 @@ import ( "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/cms" + "git.rosy.net.cn/jx-callback/business/jxstore/misc" "git.rosy.net.cn/jx-callback/business/jxstore/promotion" "git.rosy.net.cn/jx-callback/business/jxutils/tasks" "git.rosy.net.cn/jx-callback/globals" @@ -33,6 +34,7 @@ func Init() { api.Init() cms.InitServiceInfo(Version, BuildDate, GitCommit) promotion.Init() + misc.Init() } // 返回true表示非运行服务 diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 0a965e269..1fb6f93a9 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -391,6 +391,14 @@ func init() { MethodParams: param.Make(), Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"], + beego.ControllerComments{ + Method: "RefreshOrderRealMobile", + Router: `/RefreshOrderRealMobile`, + AllowHTTPMethods: []string{"put"}, + MethodParams: param.Make(), + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"], beego.ControllerComments{ Method: "SelfDelivered",