diff --git a/platformapi/jdshopapi/sku.go b/platformapi/jdshopapi/sku.go index 8a918536..ea83276c 100644 --- a/platformapi/jdshopapi/sku.go +++ b/platformapi/jdshopapi/sku.go @@ -162,6 +162,24 @@ type QueryPictureReuslt struct { PictureHeight int `json:"picture_height"` } +type UpdateSkusParam struct { + WareID int64 `json:"wareId"` + Skus []*UpdateSkusParamSkus `json:"skus"` +} + +type UpdateSkusParamSkus struct { + WareID int64 `json:"wareId,omitempty"` //是 11111111111 商品ID(必填) + SkuID int64 `json:"skuId,omitempty"` //否 11111558987 skuID(新增的sku可不填写) + SaleAttrs []*CreateSkuParamAttrs `json:"saleAttrs,omitempty"` //是 无 SKU销售属性 + JdPrice float64 `json:"jdPrice,omitempty"` //是 无 京东价必填 单位:元 + OuterID string `json:"outerId,omitempty"` //否 ww_4567 外部ID,系统不保证唯一性,如需唯一性自行保证 + StockNum string `json:"stockNum,omitempty"` //是 10 总库存数 + BarCode string `json:"barCode,omitempty"` //否 45456467777 SKU的条形码 + Capacity string `json:"capacity,omitempty"` //否 20L 容量,在有特殊要求的类目下必填!最多支持6位小数。 + Type string `json:"type"` //"com.jd.pop.ware.ic.api.domain.sku" + Type2 string `json:"@type"` +} + //查询商家所有的店内分类 //https://open.jd.com/home/home#/doc/api?apiCateId=88&apiId=2801&apiName=jingdong.vender.shopcategory.findShopCategoriesByVenderId func (a *API) FindShopCategories() (findShopCategoriesResult []*FindShopCategoriesResult, err error) { @@ -414,3 +432,50 @@ func (a *API) ImageUpdate(wareId int64, imgIndex int, imgUrl string) (err error) }) return err } + +type SearchWare4ValidResult struct { + PageSize int `json:"pageSize"` + Data []struct { + WareID int64 `json:"wareId"` + WareStatus int `json:"wareStatus"` + CategoryID int `json:"categoryId"` + OnlineTime int64 `json:"onlineTime"` + OuterID string `json:"outerId"` + Title string `json:"title"` + ItemNum string `json:"itemNum"` + ColType int `json:"colType"` + } `json:"data"` + PageNo int `json:"pageNo"` + TotalItem int `json:"totalItem"` +} + +//搜索有效商品 +//https://open.jd.com/home/home#/doc/api?apiCateId=48&apiId=1587&apiName=jingdong.ware.read.searchWare4Valid +func (a *API) SearchWare4Valid(searchKey string) (searchWare4ValidResult *SearchWare4ValidResult, err error) { + result, err := a.AccessAPI("jingdong.ware.read.searchWare4Valid", prodURL, map[string]interface{}{ + "searchKey": searchKey, + "searchField": "title", + }) + if err == nil { + utils.Map2StructByJson(result["jingdong_ware_read_searchWare4Valid_responce"].(map[string]interface{})["page"], &searchWare4ValidResult, false) + } + return searchWare4ValidResult, err +} + +type UpdateSkusResult struct { + SkuID int64 `json:"skuId"` +} + +//增加sku +//https://open.jd.com/home/home#/doc/api?apiCateId=48&apiId=1383&apiName=jingdong.sku.write.updateSkus +func (a *API) UpdateSkus(updateSkusParam *UpdateSkusParam) (vendorSkuID string, err error) { + var skus []*UpdateSkusResult + data, _ := json.Marshal(updateSkusParam) + result, err := a.AccessAPI("jingdong.sku.write.updateSkus", prodURL, map[string]interface{}{ + "360buy_param_json": string(data), + }) + if err == nil { + utils.Map2StructByJson(result["jingdong_sku_write_updateSkus_responce"].(map[string]interface{})["skuList"], &skus, false) + } + return utils.Int64ToStr(skus[0].SkuID), err +} diff --git a/platformapi/jdshopapi/sku_test.go b/platformapi/jdshopapi/sku_test.go index 763e6078..7a495f91 100644 --- a/platformapi/jdshopapi/sku_test.go +++ b/platformapi/jdshopapi/sku_test.go @@ -230,7 +230,7 @@ func TestCreateSku(t *testing.T) { } func TestFindAttrs(t *testing.T) { - result, err := api.FindAttrs(13571) + result, err := api.FindAttrs(13573) if err != nil { t.Fatal(err) } @@ -238,7 +238,7 @@ func TestFindAttrs(t *testing.T) { } func TestFindValuesByAttrId(t *testing.T) { - result, no, err := api.FindValuesByAttrId(102242) + result, no, err := api.FindValuesByAttrId(1001027602) if err != nil { t.Fatal(err) } @@ -305,3 +305,50 @@ func TestImageUpdate(t *testing.T) { } // t.Log(utils.Format4Output(result, false)) } + +func TestSearchWare4Valid(t *testing.T) { + result, err := api.SearchWare4Valid("红薯") + if err != nil { + t.Fatal(err) + } + t.Log(utils.Format4Output(result, false)) +} + +func TestUpdateSkus(t *testing.T) { + _, err := api.UpdateSkus(&UpdateSkusParam{ + WareID: 14537944716, + Skus: []*UpdateSkusParamSkus{ + &UpdateSkusParamSkus{ + WareID: 14537944716, + JdPrice: 1.5, + StockNum: "99", + OuterID: "11", + SaleAttrs: []*CreateSkuParamAttrs{ + &CreateSkuParamAttrs{ + AttrID: "1001027602", + AttrValues: []string{"2440977935"}, + }, + }, + Type: "com.jd.pop.ware.ic.api.domain.sku", + Type2: "com.jd.pop.ware.ic.api.domain.Sku", + }, + &UpdateSkusParamSkus{ + WareID: 14537944716, + JdPrice: 1.8, + StockNum: "99", + OuterID: "123", + SaleAttrs: []*CreateSkuParamAttrs{ + &CreateSkuParamAttrs{ + AttrID: "1001027602", + AttrValues: []string{"2441761921"}, + }, + }, + Type: "com.jd.pop.ware.ic.api.domain.sku", + Type2: "com.jd.pop.ware.ic.api.domain.Sku", + }, + }, + }) + if err != nil { + t.Fatal(err) + } +}