package hdh import ( "context" "github.com/gogf/gf/encoding/gjson" "github.com/gogf/gf/net/ghttp" ) type GoodsNotifyRes struct { BrandID string `json:"brandId"` // BrandName string `json:"brandName"` //品牌名称 Currency string `json:"currency"` //货币单位 参考货币字典 FirstCateID int `json:"firstCateId"` //一级类目id FirstCateName string `json:"firstCateName"` //一级类目名称 Gift int `json:"gift"` //是或赠品( 0不是 1是) ID string `json:"id"` // ImageList []string `json:"imageList"` //图片数组 IsDelete int `json:"isDelete"` // ItemLimitCondition ItemLimitCondition `json:"itemLimitCondition"` //商品限购信息 Name string `json:"name"` //商品名称 Presell int `json:"presell"` //是否预售商品(0不是 1是) SecondCateID int `json:"secondCateId"` //二级类目id SecondCateName string `json:"secondCateName"` //二级类目名称 ShelfStatus int `json:"shelfStatus"` //商品上下架状态(0下架 1上架) 下架商品即为不可售 ShopName string `json:"shopName"` //店铺名称 SkuList []SkuList `json:"skuList"` //商品规格信息 SkuNameValues []SkuNameValues `json:"skuNameValues"` //规格信息 ThirdCateID int `json:"thirdCateId"` // ThirdCateName string `json:"thirdCateName"` // RichDesc string `json:"richDesc"` //图文详情 html片段 } type ItemLimitCondition struct { CycleLimitQuantity int `json:"cycleLimitQuantity"` //周期限购数量 CycleLimitTime int `json:"cycleLimitTime"` //周期限购时间(默认单位:日) } type SkuChannels struct { ChannelName string `json:"channelName"` //渠道名称 ChannelType string `json:"channelType"` //渠道类型 ItemCode string `json:"itemCode"` //商品编码 如果系统需要在会订货系统导入 OriginalPrice float64 `json:"originalPrice"` //原价 Price float64 `json:"price"` //现价 SalesStatus int `json:"salesStatus"` //商品销售状态(0为不可售 1可售) Stock int `json:"stock"` //当前渠道商品的库存数 } type SkuValues struct { SkuName string `json:"skuName"` //规格名 SkuValue string `json:"skuValue"` //规格值 } type SkuList struct { ItemID string `json:"itemId"` //商品id 与上面的商品id一致 SkuChannels []SkuChannels `json:"skuChannels"` //对应渠道信息 SkuID string `json:"skuId"` //规格id SkuValues []SkuValues `json:"skuValues"` //规格信息 TotalStock int `json:"totalStock"` //商品总数量 Unit string `json:"unit"` //单位 例如:件、组、盒、支 UnitQuantity int `json:"unitQuantity"` //单位对应的数量 与单位共用 如:1件、1组、1盒、1支 Upc string `json:"upc"` // Weight float64 `json:"weight"` //重量 WeightG float64 `json:"weightG"` // } type SkuNameValues struct { SkuName string `json:"skuName"` // SkuValues []SkuValues `json:"skuValues"` //规格信息 } //商品请求 type GoodsListReq struct { AppID string `json:"appId"` Page int `json:"page"` Limit int `json:"limit"` LogNo string `json:"logNo"` //日志编号 PrePageLastID string `json:"prePageLastId"` //上一页最后一个商品ID CateID1 int `json:"cateId1"` //一级类目ID CateID2 int `json:"cateId2"` //二级类目ID CateID3 int `json:"cateId3"` //三级类目ID ChannelTypes []int `json:"channelTypes"` //品牌ID集合 BrandIds []int64 `json:"brandIds"` //发货方式集合 } //商品列表 type GoodsListRes struct { Code string `json:"code"` Data struct { ItemList []struct { BrandID string `json:"brandId"` //品牌ID BrandName string `json:"brandName"` //品牌名称 Currency string `json:"currency"` //货币单位 参考货币字典 Desc string `json:"desc"` //商品描述 FirstCateID int `json:"firstCateId"` //一级类目id FirstCateName string `json:"firstCateName"` // Gift int `json:"gift"` //是或赠品( 0不是 1是) ID string `json:"id"` // ImageList []string `json:"imageList"` //图片数组 IsDelete int `json:"isDelete"` // Name string `json:"name"` //商品名称 Presell int `json:"presell"` //是否预售商品(0不是 1是) RichDesc string `json:"richDesc"` //图文详情 html片段 SecondCateID int `json:"secondCateId"` //二级类目id SecondCateName string `json:"secondCateName"` // ShelfStatus int `json:"shelfStatus"` //商品上下架状态(0下架 1上架) 下架商品即为不可售 ShopName string `json:"shopName"` //店铺名称 SkuList []struct { ItemID string `json:"itemId"` //商品id 与上面的商品id一致 SkuChannels []struct { ChannelName string `json:"channelName"` //渠道名称 ChannelType string `json:"channelType"` //渠道类型 ItemCode string `json:"itemCode"` //商品编码 如果系统需要在会订货系统导入订单 需要使用到 OriginalPrice float64 `json:"originalPrice"` //原价(建议零售价) Price float64 `json:"price"` //现价(实际采购价) SalesStatus int `json:"salesStatus"` //商品销售状态(0为不可售 1可售) Stock int `json:"stock"` //当前渠道商品的库存数 } `json:"skuChannels"` //对应渠道信息 SkuID string `json:"skuId"` //规格id SkuValues []struct { ImageURL string `json:"imageUrl"` //规格对应的图片数组 SkuName string `json:"skuName"` //规格名称 SkuValue string `json:"skuValue"` //规格名对应的规格信息 } `json:"skuValues"` //规格值 TotalStock int `json:"totalStock"` //商品总数量 Unit string `json:"unit"` //单位 例如:件、组、盒、支 UnitQuantity int `json:"unitQuantity"` //单位对应的数量 与单位共用 如:1件、1组、1盒、1支 Upc string `json:"upc"` // Weight float64 `json:"weight"` //重量 WeightG float64 `json:"weightG"` // } `json:"skuList"` //商品规格信息 SkuNameValues []struct { SkuName string `json:"skuName"` //规格名称 SkuValues []struct { //规格名对应的规格信息 ImageURLList []string `json:"imageUrlList"` //规格对应的图片数组 SkuValue string `json:"skuValue"` //规格值 } `json:"skuValues"` } `json:"skuNameValues"` ThirdCateID int `json:"thirdCateId"` ThirdCateName string `json:"thirdCateName"` } `json:"itemList"` Total int `json:"total"` } `json:"data"` Message string `json:"message"` Success int `json:"success"` } //商品详情入参 type GoodsInfoReq struct { AppID string `json:"appId"` Ids []string `json:"ids"` //商品Id } //商品详情 type GoodsInfoRes struct { Code string `json:"code"` Data []*GoodsInfoItem `json:"data"` // Message string `json:"message"` Success int `json:"success"` } type GoodsInfoItem struct { BrandID string `json:"brandId"` BrandName string `json:"brandName"` //品牌名称 Currency string `json:"currency"` //货币单位 参考货币字典 Desc string `json:"desc"` //商品描述 FirstCateID int `json:"firstCateId"` //一级类目id FirstCateName string `json:"firstCateName"` // Gift int `json:"gift"` //是或赠品( 0不是 1是) ID string `json:"id"` // ImageList []string `json:"imageList"` //图片数组 IsDelete int `json:"isDelete"` // Name string `json:"name"` //商品名称 Presell int `json:"presell"` //是否预售商品(0不是 1是) RichDesc string `json:"richDesc"` //图文详情 html片段 SecondCateID int `json:"secondCateId"` //二级类目id SecondCateName string `json:"secondCateName"` // ShelfStatus int `json:"shelfStatus"` //商品销售状态(0为不可售 1可售) ShopName string `json:"shopName"` //店铺名称 SkuList []struct { ItemID string `json:"itemId"` //商品id 与上面的商品id一致 SkuChannels []struct { ChannelName string `json:"channelName"` //渠道名称 ChannelType string `json:"channelType"` //渠道类型 ItemCode string `json:"itemCode"` //商品编码 如果系统需要在会订货系统导入订单 需要使用到 OriginalPrice float64 `json:"originalPrice"` //原价(建议零售价) Price float64 `json:"price"` //现价(实际采购价) SalesStatus int `json:"salesStatus"` //商品销售状态(0为不可售 1可售) Stock int `json:"stock"` //当前渠道商品的库存数 } `json:"skuChannels"` //对应渠道信息 SkuID string `json:"skuId"` //规格id SkuValues []struct { ImageURL string `json:"imageUrl"` //规格对应的图片数组 SkuName string `json:"skuName"` //规格名称 SkuValue string `json:"skuValue"` //规格名对应的规格信息 } `json:"skuValues"` //规格值 TotalStock int `json:"totalStock"` //商品总数量 Unit string `json:"unit"` //单位 例如:件、组、盒、支 UnitQuantity int `json:"unitQuantity"` //单位对应的数量 与单位共用 如:1件、1组、1盒、1支 Upc string `json:"upc"` // Weight float64 `json:"weight"` //重量 WeightG float64 `json:"weightG"` // } `json:"skuList"` SkuNameValues []struct { SkuName string `json:"skuName"` //规格名称 SkuValues []struct { ImageURLList []string `json:"imageUrlList"` //规格对应的图片数组 SkuValue string `json:"skuValue"` //规格值 } `json:"skuValues"` // } `json:"skuNameValues"` // ThirdCateID int `json:"thirdCateId"` // ThirdCateName string `json:"thirdCateName"` // } //商品列表 func GetGoodsList(ctx context.Context, req *GoodsListReq) (res *GoodsListRes, err error) { result, err := post(ctx, "/item/get_item_list.do", req) if nil != err { return } //err = json.Unmarshal([]byte(result), &res) err = gjson.NewWithOptions([]byte(result), gjson.Options{ StrNumber: true, }).Scan(&res) return } //商品详情 func GetGoodsInfo(ctx context.Context, req *GoodsInfoReq) (res *GoodsInfoRes, err error) { result, err := post(ctx, "/item/get_items.do", req) if nil != err { return } //err = json.Unmarshal([]byte(result), &res) err = gjson.NewWithOptions([]byte(result), gjson.Options{ StrNumber: true, }).Scan(&res) return } //商品回调 func GoodsCallBack(r *ghttp.Request) (res *GoodsNotifyRes, err error) { //body, err := CheckSign(r) //if nil != err { // return //} body := r.GetBodyString() if body == "" { return } //err = json.Unmarshal([]byte(body), &res) err = gjson.NewWithOptions([]byte(body), gjson.Options{ StrNumber: true, }).Scan(&res) return }