抖店api
This commit is contained in:
@@ -2,7 +2,20 @@ package tiktok_api
|
||||
|
||||
import (
|
||||
"errors"
|
||||
product_addV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_addV2/request"
|
||||
product_addV2_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_addV2/response"
|
||||
product_del_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_del/request"
|
||||
product_detail_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_detail/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_getCatePropertyV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_getCatePropertyV2/request"
|
||||
product_getCatePropertyV2_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_getCatePropertyV2/response"
|
||||
product_listV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_listV2/request"
|
||||
product_listV2_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_listV2/response"
|
||||
product_setOffline_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_setOffline/request"
|
||||
shop_getShopCategory_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_getShopCategory/request"
|
||||
sku_syncStock_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/sku_syncStock/request"
|
||||
sku_syncStockBatch_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/sku_syncStockBatch/request"
|
||||
)
|
||||
|
||||
// UpdateSkuStock
|
||||
@@ -14,13 +27,183 @@ import (
|
||||
func (a *API) UpdateSkuStock(param *sku_syncStock_request.SkuSyncStockParam) error {
|
||||
request := sku_syncStock_request.New()
|
||||
request.Param = param
|
||||
resp, err := request.Execute(AccessToken)
|
||||
resp, err := request.Execute(a.accessTokenObj)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if resp.Code != 1000 {
|
||||
if resp.Code != RequestSuccessCode {
|
||||
return errors.New(resp.Msg)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetShopCategory 获取商品类目
|
||||
// 请一定使用最小层级类目id,发布商品或更新商品。
|
||||
// 接口使用注意点:
|
||||
// 1、第一次请求cid=0获取所有一级类目
|
||||
// 2、先判断enable=true,如果enable=false表示该类目已经失效,请勿使用。
|
||||
// 3、循环获取最小层级类目id方式:再判断is_leaf=true或false。is_leaf=true表示是叶子节点,最小层级类目id。is_leaf=false表示不是子节点,请求参数cid=上一次响应参数id,直到获取最小层级类目id。
|
||||
func (a *API) GetShopCategory(cid int64) ([]*RetailCategoryInfo, error) {
|
||||
// 如果cid为0,则获取所有的分类,如果cid不为0,则获取该分类下面的所有子分类
|
||||
request := shop_getShopCategory_request.New()
|
||||
param := request.GetParams()
|
||||
param.Cid = cid
|
||||
result, err := request.Execute(a.accessTokenObj)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if result.Code != RequestSuccessCode {
|
||||
return nil, errors.New(result.SubMsg)
|
||||
}
|
||||
|
||||
categoryAll := make([]*RetailCategoryInfo, 0, 0)
|
||||
for i := 0; i < len(result.Data); i++ {
|
||||
if result.Data[i].Enable != true { // 失效了
|
||||
continue
|
||||
}
|
||||
if result.Data[i].IsLeaf == false {
|
||||
categoryAll = append(categoryAll, &RetailCategoryInfo{
|
||||
DataItem: result.Data[i],
|
||||
Children: make([]*RetailCategoryInfo, 0, 0),
|
||||
})
|
||||
parentNode, _ := a.GetShopCategory(result.Data[i].Id)
|
||||
categoryAll[i].Children = append(categoryAll[i].Children, parentNode...)
|
||||
} else {
|
||||
node := RetailCategoryInfo{
|
||||
DataItem: result.Data[i],
|
||||
Children: nil,
|
||||
}
|
||||
categoryAll = append(categoryAll, &node)
|
||||
}
|
||||
}
|
||||
return categoryAll, nil
|
||||
}
|
||||
|
||||
// GetCatePropertyV2 根据商品分类获取对应的属性列表
|
||||
// 参数为最终的子节点id下面再无子节点
|
||||
func (a *API) GetCatePropertyV2(categoryLeftId int64) (*product_getCatePropertyV2_response.ProductGetCatePropertyV2Response, error) {
|
||||
request := product_getCatePropertyV2_request.New()
|
||||
param := request.GetParams()
|
||||
param.CategoryLeafId = categoryLeftId
|
||||
|
||||
result, err := request.Execute(a.accessTokenObj)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if result.Code != RequestSuccessCode {
|
||||
return nil, errors.New(result.SubMsg)
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// CreateStoreCommodity (新增总部商品)
|
||||
func (a *API) CreateStoreCommodity(skuParam *product_addV2_request.ProductAddV2Param) (*product_addV2_response.ProductAddV2Data, error) {
|
||||
request := product_addV2_request.New()
|
||||
request.Param = skuParam
|
||||
|
||||
result, err := request.Execute(a.accessTokenObj)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if result.Code != RequestSuccessCode {
|
||||
return nil, errors.New(result.SubMsg)
|
||||
}
|
||||
return result.Data, nil
|
||||
}
|
||||
|
||||
// SyncStockBatch 库存批量同步
|
||||
func (a *API) SyncStockBatch(param *sku_syncStockBatch_request.SkuSyncStockBatchParam) error {
|
||||
request := sku_syncStockBatch_request.New()
|
||||
request.Param = param
|
||||
result, err := request.Execute(a.accessTokenObj)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if result.Code != RequestSuccessCode {
|
||||
return errors.New(result.SubMsg)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// EditStoreCommodity 编辑商品
|
||||
func (a *API) EditStoreCommodity(sku *product_editV2_request.ProductEditV2Param) error {
|
||||
request := product_editV2_request.New()
|
||||
request.Param = sku
|
||||
|
||||
result, err := request.Execute(a.accessTokenObj)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if result.Code != RequestSuccessCode {
|
||||
return errors.New(result.SubMsg)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeleteStoreCommodity 删除商品
|
||||
func (a *API) DeleteStoreCommodity(productId int64) error {
|
||||
request := product_del_request.New()
|
||||
param := request.GetParams()
|
||||
param.ProductId = productId
|
||||
param.DeleteForever = true
|
||||
|
||||
result, err := request.Execute(a.accessTokenObj)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if result.Code != RequestSuccessCode {
|
||||
return errors.New(result.SubMsg)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// ProductSetOffline 商品上下架
|
||||
func (a *API) ProductSetOffline(productId int64) error {
|
||||
request := product_setOffline_request.New()
|
||||
param := request.GetParams()
|
||||
param.ProductId = productId
|
||||
|
||||
result, err := request.Execute(a.accessTokenObj)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if result.Code != RequestSuccessCode {
|
||||
return errors.New(result.SubMsg)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetSkuDetail 查询单个商品详情 美团商品id(19位),本地商品id
|
||||
func (a *API) GetSkuDetail(productId, outProductId string) (*product_detail_response.ProductDetailData, error) {
|
||||
request := product_detail_request.New()
|
||||
param := request.GetParams()
|
||||
param.ProductId = productId
|
||||
param.OutProductId = outProductId
|
||||
|
||||
result, err := request.Execute(a.accessTokenObj)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if result.Code != RequestSuccessCode {
|
||||
return nil, err
|
||||
}
|
||||
return result.Data, nil
|
||||
}
|
||||
|
||||
// GetSkuDetailList 批量获取商品列表
|
||||
func (a *API) GetSkuDetailList(param *product_listV2_request.ProductListV2Param) (*product_listV2_response.ProductListV2Data, error) {
|
||||
request := product_listV2_request.New()
|
||||
request.Param = param
|
||||
|
||||
result, err := request.Execute(a.accessTokenObj)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if result.Code != RequestSuccessCode {
|
||||
return nil, errors.New(result.SubMsg)
|
||||
}
|
||||
|
||||
return result.Data, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user