diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 004928fc9..7b124a2e6 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -145,6 +145,11 @@ type VendorStoreExcel struct { OperatorName2 string `json:"运营负责人2"` } +type JdStoreLevelExt struct { + Level string `json:"level` + PageNo int `json:"pageNo"` +} + var ( ErrMissingInput = errors.New("没有有效的输入参数") ErrCanNotFindVendor = errors.New("vendorID参数不合法") @@ -1708,8 +1713,6 @@ func GetStoresVendorSnapshot(ctx *jxcontext.Context, parentTask tasksch.ITask, v DeliveryType: store.DeliveryType, StoreName: store.OriginalName, IsAutoOrder: store.IsAutoOrder, - - JdStoreLevel: store.JdStoreLevel, }} } } @@ -1751,12 +1754,11 @@ func updateVendorStoreStatusBySnapshot(db *dao.DaoDB, curSnapshotList []*model.V }() for _, v := range storeMapList { if snapshot := snapshotMap[jxutils.Combine2Int(v.StoreID, v.VendorID)]; snapshot != nil && - (v.Status != snapshot.Status || v.DeliveryType != snapshot.DeliveryType || v.StoreName != snapshot.StoreName || v.JdStoreLevel != snapshot.JdStoreLevel) { + (v.Status != snapshot.Status || v.DeliveryType != snapshot.DeliveryType || v.StoreName != snapshot.StoreName) { v.Status = snapshot.Status v.DeliveryType = snapshot.DeliveryType v.StoreName = snapshot.StoreName - v.JdStoreLevel = snapshot.JdStoreLevel - if _, err = dao.UpdateEntity(db, v, model.FieldStatus, "DeliveryType", "StoreName", "JdStoreLevel"); err != nil { + if _, err = dao.UpdateEntity(db, v, model.FieldStatus, "DeliveryType", "StoreName"); err != nil { return err } } @@ -2578,3 +2580,47 @@ func CreateStorePriceScore(ctx *jxcontext.Context) (err error) { } return err } + +func RefreshJdLevel(ctx *jxcontext.Context) (err error) { + db := dao.GetDB() + storeMapList, err := dao.GetStoresMapList(db, []int{model.VendorIDJD}, nil, model.StoreStatusOpened, -1, "") + if len(storeMapList) > 0 { + dao.Begin(db) + defer func() { + if r := recover(); r != nil || err != nil { + dao.Rollback(db) + if r != nil { + panic(r) + } + } + }() + task := tasksch.NewParallelTask("更新京东门店等级", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, + func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + v := batchItemList[0].(*model.StoreMap) + var ( + pageLimit = 50 + pageNo = 1 + level string + ) + for ; pageNo < pageLimit+1; pageNo++ { + level, err = jd.GetAPI(v.VendorOrgCode).GetJdStoreLevel(v.VendorOrgCode, v.VendorStoreID, pageNo) + if err != nil { + return retVal, err + } + if level != "" { + break + } + if pageNo == pageLimit { + level = "" + } + } + v.JdStoreLevel = level + _, err = dao.UpdateEntity(db, v, "JdStoreLevel") + return retVal, err + }, storeMapList) + tasksch.HandleTask(task, nil, true).Run() + _, err = task.GetResult(0) + dao.Commit(db) + } + return err +} diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index ce52ec267..0fcb3ba69 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -2139,7 +2139,7 @@ func GetTopSkusByStoreIDs(ctx *jxcontext.Context, storeIDs []int) (storeSkuNameE return storeSkuNameExt, err } -func GetTopCategorysByStoreIDs(ctx *jxcontext.Context, storeIDs []int) (skuCategory []*model.SkuCategory, err error) { +func GetTopCategoriesByStoreIDs(ctx *jxcontext.Context, storeIDs []int) (skuCategory []*model.SkuCategory, err error) { var ( skuCategory2 []*model.SkuCategory skuCategoryMap = make(map[int]*model.SkuCategory) @@ -2149,7 +2149,7 @@ func GetTopCategorysByStoreIDs(ctx *jxcontext.Context, storeIDs []int) (skuCateg return skuCategory, err } db := dao.GetDB() - skuCategory, err = dao.GetTopCategorysByStoreIDs(db, storeIDs, limit) + skuCategory, err = dao.GetTopCategoriesByStoreIDs(db, storeIDs, limit) //若大于等于10个就不用做下面的操作 if len(skuCategory) >= limit { return skuCategory, err diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index ae1becc34..b8c88480a 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -183,6 +183,8 @@ func doDailyWork() { //fromDate, toDate都不传默认刷新当前天5天以前的订单,只传fromDate默认刷新fromDate到当天的订单 //只传toDate默认刷新toDate到5天以前的订单 orderman.RefreshOrdersWithoutJxStoreID(jxcontext.AdminCtx, "", "", true, true) + //刷新京东门店的等级 + cms.RefreshJdLevel(jxcontext.AdminCtx) } func RefreshRealMobile(ctx *jxcontext.Context, vendorID int, fromTime, toTime time.Time, isAsync, isContinueWhenError bool) (hint string, err error) { diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index ce20a7fbb..e8d758482 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -984,7 +984,7 @@ func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (storeSkuNameExt []*StoreSk return storeSkuNameExt, err } -func GetTopCategorysByStoreIDs(db *DaoDB, storeIDs []int, limit int) (skuCategory []*model.SkuCategory, err error) { +func GetTopCategoriesByStoreIDs(db *DaoDB, storeIDs []int, limit int) (skuCategory []*model.SkuCategory, err error) { sql := ` SELECT DISTINCT t5.* FROM( SELECT d.* diff --git a/business/partner/purchase/jd/store.go b/business/partner/purchase/jd/store.go index ff8b89f34..fc88d91cd 100644 --- a/business/partner/purchase/jd/store.go +++ b/business/partner/purchase/jd/store.go @@ -36,8 +36,6 @@ type tJdStoreInfo struct { VendorStoreID string `orm:"column(vendor_store_id)"` RealLastOperator string SyncStatus int - Level string - PageNo int } var ( @@ -93,9 +91,6 @@ func (p *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorOrgCode, vendo } } } - if level, err := GetJdStoreLevel(ctx, vendorOrgCode, vendorStoreID); err == nil { - retVal.JdStoreLevel = level - } if retVal.DistrictCode == 0 { retVal.DistrictCode = api.AutonaviAPI.GetCoordinateDistrictCode(lng, lat) if retVal.CityCode == 0 { @@ -120,42 +115,6 @@ func (p *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorOrgCode, vendo return nil, err } -func GetJdStoreLevel(ctx *jxcontext.Context, vendorOrgCode, vendorStoreID string) (level string, err error) { - var ( - pageNoList []int - storeMap = make(map[int]string) - pageNo int - ) - a := getAPI(vendorOrgCode) - for i := 1; i < 6; i++ { - pageNoList = append(pageNoList, i) - } - task := tasksch.NewParallelTask("获取京东商品", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, - func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - currentPage := batchItemList[0].(int) - level, err = a.GetJdStoreLevel(vendorOrgCode, vendorStoreID, currentPage) - if err != nil { - return retVal, err - } - tJdStoreInfo1 := &tJdStoreInfo{ - Level: level, - PageNo: currentPage, - } - retVal = []*tJdStoreInfo{tJdStoreInfo1} - return retVal, err - }, pageNoList) - tasksch.HandleTask(task, nil, true).Run() - tJdStoreInfoInterface, err := task.GetResult(0) - for _, v := range tJdStoreInfoInterface { - store := v.(*tJdStoreInfo) - if store.PageNo > pageNo { - pageNo = store.PageNo - } - storeMap[store.PageNo] = store.Level - } - return storeMap[pageNo], err -} - // stoerIDs为nil表示所有 func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName string) (err error) { var stores []*tJdStoreInfo diff --git a/controllers/cms_store.go b/controllers/cms_store.go index 63e45f03e..9a29cda4f 100644 --- a/controllers/cms_store.go +++ b/controllers/cms_store.go @@ -611,7 +611,6 @@ func (c *StoreController) GetStorePriceScore() { // @Title 生成门店价格分数表 // @Description 生成门店价格分数表 // @Param token header string true "认证token" -// @Param forRefresh formData bool true "是否是刷新中位价重新生成分数表" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /CreateStorePriceScore [post] @@ -622,16 +621,15 @@ func (c *StoreController) CreateStorePriceScore() { }) } -// @Title 测试jdlevel -// @Description 测试jdlevel +// @Title 刷新store_map的京东等级 +// @Description 刷新store_map的京东等级 // @Param token header string true "认证token" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult -// @router /SaveAndSendAlarmVendorSnapshot [post] -func (c *StoreController) SaveAndSendAlarmVendorSnapshot() { - c.callSaveAndSendAlarmVendorSnapshot(func(params *tStoreSaveAndSendAlarmVendorSnapshotParams) (retVal interface{}, errCode string, err error) { - err = cms.SaveAndSendAlarmVendorSnapshot(params.Ctx, nil, nil, true) +// @router /RefreshJdLevel [post] +func (c *StoreController) RefreshJdLevel() { + c.callRefreshJdLevel(func(params *tStoreRefreshJdLevelParams) (retVal interface{}, errCode string, err error) { + err = cms.RefreshJdLevel(params.Ctx) return retVal, "", err }) } - diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index cc8c48273..aeb1de9c0 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -469,12 +469,12 @@ func (c *StoreSkuController) GetTopSkusByStoreIDs() { // @Param storeIDs query string true "门店列表" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult -// @router /GetTopCategorysByStoreIDs [get] -func (c *StoreSkuController) GetTopCategorysByStoreIDs() { +// @router /GetTopCategoriesByStoreIDs [get] +func (c *StoreSkuController) GetTopCategoriesByStoreIDs() { var storeIDList []int - c.callGetTopCategorysByStoreIDs(func(params *tStoreSkuGetTopCategorysByStoreIDsParams) (retVal interface{}, errCode string, err error) { + c.callGetTopCategoriesByStoreIDs(func(params *tStoreSkuGetTopCategoriesByStoreIDsParams) (retVal interface{}, errCode string, err error) { if jxutils.Strings2Objs(params.StoreIDs, &storeIDList); err == nil { - retVal, err = cms.GetTopCategorysByStoreIDs(params.Ctx, storeIDList) + retVal, err = cms.GetTopCategoriesByStoreIDs(params.Ctx, storeIDList) } return retVal, "", err }) diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index bda9106aa..6f94c278f 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -1478,8 +1478,8 @@ func init() { beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"], beego.ControllerComments{ - Method: "SaveAndSendAlarmVendorSnapshot", - Router: `/SaveAndSendAlarmVendorSnapshot`, + Method: "RefreshJdLevel", + Router: `/RefreshJdLevel`, AllowHTTPMethods: []string{"post"}, MethodParams: param.Make(), Filters: nil, @@ -1640,8 +1640,8 @@ func init() { beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"], beego.ControllerComments{ - Method: "GetTopCategorysByStoreIDs", - Router: `/GetTopCategorysByStoreIDs`, + Method: "GetTopCategoriesByStoreIDs", + Router: `/GetTopCategoriesByStoreIDs`, AllowHTTPMethods: []string{"get"}, MethodParams: param.Make(), Filters: nil,