This commit is contained in:
邹宗楠
2022-10-11 16:32:20 +08:00
parent e2a930632e
commit c267776ab0
5 changed files with 123 additions and 64 deletions

View File

@@ -4,12 +4,10 @@ import (
"errors"
"fmt"
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
freightTemplate_create_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_create/request"
product_addV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_addV2/request"
product_detail_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_detail/response"
product_editV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_editV2/request"
product_editV2_commit_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_editV2_commit/request"
shop_bindStoreFreight_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_bindStoreFreight/request"
shop_bindStoreSaleLimit_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_bindStoreSaleLimit/request"
sku_editPrice_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/sku_editPrice/request"
sku_syncStock_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/sku_syncStock/request"
@@ -24,7 +22,6 @@ import (
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/business/partner/putils"
"git.rosy.net.cn/jx-callback/globals"
"math/rand"
"regexp"
"strings"
)
@@ -260,43 +257,14 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v
// 对于多门店平台来说storeSkuList中只有SkuID与VendorSkuID有意义
// 抖店的商品只管创建,创建接口会返回成功,但是审核的时候不一定成功.当前系统无法判定此商品是否已经创建过了!
func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo, isCreate bool) (failedList []*partner.StoreSkuInfoWithErr, err error) {
globals.SugarLogger.Debug("==============vendorStoreID", vendorStoreID)
var syncType string
storeDetail, _ := dao.GetStoreDetail(dao.GetDB(), storeID, model.VendorIDDD, "")
api := getAPI(storeDetail.VendorOrgCode, storeID, vendorStoreID)
freightId, _ := api.GetStoreBindTemp(utils.Str2Int64(vendorStoreID))
if freightId == 0 {
// 创建门店运费模板
temp, err := api.FreightTemplateCreate(&freightTemplate_create_request.FreightTemplateCreateParam{
Template: &freightTemplate_create_request.Template{
TemplateName: storeDetail.Name + "_" + utils.Int64ToStr(rand.Int63n(int64(storeID))) + "_系统模板",
ProductProvince: utils.Str2Int64(utils.Int2Str(storeDetail.ProvinceCode)[0:2]),
ProductCity: int64(storeDetail.CityCode),
CalculateType: 2,
TransferType: 1, // 快递
RuleType: 1,
FixedAmount: 500,
},
Columns: nil,
})
if err != nil {
return nil, err
}
// 绑定门店运费模板
err = api.BindFreightTemplate(&shop_bindStoreFreight_request.ShopBindStoreFreightParam{
StoreId: utils.Str2Int64(vendorStoreID),
FreightId: temp.TemplateId,
})
if err != nil {
return nil, err
}
freightId = temp.TemplateId
}
if isCreate {
syncType = "创建商品"
for _, storeSku := range storeSkuList {
// 创建商品
// 创建商品
param := &product_addV2_request.ProductAddV2Param{
CategoryLeafId: utils.Str2Int64(storeSku.SkuVendorMapCatID),
Name: storeSku.Name,
@@ -313,6 +281,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
SellChannel: []int64{0},
StartSaleType: 0,
PickupMethod: "0",
OuterProductId: utils.Int2Str(storeSku.SkuID), // 本地skuId为外部商品id
}
// param.AccountTemplateId = ""
// 获取上传图,商品轮播图
@@ -349,24 +318,40 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
globals.SugarLogger.Debug("创建=============param", utils.Format4Output(param, false))
// 获取品牌
brandID, err := api.GetSkuBrand(param.CategoryLeafId)
param.StandardBrandId, err = api.GetSkuBrand(param.CategoryLeafId)
if err != nil {
return nil, err
}
param.StandardBrandId = brandID
tiktokResult, err := api.CreateStoreCommodity(param) // 创建商品
if err != nil {
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID)
continue
// 根据本地商品id获取线上商品是否存在,存在则只创建商品
var tiktokResultProductId int64 = 0
if storeSku.VendorMainId == "" { // 线上不存在创建
tiktokResult, err := api.CreateStoreCommodity(param) // 创建主商品
if err != nil {
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID)
continue
}
globals.SugarLogger.Debugf("tiktokResult main ===%s", utils.Format4Output(tiktokResult, false))
tiktokResultProductId = tiktokResult.ProductId
var attrId []string
for _, v := range tiktokResult.Sku {
attrId = append(attrId, utils.Int64ToStr(v.SkuId))
}
storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID
} else {
tiktokResultProductId = utils.Str2Int64(storeSku.VendorMainId)
}
globals.SugarLogger.Debugf("tiktokResult main ===%s", utils.Format4Output(tiktokResult, false))
// 创建子商品
freightId, err := GetDeliveryTemp(api, vendorStoreID, storeDetail) // 运费模板
if err != nil {
return nil, err
}
param.FreightId = freightId
param.MainProductId = tiktokResult.ProductId
param.SpecPrices = GetSpecPrices(param.Specs, vendorStoreID, tiktokResult.ProductId, storeSku)
param.MainProductId = tiktokResultProductId
param.SpecPrices = GetSpecPrices(param.Specs, vendorStoreID, tiktokResultProductId, storeSku)
// 获取门店限售模板
saleLimitId, err := CreateSaleTemp(utils.Str2Int64(vendorStoreID), api)
globals.SugarLogger.Debug("==22213123131231231", saleLimitId)
@@ -375,7 +360,8 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
}
param.SaleLimitId = saleLimitId
param.StoreId = utils.Str2Int64(vendorStoreID)
// 抖店创建商品
// 抖店创建子商品
globals.SugarLogger.Debugf("zishangping=============%s", utils.Format4Output(param, false))
tiktokResultChildren, err := api.CreateStoreCommodity(param)
if err != nil {
@@ -384,12 +370,8 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
continue
}
storeSku.VendorSkuID = utils.Int64ToStr(tiktokResultChildren.ProductId) // 子商品主id
storeSku.VendorMainId = utils.Int64ToStr(tiktokResult.ProductId) // 商品主id
var attrId []string
for _, v := range tiktokResult.Sku {
attrId = append(attrId, utils.Int64ToStr(v.SkuId))
}
storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID
storeSku.VendorMainId = utils.Int64ToStr(tiktokResultProductId) // 商品主id
}
} else {
syncType = "更新商品"