This commit is contained in:
邹宗楠
2025-03-27 09:20:25 +08:00
parent f44318d9d5
commit 034970648e
4 changed files with 138 additions and 12 deletions

View File

@@ -4,6 +4,7 @@ import (
"encoding/json"
"fmt"
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
"git.rosy.net.cn/baseapi/platformapi/jdapi"
product_addV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_addV2/request"
"git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api"
"git.rosy.net.cn/jx-callback/business/jxutils"
@@ -61,8 +62,8 @@ func CopyOnStoreSkuToOther(ctx *jxcontext.Context, fromStoreId, toStoreId string
_, copySkuErr, err = CopyMtToEBai(ctx, fromStore, toStore, isAsync, offSet)
case 31: // 饿了么到美团
_, copySkuErr, err = CopyEBaiToMt(ctx, fromStore, toStore, isAsync, offSet)
case 10: // 美团到京东
case 30: // 饿百到京东
_, copySkuErr, err = CopyEBaiToJd(ctx, fromStore, toStore, isAsync, offSet)
default:
return nil, fmt.Errorf("暂时还不支持")
}
@@ -1214,6 +1215,138 @@ func BatchInitSkuEBai2Mt(ctx *jxcontext.Context, fromSku []*ebaiapi.SkuInfo, toA
//#endregion
//#region 饿百复制到京东
func CopyEBaiToJd(ctx *jxcontext.Context, fromStore, toStore *dao.StoreDetail, isAsync bool, offSet int) (hint string, errList []string, err error) {
var api = api.EbaiAPI
var toApi *jdapi.API = partner.CurAPIManager.GetAPI(model.VendorIDJD, toStore.VendorOrgCode).(*jdapi.API)
taskName := fmt.Sprintf("将饿百平台门店[%s],分类和商品复制到[%s]", fromStore.VendorStoreID, toStore.VendorStoreID)
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:
// 京东商品分类不做同步
//fromCategoryList, err := api.ShopCategoryGet(utils.Int2Str(fromStore.ID))
//if err != nil {
// return nil, err
//}
//for _, v := range fromCategoryList {
// categoryErr := toApi.RetailCatUpdate(toStore.VendorStoreID, v.Name, &mtwmapi.Param4UpdateCat{
// CategoryCode: utils.Int64ToStr(v.CategoryID),
// Sequence: v.Rank,
// })
// 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: utils.Int64ToStr(c.CategoryID),
// SecondaryCategoryName: c.Name,
// Sequence: c.Rank,
// }); err3 != nil {
// globals.SugarLogger.Debugf("err := RetailCatUpdate Children : %v", err3)
// }
// }
// }
//}
case 2:
i := offSet
for {
// 同步商品
fromFoodList, err1 := api.SkuList(utils.Int2Str(fromStore.ID), &ebaiapi.SkuListParams{
Page: i,
})
if len(fromFoodList.List) == 0 || fromFoodList == nil {
return nil, fmt.Errorf("fromFoodList 为空 %s ,i:= %d", utils.Format4Output(err1, false), i)
}
err := BatchInitSkuEBai2Jd(ctx, fromFoodList.List, toApi, toStore.VendorStoreID, i)
if err != nil {
globals.SugarLogger.Debugf("BatchInitData : %v", err)
}
globals.SugarLogger.Debugf("==========页数[%d],数据长度[%d]", i, len(fromFoodList.List))
if len(fromFoodList.List) < 100 {
break
}
i++
}
}
return
}
task := tasksch.NewParallelTask(taskName, config, ctx, work, []int{1, 2})
tasksch.HandleTask(task, nil, true).Run()
if !isAsync {
_, err = task.GetResult(0)
hint = "1"
} else {
hint = task.ID
}
globals.SugarLogger.Debugf("======errrList := %s", utils.Format4Output(errList, false))
return hint, errList, err
}
func BatchInitSkuEBai2Jd(ctx *jxcontext.Context, fromSku []*ebaiapi.SkuInfo, toApi *jdapi.API, vendorStoreID string, offset int) []error {
errList := make([]error, 0, 0)
for _, storeSku := range fromSku {
param := &jdapi.OpSkuParam{
TraceID: ctx.GetTrackInfo(),
//ShopCategories: []int64{},
//CategoryID: utils.Str2Int64(catMaps[0].JdID),
CategoryID: 291, // 暂无分类
BrandID: 35247,
SkuName: storeSku.Name,
SkuPrice: storeSku.SalePrice,
Weight: float64(jxutils.IntWeight2Float(utils.Str2Int(storeSku.Weight))),
FixedStatus: 1,
IsSale: -1,
Upc: storeSku.Upc,
}
if storeSku.CustomSkuId != "" {
param.OutSkuID = storeSku.CustomSkuId
} else {
param.OutSkuID = utils.Int64ToStr(storeSku.SkuId)
}
photos := make([]string, 0, len(storeSku.Photos))
for _, v := range storeSku.Photos {
photos = append(photos, v.Url)
}
param.Images = photos
//param.ShopCategories = append(param.ShopCategories, 16578930) // 暂无分类
if storeSku.Rtf != "" {
param.ProductDesc = fmt.Sprintf(`<img src="%s" alt="一张图片" />`, storeSku.Rtf)
}
skuID, err := toApi.AddSku2(param)
if err != nil {
errList = append(errList, err)
}
if skuID != "" {
toApi.UpdateCurrentQty(ctx.GetTrackInfo(), vendorStoreID, utils.Str2Int64(skuID), storeSku.LeftNum)
SaleStatus := []*jdapi.QueryStockRequest{
&jdapi.QueryStockRequest{
StationNo: vendorStoreID,
SkuId: utils.Str2Int64(skuID),
//DoSale: mtSku.IsSoldOut,
},
}
if storeSku.Status == "1" {
SaleStatus[0].DoSale = 0
} else {
SaleStatus[0].DoSale = 1
}
toApi.UpdateVendibility(ctx.GetTrackInfo(), SaleStatus)
}
}
return errList
}
//#endregion
////#region 同步活动