From d28c352b3e85713898034968cf55dcedc7fb3592 Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 31 Jul 2019 18:11:04 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E6=A0=87=E5=87=86=E5=8C=96jdapi.QuerySkuIn?= =?UTF-8?q?fos=E5=92=8CQueryListBySkuIds?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- platformapi/jdapi/sku.go | 96 +++++++++++++++++++++++------------ platformapi/jdapi/sku_test.go | 11 +++- 2 files changed, 73 insertions(+), 34 deletions(-) diff --git a/platformapi/jdapi/sku.go b/platformapi/jdapi/sku.go index 9c5239db..14311f7c 100644 --- a/platformapi/jdapi/sku.go +++ b/platformapi/jdapi/sku.go @@ -68,9 +68,9 @@ const ( ) const ( - SkuFixedStatusOnline = 1 - SkuFixedStatusOffline = 2 - SkuFixedStatusDeleted = 4 + SkuFixedStatusOnline = 1 // 上架 + SkuFixedStatusOffline = 2 // 下架 + SkuFixedStatusDeleted = 4 // 删除 ) const ( @@ -79,6 +79,10 @@ const ( CreateSpuResultFailed = 3 ) +const ( + IsFilterDelTrue = "0" // 0代表不查已删除商品 +) + const ( MaxSkuNameCharCount = 45 // skuname最长字符数 SaleAttrIDBase = 1001 @@ -131,13 +135,57 @@ type CreateByUpcPair struct { SkuId int64 } +type QuerySkuParam struct { + SkuName string `json:"skuName,omitempty"` + UpcCode string `json:"upcCode,omitempty"` + SkuID int64 `json:"skuId,omitempty"` + IsFilterDel string `json:"isFilterDel,omitempty"` // 是否查询出已删除的上传商品(0代表不查已删除商品,不填则查出全部商品) + PageNo int `json:"pageNo,omitempty"` + PageSize int `json:"pageSize,omitempty"` +} + +type SkuMain struct { + SuperID int64 `json:"superId"` + SkuID int64 `json:"skuId"` + OutSkuID string `json:"outSkuId"` + CategoryID int64 `json:"categoryId"` + BrandID int64 `json:"brandId"` + ShopCategories []int64 `json:"shopCategories"` + SkuName string `json:"skuName"` + FixedStatus int `json:"fixedStatus"` // 商家商品上下架状态(1:上架;2:下架;4:删除;) + FixedUpTime string `json:"fixedUpTime"` + OrgCode int `json:"orgCode"` + SellCities []int64 `json:"sellCities"` + SkuPrice int `json:"skuPrice"` + Weight float64 `json:"weight"` +} + +type QueryListBySkuIdsParam struct { + SkuIDs []int64 `json:"skuIds"` + ImgType int `json:"imgType,omitempty"` + HandleStatus []int `json:"handleStatus,omitempty"` +} + +type ImgHandleQueryResult struct { + ID string `json:"id"` + SkuID int64 `json:"skuId"` + IsMain int `json:"isMain"` + ImgType int `json:"imgType"` + SourceImgURL string `json:"sourceImgUrl"` + SkuImgSort int `json:"skuImgSort"` + HandleStatus int `json:"handleStatus"` + HandleStatusStr string `json:"handleStatusStr"` + HandleRemark string `json:"handleRemark"` + HandleErrLog string `json:"handleErrLog"` +} + var ( skuExistReg = regexp.MustCompile(`商家skuId已存在:(\d+)`) ) // 分页查询商品品牌信息接口 // https://opendj.jd.com/staticnew/widgets/resources.html?groupid=180&apiid=1ca07a3e767649a7a44fc6ea7e9ed8dd -func (a *API) QueryPageBrandInfo(pageNo, pageSize, brandId int, brandName string) (brandList []*BrandInfo, totalCount int, err error) { +func (a *API) QueryPageBrandInfo(pageNo, pageSize int, brandId int64, brandName string) (brandList []*BrandInfo, totalCount int, err error) { if pageNo <= 0 { pageNo = 1 } @@ -320,44 +368,28 @@ func (a *API) BatchUpdateOutSkuId(skuInfoList []*SkuIDPair) (retVal interface{}, // 查询商家已上传商品信息列表接口 // https://opendj.jd.com/staticnew/widgets/resources.html?groupid=180&apiid=e433b95f74524dab91718432c0358977 // pageNo 从1开始 -func (a *API) QuerySkuInfos(skuName string, skuId int64, pageNo, pageSize int, isFilterDel bool) (retVal []map[string]interface{}, totalCount int, err error) { - if pageNo <= 0 { - pageNo = 1 +func (a *API) QuerySkuInfos(queryParam *QuerySkuParam) (skuList []*SkuMain, totalCount int, err error) { + if queryParam.PageNo <= 0 { + queryParam.PageNo = 1 } - if pageSize == 0 { - pageSize = 50 + if queryParam.PageSize == 0 { + queryParam.PageSize = 50 } - params := map[string]interface{}{ - KeyPageNo: pageNo, // pageNo好像必须要有值,否则一直不返回 - KeyPageSize: pageSize, - } - if skuName != "" { - params[KeySkuName] = skuName - } - if skuId != 0 { - params[KeySkuId] = skuId - } - if isFilterDel { - params[KeyIsFilterDel] = "1" - } else { - params[KeyIsFilterDel] = "0" - } - result, totalCount, err := a.AccessAPIHavePage("pms/querySkuInfos", params, nil, nil, nil) + result, totalCount, err := a.AccessAPIHavePage("pms/querySkuInfos", utils.Struct2MapByJson(queryParam), nil, nil, nil) if err == nil { - return utils.Slice2MapSlice(result), totalCount, nil + err = utils.Map2StructByJson(result, &skuList, false) } - return nil, 0, err + return skuList, totalCount, err } // 查询商品图片处理结果接口 // https://opendj.jd.com/staticnew/widgets/resources.html?groupid=180&apiid=17506653e03542f9a49023711780c30d -func (a *API) QueryListBySkuIds(skuIds []int64, addParams map[string]interface{}) (retVal []map[string]interface{}, err error) { - result, err := a.AccessAPINoPage("order/queryListBySkuIds", utils.MergeMaps(addParams, utils.Params2Map("skuIds", skuIds)), nil, nil, nil) +func (a *API) QueryListBySkuIds(queryParam *QueryListBySkuIdsParam) (imgList []*ImgHandleQueryResult, err error) { + result, err := a.AccessAPINoPage("order/queryListBySkuIds", utils.Struct2MapByJson(queryParam), nil, nil, nil) if err == nil { - return utils.Slice2MapSlice(result.([]interface{})), nil + err = utils.Map2StructByJson(result, &imgList, false) } - return nil, err - + return imgList, err } // 分页查询京东到家商品前缀库接口 diff --git a/platformapi/jdapi/sku_test.go b/platformapi/jdapi/sku_test.go index 950dcbbf..b15f7043 100644 --- a/platformapi/jdapi/sku_test.go +++ b/platformapi/jdapi/sku_test.go @@ -58,7 +58,11 @@ func TestBatchUpdateOutSkuId(t *testing.T) { func TestQuerySkuInfos(t *testing.T) { pageSize := 20 - result, totalCount, err := api.QuerySkuInfos("一个高级商品", 0, 0, pageSize, true) + result, totalCount, err := api.QuerySkuInfos(&QuerySkuParam{ + IsFilterDel: IsFilterDelTrue, + }) + t.Log(utils.Format4Output(result, false)) + t.Log(totalCount) if err != nil { t.Fatal(err) } @@ -73,7 +77,10 @@ func TestQueryListBySkuIds(t *testing.T) { 2018806493, 2018805873, } - result, err := api.QueryListBySkuIds(ids, nil) + result, err := api.QueryListBySkuIds(&QueryListBySkuIdsParam{ + SkuIDs: ids, + }) + t.Log(utils.Format4Output(result, false)) if err != nil { t.Fatal(err) }