diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 03facc80a..f372cdf4b 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -6511,17 +6511,10 @@ func CopyMtToJd(ctx *jxcontext.Context, mtStoreID, mtOrgCode, jdStoreID, jdOrgCo catMap = make(map[string]string) LoopCatChild funcType ) - //mtStoreID = "11655829" - //mtOrgCode = "589" - //jdStoreID = "12116911" - //jdOrgCode = "364156" + jd := jd.GetAPI(jdOrgCode) //获取token mtapi := apimanager.CurAPIManager.GetAPI(model.VendorIDMTWM, mtOrgCode).(*mtwmapi.API) - //if token, err := mtapi.GetAccessToken2(mtStoreID); err == nil && token != nil { - // mtAccessToken = token.AccessToken - //} - //mtapi.SetToken(mtAccessToken) LoopCatChild = func(mtID, parentID string, catInfo []*mtwmapi.RetailCategoryInfo) { if len(catInfo) > 0 { for j := len(catInfo) - 1; j > -1; j-- { diff --git a/business/jxstore/cms/system_store_sku.go b/business/jxstore/cms/system_store_sku.go index 8eb9eac84..6f8707764 100644 --- a/business/jxstore/cms/system_store_sku.go +++ b/business/jxstore/cms/system_store_sku.go @@ -2,6 +2,9 @@ package cms import ( "fmt" + "git.rosy.net.cn/baseapi/platformapi/ebaiapi" + "git.rosy.net.cn/jx-callback/business/model" + "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals" beego "github.com/astaxie/beego/server/web" "time" @@ -10,48 +13,88 @@ import ( "git.rosy.net.cn/baseapi/utils" "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" ) // CopyOnStoreSkuToOther 将一个美团门店分类和商品复制到另一个门店 -func CopyOnStoreSkuToOther(ctx *jxcontext.Context, fromVendorStoreId, toStoreId int, isAsync bool, offSet int) (hint string, err error) { +func CopyOnStoreSkuToOther(ctx *jxcontext.Context, fromStoreId, toStoreId string, vendorId int, isAsync bool, offSet int) (hint string, err error) { var ( db = dao.GetDB() ) + fromStoreDetail, _ := dao.GetStoreDetailByVendorStoreID(db, fromStoreId, vendorId, "") + if fromStoreDetail == nil { + return "", fmt.Errorf("%s,平台门店id未获取到", fromStoreId) + } + if fromStoreDetail.VendorOrgCode == globals.Mtwm2Code { + fromAPI := partner.CurAPIManager.GetAPI(vendorId, fromStoreDetail.VendorOrgCode).(*mtwmapi.API) + fromAPI.SetToken(fromStoreDetail.MtwmToken) + } else { + switch vendorId { + case model.VendorIDMTWM: + fromAPI = partner.CurAPIManager.GetAPI(vendorId, fromStoreDetail.VendorOrgCode).(*mtwmapi.API) + case model.VendorIDEBAI: + fromAPI = partner.CurAPIManager.GetAPI(vendorId, fromStoreDetail.VendorOrgCode).(*ebaiapi.API) + } + } + + toStoreDetail, _ := dao.GetStoreDetailByVendorStoreID(db, toStoreId, vendorId, "") + if toStoreDetail == nil { + return "", fmt.Errorf("%s,平台门店id未获取到", fromStoreId) + } + if toStoreDetail.VendorOrgCode == globals.Mtwm2Code { + toAPI := partner.CurAPIManager.GetAPI(vendorId, toStoreDetail.VendorOrgCode).(*mtwmapi.API) + toAPI.SetToken(fromStoreDetail.MtwmToken) + } + + apiObj := partner.CurAPIManager.GetAPI(vendorId, appOrgCode).(*mtwmapi.API) + if appOrgCode == globals.Mtwm2Code { + var storeDetail *dao.StoreDetail + if storeID != 0 { + storeDetail, _ = dao.GetStoreDetail(db, storeID, vendorId, appOrgCode) + } else if vendorStoreID != "" { + storeDetail, _ = dao.GetStoreDetailByVendorStoreID(db, vendorStoreID, vendorId, appOrgCode) + } + if storeDetail != nil { + apiObj.SetToken(storeDetail.MtwmToken) + } + } + // 门店api加载 - toStore, err := dao.GetStoreDetailByVendorStoreID(db, utils.Int2Str(toStoreId), model.VendorIDMTWM, "") + toStore, err := dao.GetStoreDetailByVendorStoreID(db, toStoreId, vendorId, "") if err != nil { return "", err } - //firstApi := api.Mtwm2API toApi := mtwmapi.New(beego.AppConfig.DefaultString("mtwmAppID2", ""), beego.AppConfig.DefaultString("mtwmSecret2", ""), beego.AppConfig.DefaultString("mtwmCallbackURL2", ""), "") toApi.SetToken(toStore.MtwmToken) - fromStore, err := dao.GetStoreDetailByVendorStoreID(db, utils.Int2Str(fromVendorStoreId), model.VendorIDMTWM, "") + fromStore, err := dao.GetStoreDetailByVendorStoreID(db, fromStoreId, vendorId, "") if err != nil { return "", err } fromApi := mtwmapi.New(beego.AppConfig.DefaultString("mtwmAppID2", ""), beego.AppConfig.DefaultString("mtwmSecret2", ""), beego.AppConfig.DefaultString("mtwmCallbackURL2", ""), "") fromApi.SetToken(fromStore.MtwmToken) - //fromApi := partner.CurAPIManager.GetAPI(model.VendorIDMTWM, fromStore.VendorOrgCode).(*mtwmapi.API) - //fromApi.SetToken(fromStore.MtwmToken) - taskName := fmt.Sprintf("将平台门店[%d],分类和商品复制到[%d]", fromVendorStoreId, toStoreId) + taskName := fmt.Sprintf("将平台门店[%s],分类和商品复制到[%s]", fromStoreId, toStoreId) config := tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(false) work := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { step := batchItemList[0].(int) switch step { + // case 1: + // 1.加载门店商品,删除商品.当分类下没有商品时.删除分类 + // errs := LoadingStoreSkuList(ctx, toApi, toStore.VendorStoreID) + //if errs != nil && len(errs) > 0 { + // return nil, errs[0] + //} case 1: - // 1.加载门店商品,删除商品.当分类下没有商品时.删除分类 - // errs := LoadingStoreSkuList(ctx, toApi, toStore.VendorStoreID) - //if errs != nil && len(errs) > 0 { - // return nil, errs[0] - //} - case 2: + handler, _ := partner.GetPurchasePlatformFromVendorID(vendorId).(partner.ISingleStoreStoreSkuHandler) + if handler == nil { + return nil, fmt.Errorf(model.VendorChineseNames[vendorId] + ":不存在此平台") + } + fromCategory, err := handler.GetStoreAllCategories(ctx, fromStore.ID, fromStore.VendorStoreID) + // 同步分类 - //fromCategoryList, err := fromApi.RetailCatList(utils.Int2Str(fromVendorStoreId)) + fromCategoryList, err := fromApi.RetailCatList(utils.Int2Str(fromVendorStoreId)) //globals.SugarLogger.Debugf("err ============ %v", err) //for _, v := range fromCategoryList { // categoryErr := toApi.RetailCatUpdate(toStore.VendorStoreID, v.Name, &mtwmapi.Param4UpdateCat{ @@ -77,11 +120,11 @@ func CopyOnStoreSkuToOther(ctx *jxcontext.Context, fromVendorStoreId, toStoreId // } //} - case 3: + case 2: i := offSet for { // 同步商品 - fromFoodList, err1 := fromApi.RetailListAll(utils.Int2Str(fromVendorStoreId), i) + fromFoodList, err1 := fromApi.RetailListAll(fromStoreId, i) if len(fromFoodList) == 0 || fromFoodList == nil { return nil, fmt.Errorf("fromFoodList 为空 %s ,i:= %d", utils.Format4Output(err1, false), i) } @@ -98,7 +141,7 @@ func CopyOnStoreSkuToOther(ctx *jxcontext.Context, fromVendorStoreId, toStoreId } return } - task := tasksch.NewParallelTask(taskName, config, ctx, work, []int{1, 2, 3}) + task := tasksch.NewParallelTask(taskName, config, ctx, work, []int{1, 2}) tasksch.HandleTask(task, nil, true).Run() if !isAsync { _, err = task.GetResult(0) diff --git a/business/partner/partner_store_sku.go b/business/partner/partner_store_sku.go index 650d5061e..0a9e209e4 100644 --- a/business/partner/partner_store_sku.go +++ b/business/partner/partner_store_sku.go @@ -168,6 +168,9 @@ type IPurchasePlatformStoreSkuHandler interface { UpdateStoreSkusSpecTag(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*StoreSkuInfo) (err error) // GetSkuCategoryIdByName 获取各个平台推荐分类 GetSkuCategoryIdByName(vendorOrgCode, skuName string) (vendorCategoryId string, err error) + + // GetVendorAllSkuList 同平台商品复制(饿了么复制饿了么,美团复制美团),获取商品 + } type ISingleStoreStoreSkuHandler interface { diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index 76d5e56c3..698414496 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -2,7 +2,6 @@ package controllers import ( "git.rosy.net.cn/baseapi/platformapi/jdapi" - "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/auth2" "git.rosy.net.cn/jx-callback/business/model" @@ -1046,18 +1045,19 @@ func (c *StoreSkuController) CopyMtToJd() { }) } -// @Title 美团门店复制到美团 -// @Description 美团门店复制到美团 +// @Title 美团门店复制到美团(相同平台门店相互复制) +// @Description 美团门店复制到美团(相同平台门店相互复制) // @Param token header string true "认证token" // @Param fromStoreID formData string true "被复制门店id" // @Param toStoreID formData string true "复制到门店id" +// @Param vendorID formData int true "平台id" // @Param offSet formData int true "跳过页码" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /CopyMtToMt [post] func (c *StoreSkuController) CopyMtToMt() { c.callCopyMtToMt(func(params *tStoreSkuCopyMtToMtParams) (retVal interface{}, errCode string, err error) { - retVal, err = cms.CopyOnStoreSkuToOther(params.Ctx, utils.Str2Int(params.FromStoreID), utils.Str2Int(params.ToStoreID), false, params.OffSet) + retVal, err = cms.CopyOnStoreSkuToOther(params.Ctx, params.FromStoreID, params.ToStoreID, false, params.OffSet) return retVal, errCode, err }) }