wpc_goods.go 7.2 KB
package wpc

import (
	"context"
	"github.com/gogf/gf/encoding/gjson"
	"github.com/gogf/gf/frame/g"
)

type goodsWpc struct {
}

var Goods = goodsWpc{}

type GoodsListReq struct {
	ChannelId  string `json:"vopChannelId"`
	UserNumber string `json:"userNumber"`
	Page       string `json:"page"`
	PageSize   string `json:"pageSize"`
	AreaId     string `json:"areaId,omitempty"`
	AdId       string `json:"adId"`
	GoodsIds   string `json:"goodsIds,omitempty"`
}

type GoodsListRes struct {
	ReturnCode string `json:"returnCode"`
	Result     struct {
		PageTotal int `json:"pageTotal"`
		PageIndex int `json:"pageIndex"`
		TotalNum  int `json:"totalNum"`
		PageSize  int `json:"pageSize"`
		Goods           []struct {
			GoodId          string
			GoodImage       string
			BrandCnName     string
			BrandEnName     string
			Logo            string
			Sn              string
			Color           string
			Material        string
			CatNameOne      string
			CatNameTwo      string
			CatNameThree    string
			GoodFullId      string
			GoodOnline      int
			VendorProductId int64
			IsMp            bool
			CatIdOne        string
			CatIdTwo        string
			CatIdThree      string
			VendorSn        string
			GoodsBrandId    string
			SizeTableJson   []string
			DcImageURLs     []string
			Sizes           []struct {
				SizeName        string
				VipshopPrice    string
				MarketPrice     string
				Stock           bool
				SizeId          int64
				BuyMinNum       string
				BuyMaxNum       string
				Commission      string
				SuggestAddPrice string
				SuggestPrice    string
				SkuId           int64
				LimitBuyFlag    bool
			}
			GoodBigImage  []string
		} `json:"goods"`
	} `json:"result"`
}

//List 列表
func (*goodsWpc) List(ctx context.Context, req GoodsListReq) (res *GoodsListRes, err error) {
	method := "getGoodsList"
	req.ChannelId = server.AppKey
	req.UserNumber = server.UserNumber
	result, err := post(ctx, method, g.Map{
		"request": req,
	})
	_ = gjson.NewWithOptions(result, gjson.Options{
		StrNumber: true,
	}).Scan(&res)
	return
}

type GoodsStockReq struct {
	ChannelId   string `json:"vopChannelId"`
	UserNumber  string `json:"userNumber"`
	GoodFullIds string `json:"goodFullIds,omitempty"`
	AreaId      string `json:"areaId,omitempty"`
}

type GoodsStockRes struct {
	ReturnCode    string `json:"returnCode"`
	ReturnMessage string `json:"returnMessage"`
	Result        struct {
		GoodsStockList struct {
			GoodFullId string `json:"goodFullId"`
			sizes      []struct {
				SizeId      string `json:"sizeId"`
				SizeName    string `json:"sizeName"`
				Stock       int    `json:"stock"`
				Type        int    `json:"type"`
				StockStatus int    `json:"stockStatus"`
			}
		}
	} `json:"result"`
}

//Stock 库存
func (*goodsWpc) Stock(ctx context.Context, req GoodsStockReq) (res *GoodsStockRes, err error) {
	method := "getGoodsStock"
	req.ChannelId = server.AppKey
	req.UserNumber = server.UserNumber
	result, err := post(ctx, method, g.Map{
		"request": req,
	})
	_ = gjson.NewWithOptions(result, gjson.Options{
		StrNumber: true,
	}).Scan(&res)
	return
}

type GoodsDetailReq struct {
	ChannelId   string `json:"vopChannelId"`
	UserNumber  string `json:"userNumber"`
	AreaId      string `json:"areaId,omitempty"`
	GoodFullIds string `json:"goodFullIds"`
}

