package sku import ( "git.oa00.com/go/jdsdk/address" "git.oa00.com/go/jdsdk/request" ) const ( publicSkuList = "jingdong.ctp.ware.skupool.getSkuPoolList" // 公共池商品 publicSkuAdd = "jingdong.ctp.ware.skupool.addSkuIntoChannel" // 添加到渠道池 brotherList = "jingdong.ctp.ware.sku.getBrotherList" // 兄弟sku skuList = "jingdong.ctp.ware.sku.getSkuList" // sku列表 skuPriceList = "jingdong.ctp.ware.price.getSkuPriceInfoList" // 价格列表 skuDetail = "jingdong.ctp.ware.sku.getSkuDetail" // sku详情 skuStock = "jingdong.ctp.ware.stock.queryAreaStockState" // sku库存 ) type Sku struct { } type ApiSkuPoolListParam struct { ScrollId string `json:"scrollId"` SkuPoolType uint `json:"skuPoolType"` PageSize uint `json:"pageSize"` } type poolSku struct { SkuPoolId uint64 `json:"skuPoolId"` SkuId uint64 `json:"skuId"` SkuName string `json:"skuName"` SkuPoolType uint `json:"skuPoolType"` SkuPoolTypeName string `json:"skuPoolTypeName"` } type poolData struct { ScrollId string `json:"scrollId"` Total uint `json:"total"` Entries []poolSku `json:"entries"` } // GetPublicList @Title 获取公共商品列表 func (s *Sku) GetPublicList(data ApiSkuPoolListParam) (result poolData, err error) { err = request.ExecCtlProtocol(publicSkuList, data, &result) return } type PoolItem struct { SkuPoolId uint64 `json:"skuPoolId"` SkuId uint64 `json:"skuId"` } type apiSkuPoolAddParam struct { SkuPoolAddList []PoolItem `json:"skuPoolAddList"` } type skuPoolAdd struct { ErrorMessage string `json:"errorMessage"` SkuPoolId uint64 `json:"skuPoolId"` SkuId uint64 `json:"skuId"` IsSuccess bool `json:"isSuccess"` } // PublicAdd @Title 添加公共商品到商品库 func (s *Sku) PublicAdd(data []PoolItem) (result []skuPoolAdd, err error) { err = request.ExecCtlProtocol(publicSkuAdd, apiSkuPoolAddParam{ SkuPoolAddList: data, }, &result) return } type apiBrotherListParam struct { SkuIdSet []uint64 `json:"skuIdSet"` } type brotherItem struct { BrotherSkuIds []uint64 `json:"brotherSkuIds"` // 兄弟sku集合 ErrorMessage string `json:"errorMessage"` // 错误原因 SkuId uint64 `json:"skuId"` // skuId IsSuccess bool `json:"isSuccess"` // 是否成功 } // GetBrother @Title 获取商品兄弟关系 最大20个 func (s *Sku) GetBrother(skuIds []uint64) (result []brotherItem, err error) { err = request.ExecCtlProtocol(brotherList, apiBrotherListParam{ SkuIdSet: skuIds, }, &result) return } type ApiSkuListParam struct { ScrollId string `json:"scrollId"` OrderBy string `json:"orderBy,omitempty"` // 排序方式。格式为column:asc/desc。column可选值:modified(最近修改时间) SkuStatus uint `json:"skuStatus,omitempty"` // sku上下架状态(1 上架,2 下架) CategoryId uint `json:"categoryId,omitempty"` // 三级分类 StartModified string `json:"startModified,omitempty"` // 起始的修改时间,非必填 EndModified string `json:"endModified,omitempty"` // 结束的修改时间,非必填 PageSize uint `json:"pageSize"` // 分页大小,size小于等于20 SkuName string `json:"skuName,omitempty"` // 搜索条件 } type EntryParams struct { SkuId uint64 `json:"skuId"` // skuId SkuName string `json:"skuName"` // 商品名称 OuterId string `json:"outerId"` // 渠道sku编号 无意义 ImgUrl string `json:"imgUrl"` // 商品主图 CategoryId1 uint `json:"categoryId1"` // 一级分类 CategoryName1 string `json:"categoryName1"` // 一级分类 CategoryId2 uint `json:"categoryId2"` // 二级分类 CategoryName2 string `json:"categoryName2"` // 二级分类 CategoryId uint `json:"categoryId"` // 三级分类 CategoryName string `json:"categoryName"` // 三级分类 BrandId uint `json:"brandId"` // 品牌id BrandName string `json:"brandName"` // 品牌名称 SkuStatus uint `json:"skuStatus"` // 上下加状态 1=上架 2=下架 Created int64 `json:"created"` // 创建时间 Modified int64 `json:"modified"` // 修改时间 EnBrandName string `json:"enBrandName"` // 品牌英文名 BrandCountry string `json:"brandCountry"` // 品牌国家 WareType uint `json:"wareType"` // 品牌类型(1-普通商品; 2-虚拟组套) } type skuData struct { ScrollId string `json:"scrollId"` Total uint `json:"total"` Entries []EntryParams `json:"entries"` } // GetList @Title 获取商品列表 func (s *Sku) GetList(data ApiSkuListParam) (result skuData, err error) { err = request.ExecCtlProtocol(skuList, data, &result) return } type skuPriceInfoParam struct { SkuIdSet []uint64 `json:"skuIdSet"` } type priceDetail struct { SkuPriceList []PriceItem `json:"skuPriceList"` CustomerId uint `json:"customerId"` ChannelId uint `json:"channelId"` } type PriceItem struct { IsSuccess bool `json:"isSuccess"` // 是否获取价格成功(若成功,则skuPrice字段返回该sku价格;否则,errorMessage字段返回查询失败原因) ErrorMessage string `json:"errorMessage"` // 若sku价格查询失败(isSuccess!=true),则返回原因 SkuPrice float64 `json:"skuPrice"` // sku价格,仅获取价格成功时(isSuccess=true)有值,单位:元 小数点后两位 SkuId uint64 `json:"skuId"` // skuId //PriceTypeMark string `json:"priceTypeMark"` // 商品价格类型标识(1:基础价格,2:促销价格) ProfitRate float64 `json:"profitRate"` // 商品利润率 BackStagePrice string `json:"backStagePrice"` // 京东后台价 //PsriceUpdateTime string `json:"priceUpdateTime"` // 商品价格更新时间 } // GetPriceList @Title 获取商品价格列表 最大100 func (s *Sku) GetPriceList(skuIds []uint64) ([]PriceItem, error) { detail := priceDetail{} err := request.ExecCtlProtocol(skuPriceList, skuPriceInfoParam{ SkuIdSet: skuIds, }, &detail) return detail.SkuPriceList, err } type skuDetailParam struct { SkuIdSet []uint64 `json:"skuIdSet"` // 最大20 DetailAssemblyType uint `json:"detailAssemblyType"` // 商品详情类型。0:返回sku详情全部信息 } type imageInfo struct { Path string `json:"path"` // 图片路径 Features string `json:"features"` // 特征 无意义 OrderSort uint `json:"orderSort"` // 排序 1-n 可能为null IsPrimary uint `json:"isPrimary"` // 是否主图 Position uint `json:"position"` // 未知 无意义 Type uint `json:"type"` // 类型 0=方图 1=长图 } type skuBaseBookInfo struct { Id string `json:"id"` ISBN string `json:"ISBN"` ISSN string `json:"ISSN"` BookName string `json:"bookName"` ForeignBookName string `json:"foreignBookName"` Language string `json:"language"` Author string `json:"author"` Editer string `json:"editer"` Proofreader string `json:"proofreader"` Remarker string `json:"remarker"` Transfer string `json:"transfer"` Drawer string `json:"drawer"` Publishers string `json:"publishers"` PublishNo string `json:"publishNo"` Series string `json:"series"` Brand string `json:"brand"` Format string `json:"format"` PackageStr string `json:"packageStr"` Pages string `json:"pages"` BatchNo string `json:"batchNo"` PublishTime string `json:"publishTime"` PrintNo string `json:"printNo"` PrintTime string `json:"printTime"` SizeAndHeight string `json:"sizeAndHeight"` ChinaCatalog string `json:"chinaCatalog"` Attachment string `json:"attachment"` AttachmentNum string `json:"attachmentNum"` PackNum string `json:"packNum"` Letters string `json:"letters"` BarCode string `json:"barCode"` Compile string `json:"compile"` Photography string `json:"photography"` PicNo string `json:"picNo"` MarketPrice string `json:"marketPrice"` } type skuBaseInfo struct { SkuName string `json:"skuName"` // 商品名称 VenderName string `json:"venderName"` // 商家名称 ShopName string `json:"shopName"` // 店铺名称 CategoryId1 uint `json:"categoryId1"` // 一级分类id CategoryId2 uint `json:"categoryId2"` // 二级分类id CategoryId uint `json:"categoryId"` // 三级分类id Length float64 `json:"length"` // 长 mm Width float64 `json:"width"` // 宽 mm Height float64 `json:"height"` // 高 mm Weight float64 `json:"weight"` // 重 kg PackageType string `json:"packageType"` // 包装规格 Model string `json:"model"` // 型号 Color string `json:"color"` // 颜色 ColorSequence string `json:"colorSequence"` // 颜色顺序 UpcCode string `json:"upcCode"` // upc码 Size string `json:"size"` // 尺码 SizeSequence string `json:"sizeSequence"` // 尺码顺序 Unit string `json:"unit"` // 单位 Warranty string `json:"warranty"` // 质保 ShelfLife string `json:"shelfLife"` // 保质期天数 Delivery string `json:"delivery"` // 发货地址 PlaceOfProduction string `json:"placeOfProduction"` // 产地 Tax string `json:"tax"` // 税率 ProductId uint `json:"productId"` // 商品编号 无意义 SkuStatus uint `json:"skuStatus"` // 商家状态 1=上架 2=下架 与京东商品无关 Yn uint `json:"yn"` // 是否有效 0=无效 1=有效 京东可能会将商品设置成无效商品 Fare uint `json:"fare"` // 运费模版id 无意义 CategoryName1 string `json:"categoryName1"` // 一级分类 CategoryName2 string `json:"categoryName2"` // 二级分类 CategoryName string `json:"categoryName"` // 三级分类 //SkuInfoType string `json:"skuInfoType"` // sku信息类型 1-图书 2-音像 //BookSkuBaseInfo skuBaseBookInfo `json:"bookSkuBaseInfo"` // 图书基本信息 skuInfoType=1时获取 //WareType uint `json:"wareType"` // 商品类型 (1-普通商品; 2-虚拟组套) } type skuAttribute struct { AttName string `json:"attName"` // 属性名 ValNames []string `json:"valNames"` // 属性值列表 } type skuSpecification struct { GroupName string `json:"groupName"` // 组名称 Attributes []skuAttribute `json:"attributes"` // 属性信息列表 } type skuBigFieldInfo struct { PcWdis string `json:"pcWdis"` // pc端商品介绍 PcHtmlContent string `json:"pcHtmlContent"` // PC HTML 可能为null PcJsContent string `json:"pcJsContent"` // PC CSS 可能为null PcCssContent string `json:"pcCssContent"` // PC JS 可能为null } type Detail struct { ImageInfos []imageInfo `json:"imageInfos"` // 图片信息 Specifications []skuSpecification `json:"specifications"` // 规格参数 SkuId uint64 `json:"skuId"` // skuId SkuBaseInfo skuBaseInfo `json:"skuBaseInfo"` // 基础信息 SkuBigFieldInfo skuBigFieldInfo `json:"skuBigFieldInfo"` // 大字段 商品详情 ExtAtts []skuAttribute `json:"extAtts"` //WReadMe string `json:"wReadMe"` } // GetDetail @Title 获取商品详情 sku最大20 func (s *Sku) GetDetail(skuIds []uint64) (result []Detail, err error) { err = request.ExecCtlProtocol(skuDetail, skuDetailParam{ SkuIdSet: skuIds, }, &result) return result, err } type SkuQuantityItem struct { Quantity uint `json:"quantity"` // 数量 SkuId uint64 `json:"skuId"` // skuId } type StockStateParam struct { SkuQuantityList []SkuQuantityItem `json:"skuQuantityList"` // 商品信息 最多20个 Address address.Address `json:"address"` // 收货地址 } type stockStateList struct { SkuQuantity SkuQuantityItem `json:"skuQuantity"` // 对应商品信息 AreaStockState uint `json:"areaStockState"` // 库存状态。0:无货 1:有货 2:采购中 LeadTime string `json:"leadTime"` // 采购中商品的预计到货时间 } // GetStock @Title 获取商品库存 最多20个 func (s *Sku) GetStock(data StockStateParam) (result []stockStateList, err error) { err = request.ExecCtlProtocol(skuStock, data, &result) return result, err }