package jd import ( "context" "git.oa00.com/supply-chain/service/client" "git.oa00.com/supply-chain/service/lib/bean" "github.com/shopspring/decimal" ) const ( SkuStatusNone = 1 // 待处理 SkuStatusAdopt = 2 // 同步入库 SkuStatusReject = 3 // 废弃商品 SkuHandleNone = 1 // 未处理 SkuHandleStart = 2 // 开始处理 SkuJdStatusUp = 1 // 京东上架 SkuJdStatusDown = 2 // 京东下架 ) type sku struct { } type SkuSearch struct { Status uint // 状态 Handle uint // 处理状态 Name string // 商品名称 JdSkuId uint64 // 京东SkuId CategoryId uint64 // 类目id BrandName string // 品牌 MinSupplyPrice decimal.Decimal // 采购价最小 MaxSupplyPrice decimal.Decimal // 采购价最大 } type ArgsSkuList struct { Search SkuSearch Page bean.Page } type SkuItem struct { Id uint `json:"id"` JdSkuId uint64 `json:"jdSkuId"` JdSkuStatus uint `json:"jdSkuStatus"` Name string `json:"name"` ImgUrl string `json:"imgUrl"` FirstCategoryName string `json:"firstCategoryName"` SecondCategoryName string `json:"secondCategoryName"` ThirdCategoryName string `json:"thirdCategoryName"` BrandName string `json:"brandName"` SupplyPrice decimal.Decimal `json:"supplyPrice"` GuidePrice decimal.Decimal `json:"guidePrice"` Profit decimal.Decimal `json:"profit"` Status uint `json:"status"` Handle uint `json:"handle"` SupplyCategoryId uint `json:"supplyCategoryId"` SupplyBrandId uint `json:"supplyBrandId"` } type ReplySkuList struct { Lists []SkuItem `json:"lists"` Total int64 `json:"total"` } // Lists @Title 获取商品列表 func (s *sku) Lists(ctx context.Context, args ArgsSkuList) (reply ReplySkuList, err error) { xClient, err := client.GetClient(s) if err != nil { return } err = xClient.Call(ctx, "Lists", args, &reply) return } // Start @Title 开始处理 func (s *sku) Start(ctx context.Context, skuIds []uint) error { reply := 0 xClient, err := client.GetClient(s) if err != nil { return err } return xClient.Call(ctx, "Start", skuIds, &reply) } type ReplySkuInfo struct { Id uint `json:"id"` Name string `json:"name"` JdSkuId uint64 `json:"jdSkuId"` SupplyPrice decimal.Decimal `json:"supplyPrice"` GuidePrice decimal.Decimal `json:"guidePrice"` Profit decimal.Decimal `json:"profit"` UpcCode string `json:"upcCode"` Color string `json:"color"` Size string `json:"size"` FirstCategoryName string `json:"firstCategoryName"` SecondCategoryName string `json:"secondCategoryName"` ThirdCategoryName string `json:"thirdCategoryName"` SupplyCategoryId uint `json:"supplyCategoryId"` BrandName string `json:"brandName"` SupplyBrandId uint `json:"supplyBrandId"` Content string `json:"content"` Tax string `json:"tax"` Unit string `json:"unit"` Imgs []SkuImg `json:"imgs"` Specifications []SkuSpecification `json:"specifications"` JdSkuStatus uint `json:"jdSkuStatus"` } type SkuImg struct { Id uint `json:"id"` Path string `json:"path"` ReplacePath string `json:"replacePath"` } // GetImgs @Title 获取预览图 func (s *sku) GetImgs(ctx context.Context, skuId uint) (reply []SkuImg, err error) { xClient, err := client.GetClient(s) if err != nil { return } err = xClient.Call(ctx, "GetImgs", skuId, &reply) return } type SkusImg struct { Id uint `json:"id"` SkuId uint `json:"skuId"` Path string `json:"path"` ReplacePath string `json:"replacePath"` Sort uint `json:"sort"` } // GetSkusImgs @Title 批量获取预览图 func (s *sku) GetSkusImgs(ctx context.Context, skuId []uint) (reply []SkusImg, err error) { xClient, err := client.GetClient(s) if err != nil { return } err = xClient.Call(ctx, "GetSkusImgs", skuId, &reply) return } type SkuSpecification struct { Name string `json:"name"` Attributes []SkuAttribute `json:"attributes"` } type SkuAttribute struct { Name string `json:"name"` Value []string `json:"value"` } // Info @Title 获取商品详情 func (s *sku) Info(ctx context.Context, skuId uint) (reply ReplySkuInfo, err error) { xClient, err := client.GetClient(s) if err != nil { return } err = xClient.Call(ctx, "Info", skuId, &reply) return } type ArgsSkuEdit struct { SkuId uint SupplyBandId uint SupplyCategoryId uint Content string Imgs []SkuImgEdit } type SkuImgEdit struct { Id uint ReplacePath string } // Edit @Title 商品编辑 func (s *sku) Edit(ctx context.Context, args ArgsSkuEdit) error { reply := 0 xClient, err := client.GetClient(s) if err != nil { return err } return xClient.Call(ctx, "Edit", args, &reply) } // Discard @Title 废弃 func (s *sku) Discard(ctx context.Context, skuIds []uint) error { reply := 0 xClient, err := client.GetClient(s) if err != nil { return err } return xClient.Call(ctx, "Discard", skuIds, &reply) } type AdoptItem struct { Id uint `json:"id"` JdSkuId uint64 `json:"jdSkuId"` Name string `json:"name"` Error string `json:"error"` } // Adopt @Title 入库 func (s *sku) Adopt(ctx context.Context, skuIds []uint) (reply []AdoptItem, err error) { xClient, err := client.GetClient(s) if err != nil { return } err = xClient.Call(ctx, "Adopt", skuIds, &reply) return } type ArgsSkuReplaceImg struct { SkuId uint // 商品id ImgId uint // 图片id ImgPath string // 图片路径 } // ReplaceImg @Title 替换图片 func (s *sku) ReplaceImg(ctx context.Context, args ArgsSkuReplaceImg) error { reply := 0 xClient, err := client.GetClient(s) if err != nil { return err } return xClient.Call(ctx, "ReplaceImg", args, &reply) } type ArgsSkuReplaceImgJdSku struct { JdSkuId uint64 // 京东skuId ImgSort uint // 图片排序 ImgPath string // 图片路径 } // ReplaceImgJdSku @Title 根据JdSkuId sort替换图片 func (s *sku) ReplaceImgJdSku(ctx context.Context, args ArgsSkuReplaceImgJdSku) error { reply := 0 xClient, err := client.GetClient(s) if err != nil { return err } return xClient.Call(ctx, "ReplaceImgJdSku", args, &reply) } // ReHandle @Title 重新处理商品 func (s *sku) ReHandle(ctx context.Context, skuId uint) error { reply := 0 xClient, err := client.GetClient(s) if err != nil { return err } return xClient.Call(ctx, "ReHandle", skuId, &reply) } type PriceItem struct { SkuId uint64 Price decimal.Decimal JdPrice decimal.Decimal } // Prices @TITLE 批量更新价格 func (s *sku) Prices(ctx context.Context, prices PriceItem) error { reply := 0 xClient, err := client.GetClient(s) if err != nil { return err } return xClient.Call(ctx, "Prices", prices, &reply) }