type GoodsDetailRes struct {
	ReturnCode string `json:"returnCode"`
	Result     []GoodsDetaiParam `json:"result"`
}
type GoodsDetaiParam struct {
	GoodId          string
	GoodImage       string
	GoodName        string
	BrandCnName     string
	BrandEnName     string
	Logo            string
	Sn              string
	Color           string
	Material        string
	CatNameOne      string
	CatNameTwo      string
	CatNameThree    string
	GoodFullId      string
	GoodOnline      int
	VendorProductId int64
	IsMp            bool
	CatIdOne        string
	CatIdTwo        string
	CatIdThree      string
	VendorSn        string
	GoodsBrandId    string
	SizeTableJson   []string
	DcImageURLs     []string
	GoodBigImage  []string
	Sizes           []struct {
		SizeName        string
		VipshopPrice    string
		MarketPrice     string
		Stock           bool
		SizeId          int64
		BuyMinNum       string
		BuyMaxNum       string
		Commission      string
		SuggestAddPrice string
		SuggestPrice    string
		SkuId           int64
		LimitBuyFlag    bool
	}
	GoodProps []struct{
		Name string
		Value string
	}
	IsAllNoStock bool
	IsSupportReturn bool
	TaxRate string
	TaxCode string
}
//Detail 详情
func (*goodsWpc) Detail(ctx context.Context, req GoodsDetailReq) (res *GoodsDetailRes, err error) {
	method := "getGoodsDetail"
	req.ChannelId = server.AppKey
	req.UserNumber = server.UserNumber
	result, err := post(ctx, method, g.Map{
		"request": req,
	})
	_ = gjson.NewWithOptions(result, gjson.Options{
		StrNumber: true,
	}).Scan(&res)
	return
}

type GoodsStatusReq struct {
	ChannelId   string `json:"vopChannelId"`
	UserNumber  string `json:"userNumber"`
	AreaId      string `json:"areaId,omitempty"`
	GoodFullIds string `json:"goodFullIds"`
}

type GoodsStatusRes struct {
	ReturnCode    string      `json:"returnCode"`
	ReturnMessage string      `json:"returnMessage"`
	Result        interface{} `json:"result"`
}

//Status 批量查询商品状态
func (*goodsWpc) Status(ctx context.Context, req GoodsStatusReq) (res *GoodsStatusRes, err error) {
	method := "getGoodsStatus"
	req.ChannelId = server.AppKey
	req.UserNumber = server.UserNumber
	result, err := post(ctx, method, g.Map{
		"request": req,
	})
	_ = gjson.NewWithOptions(result, gjson.Options{
		StrNumber: true,
	}).Scan(&res)
	return
}

type GoodsSizeStatusReq struct {
	ChannelId  string `json:"vopChannelId"`
	UserNumber string `json:"userNumber"`
	AreaId     string `json:"areaId,omitempty"`
	SizeIds    string `json:"sizeIds"`
}

type GoodsSizeStatusRes struct {
	ReturnCode    string `json:"returnCode"`
	ReturnMessage string `json:"returnMessage"`
	Result        struct {
		List []struct{
			GoodFullId string
			SizeId     string
			SizeName     string
			Stock     int
			Type     string
			GoodOnline int
			BuyMaxNum int
			BuyMinNum int
			VipshopPrice string
		}
	}
}

//SizeStatus 批量查询尺码状态
func (*goodsWpc) SizeStatus(ctx context.Context, req GoodsSizeStatusReq) (res *GoodsSizeStatusRes, err error) {
	method := "getSizeStatus"
	req.ChannelId = server.AppKey
	req.UserNumber = server.UserNumber
	result, err := post(ctx, method, g.Map{
		"request": req,
	})
	_ = gjson.NewWithOptions(result, gjson.Options{
		StrNumber: true,
	}).Scan(&res)
	return
}

type GoodsOnlineReq struct {
	ChannelId   string `json:"vopChannelId"`
	UserNumber  string `json:"userNumber"`
	AreaId      string `json:"areaId,omitempty"`
	GoodFullIds string `json:"goodFullIds"`
}

type GoodsOnlineRes struct {
	ReturnCode    string      `json:"returnCode"`
	ReturnMessage string      `json:"returnMessage"`
	Result        struct{
		GoodsList []struct{
			GoodFullId string `json:"goodFullId"`
			GoodOnline int `json:"goodOnline"`
		}
	} `json:"result"`
}

//Online 批量查询商品上下架
func (*goodsWpc) Online(ctx context.Context, req GoodsOnlineReq) (res *GoodsOnlineRes, err error) {
	method := "getGoodsOnline"
	req.ChannelId = server.AppKey
	req.UserNumber = server.UserNumber
	result, err := post(ctx, method, g.Map{
		"request": req,
	})
	_ = gjson.NewWithOptions(result, gjson.Options{
		StrNumber: true,
	}).Scan(&res)
	return
}