diff --git a/business/jxstore/cms/system_store_sku.go b/business/jxstore/cms/system_store_sku.go index dbacd121c..9afe0674a 100644 --- a/business/jxstore/cms/system_store_sku.go +++ b/business/jxstore/cms/system_store_sku.go @@ -9,6 +9,7 @@ import ( "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals/api" + beego "github.com/astaxie/beego/server/web" "time" "git.rosy.net.cn/baseapi/platformapi/mtwmapi" @@ -37,30 +38,15 @@ func CopyOnStoreSkuToOther(ctx *jxcontext.Context, fromStoreId, toStoreId string case model.VendorIDMTWM: return CopyMtToMT(ctx, fromStore, toStore, isAsync, offSet) case model.VendorIDEBAI: - return CopyEBaiToEBai(ctx, fromStore, toStore, isAsync) + return CopyEBaiToEBai(ctx, fromStore, toStore, isAsync, offSet) default: return "", fmt.Errorf("暂时还不支持") } } // CopyEBaiToEBai 饿了么商品复制到饿了么 -func CopyEBaiToEBai(ctx *jxcontext.Context, fromStore, toStore *dao.StoreDetail, isAsync bool) (hint string, err error) { - VendorCategoryIDMap := map[int64]int64{ - 170606586622696: 170625362622152, - 170606586622697: 170625362622153, - 170606586722698: 170625362622154, - 170606586822844: 170625362622155, - 170606586922845: 170625362722162, - 170606587022847: 170625362722163, - 170606587122869: 170625362722164, - 170606587222899: 170625362722165, - 170606587322900: 170625362822166, - 170606587422901: 170625362822167, - 170606587522928: 170625362822168, - 170606587622931: 170625362822169, - 170606587722932: 170625362922170, - 170606587822933: 170625362922171, - } +func CopyEBaiToEBai(ctx *jxcontext.Context, fromStore, toStore *dao.StoreDetail, isAsync bool, offset int) (hint string, err error) { + VendorCategoryIDMap := map[int64]int64{} api := api.EbaiAPI taskName := fmt.Sprintf("将饿了么平台门店[%s],分类和商品复制到[%s]", fromStore.VendorStoreID, toStore.VendorStoreID) config := tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(false) @@ -75,29 +61,29 @@ func CopyEBaiToEBai(ctx *jxcontext.Context, fromStore, toStore *dao.StoreDetail, // return nil, errs[0] //} case 2: - // 同步分类 - //fromCategoryList, err := api.ShopCategoryGet(utils.Int2Str(fromStore.ID)) - //if err != nil { - // return nil, err - //} - //for _, v := range fromCategoryList { - // parentID, categoryErr := api.ShopCategoryCreate(utils.Int2Str(toStore.ID), 0, v.Name, v.Rank) - // if categoryErr != nil { - // globals.SugarLogger.Debugf("err := RetailCatUpdate : %v", categoryErr) - // continue - // } - // VendorCategoryIDMap[v.CategoryID] = parentID - // if v.Children != nil && len(v.Children) != 0 { - // for _, c := range v.Children { - // childrenCateId, err := api.ShopCategoryCreate(utils.Int2Str(toStore.ID), parentID, c.Name, c.Rank) - // if err != nil { - // globals.SugarLogger.Debugf("err := RetailCatUpdate Children : %v", err) - // continue - // } - // VendorCategoryIDMap[c.CategoryID] = childrenCateId - // } - // } - //} + //同步分类 + fromCategoryList, err := api.ShopCategoryGet(utils.Int2Str(fromStore.ID)) + if err != nil { + return nil, err + } + for _, v := range fromCategoryList { + parentID, categoryErr := api.ShopCategoryCreate(utils.Int2Str(toStore.ID), 0, v.Name, v.Rank) + if categoryErr != nil { + globals.SugarLogger.Debugf("err := RetailCatUpdate : %v", categoryErr) + continue + } + VendorCategoryIDMap[v.CategoryID] = parentID + if v.Children != nil && len(v.Children) != 0 { + for _, c := range v.Children { + childrenCateId, err := api.ShopCategoryCreate(utils.Int2Str(toStore.ID), parentID, c.Name, c.Rank) + if err != nil { + globals.SugarLogger.Debugf("err := RetailCatUpdate Children : %v", err) + continue + } + VendorCategoryIDMap[c.CategoryID] = childrenCateId + } + } + } case 3: i := 1 for { @@ -108,7 +94,6 @@ func CopyEBaiToEBai(ctx *jxcontext.Context, fromStore, toStore *dao.StoreDetail, if len(fromFoodList.List) == 0 || fromFoodList == nil { return nil, fmt.Errorf("fromFoodList 为空 %s ,i:= %d", utils.Format4Output(err1, false), i) } - globals.SugarLogger.Debugf("============len %d", len(fromFoodList.List)) if err = BatchInitSkuEBai2EBai(ctx, fromFoodList.List, api, utils.Int2Str(toStore.ID), VendorCategoryIDMap); err != nil { globals.SugarLogger.Debugf("BatchInitData : %s", utils.Format4Output(err, false)) } @@ -168,14 +153,21 @@ func BatchInitSkuEBai2EBai(ctx *jxcontext.Context, fromSku []*ebaiapi.SkuInfo, t // CopyMtToMT 美团商品复制到美团 func CopyMtToMT(ctx *jxcontext.Context, fromStore, toStore *dao.StoreDetail, isAsync bool, offSet int) (hint string, err error) { - fromAPI := partner.CurAPIManager.GetAPI(model.VendorIDMTWM, fromStore.VendorOrgCode).(*mtwmapi.API) + var fromApi *mtwmapi.API + var toApi *mtwmapi.API + if fromStore.VendorOrgCode == globals.Mtwm2Code { - fromAPI.SetToken(fromStore.MtwmToken) + fromApi = mtwmapi.New(beego.AppConfig.DefaultString("mtwmAppID2", ""), beego.AppConfig.DefaultString("mtwmSecret2", ""), beego.AppConfig.DefaultString("mtwmCallbackURL2", ""), "") + fromApi.SetToken(fromStore.MtwmToken) + } else { + fromApi = partner.CurAPIManager.GetAPI(model.VendorIDMTWM, fromStore.VendorOrgCode).(*mtwmapi.API) } - toAPI := partner.CurAPIManager.GetAPI(model.VendorIDMTWM, toStore.VendorOrgCode).(*mtwmapi.API) if toStore.VendorOrgCode == globals.Mtwm2Code { - toAPI.SetToken(toStore.MtwmToken) + toApi = mtwmapi.New(beego.AppConfig.DefaultString("mtwmAppID2", ""), beego.AppConfig.DefaultString("mtwmSecret2", ""), beego.AppConfig.DefaultString("mtwmCallbackURL2", ""), "") + toApi.SetToken(toStore.MtwmToken) + } else { + toApi = partner.CurAPIManager.GetAPI(model.VendorIDMTWM, toStore.VendorOrgCode).(*mtwmapi.API) } taskName := fmt.Sprintf("将美团平台门店[%s],分类和商品复制到[%s]", fromStore.VendorStoreID, toStore.VendorStoreID) @@ -184,51 +176,54 @@ func CopyMtToMT(ctx *jxcontext.Context, fromStore, toStore *dao.StoreDetail, isA step := batchItemList[0].(int) switch step { case 1: - // 1.加载门店商品,删除商品.当分类下没有商品时.删除分类 - //errs := LoadingStoreSkuList(ctx, toApi, toStore.VendorStoreID) - // errs := LoadingStoreSkuList(ctx, toApi, toStore.VendorStoreID) - //if errs != nil && len(errs) > 0 { - // return nil, errs[0] + + // 同步分类 + //fromCategoryList, err := fromApi.RetailCatList(fromStore.VendorStoreID) + //if len(fromCategoryList) == model.NO { + // return nil, err + //} + //toCategoryList, err := toApi.RetailCatList(toStore.VendorStoreID) + //if len(toCategoryList) == model.NO { + // return nil, err + //} + //if len(fromCategoryList) != len(toCategoryList) { + // for _, v := range fromCategoryList { + // categoryErr := toApi.RetailCatUpdate(toStore.VendorStoreID, v.Name, &mtwmapi.Param4UpdateCat{ + // CategoryCode: v.Code, + // Sequence: v.Sequence, + // }) + // if categoryErr != nil { + // globals.SugarLogger.Debugf("err := RetailCatUpdate : %v", categoryErr) + // } + // if v.Children != nil && len(v.Children) != 0 { + // for _, c := range v.Children { + // if err3 := toApi.RetailCatUpdate(toStore.VendorStoreID, v.Name, &mtwmapi.Param4UpdateCat{ + // CategoryNameOrigin: v.Name, + // SecondaryCategoryCode: c.Code, + // SecondaryCategoryName: c.Name, + // Sequence: c.Sequence, + // }); err3 != nil { + // globals.SugarLogger.Debugf("err := RetailCatUpdate Children : %v", err3) + // } + // } + // } + // } //} case 2: - // 同步分类 - fromCategoryList, _ := fromAPI.RetailCatList(fromStore.VendorStoreID) - for _, v := range fromCategoryList { - categoryErr := toAPI.RetailCatUpdate(toStore.VendorStoreID, v.Name, &mtwmapi.Param4UpdateCat{ - CategoryCode: v.Code, - Sequence: v.Sequence, - }) - if categoryErr != nil { - globals.SugarLogger.Debugf("err := RetailCatUpdate : %v", categoryErr) - } - if v.Children != nil && len(v.Children) != 0 { - for _, c := range v.Children { - if err3 := toAPI.RetailCatUpdate(toStore.VendorStoreID, v.Name, &mtwmapi.Param4UpdateCat{ - CategoryNameOrigin: v.Name, - SecondaryCategoryCode: c.Code, - SecondaryCategoryName: c.Name, - Sequence: c.Sequence, - }); err3 != nil { - globals.SugarLogger.Debugf("err := RetailCatUpdate Children : %v", err3) - } - } - } - } - - case 3: i := offSet for { // 同步商品 - fromFoodList, err1 := fromAPI.RetailListAll(fromStore.VendorStoreID, i) + fromFoodList, err1 := fromApi.RetailListAll(fromStore.VendorStoreID, i) if len(fromFoodList) == 0 || fromFoodList == nil { return nil, fmt.Errorf("fromFoodList 为空 %s ,i:= %d", utils.Format4Output(err1, false), i) } - if err = BatchInitSkuMT2MT(ctx, fromFoodList, toAPI, toStore.VendorStoreID, i); err != nil { + if err = BatchInitSkuMT2MT(ctx, fromFoodList, toApi, toStore.VendorStoreID, i); err != nil { globals.SugarLogger.Debugf("BatchInitData : %s", utils.Format4Output(err, false)) } + globals.SugarLogger.Debugf("==============i: %d len: %d", i, len(fromFoodList)) if len(fromFoodList) < 100 { - break + return nil, nil } i++ } @@ -236,7 +231,7 @@ func CopyMtToMT(ctx *jxcontext.Context, fromStore, toStore *dao.StoreDetail, isA } 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) @@ -250,7 +245,7 @@ func CopyMtToMT(ctx *jxcontext.Context, fromStore, toStore *dao.StoreDetail, isA // BatchInitSkuMT2MT 批量创建商品 func BatchInitSkuMT2MT(ctx *jxcontext.Context, fromSku []*mtwmapi.AppFood, toApi *mtwmapi.API, vendorStoreID string, i int) error { foodDataList := make([]map[string]interface{}, len(fromSku)) - for i, storeSku := range fromSku { + for _, storeSku := range fromSku { foodData := make(map[string]interface{}) if storeSku.AppFoodCode != "" { foodData[mtwmapi.KeyAppFoodCode] = storeSku.AppFoodCode @@ -260,6 +255,9 @@ func BatchInitSkuMT2MT(ctx *jxcontext.Context, fromSku []*mtwmapi.AppFood, toApi skus := make([]interface{}, 0) for _, v := range storeSku.SkuList { + if v.SkuId == "" { + v.SkuId = storeSku.AppFoodCode + } mapSkuList := utils.Struct2MapByJson(v) if v.BoxNum == "" { delete(mapSkuList, "box_num") @@ -296,6 +294,10 @@ func BatchInitSkuMT2MT(ctx *jxcontext.Context, fromSku []*mtwmapi.AppFood, toApi foodData["picture_contents"] = storeSku.PictureContents foodData["sequence"] = storeSku.Sequence foodData["tag_id"] = storeSku.TagID + foodData["upc"] = storeSku.UpcCode + if storeSku.UpcCode == "" { + foodData["upc"] = "no_upc" + } foodDataList[i] = foodData } @@ -304,6 +306,7 @@ func BatchInitSkuMT2MT(ctx *jxcontext.Context, fromSku []*mtwmapi.AppFood, toApi if len(foodDataList)%10 != 0 { count += 1 } + globals.SugarLogger.Debugf("===============data := %s", utils.Format4Output(foodDataList, false)) for i := 0; i < count; i++ { if i == count-1 { failedFoodList, _ := toApi.RetailBatchInitData(ctx.GetTrackInfo(), vendorStoreID, foodDataList[i*10:])