package skycrane 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 // 废弃商品 ) type sku struct { } type SkuSearch struct { Status int // 状态 Name string // 商品名称 Code string // sku编码 CategoryId int64 // 类目id BrandName string // 品牌 MinSupplyPrice decimal.Decimal // 采购价最小 MaxSupplyPrice decimal.Decimal // 采购价最大 } type ArgsSkuList struct { Search SkuSearch Page bean.Page } type SkuItem struct { Id int64 `json:"id"` Name string `json:"name"` Code string `json:"code"` MainPhoto string `json:"mainPhoto"` BrandName string `json:"brandName"` FirstCategoryName string `json:"firstCategoryName"` SecondCategoryName string `json:"secondCategoryName"` ThirdCategoryName string `json:"thirdCategoryName"` SupplyPrice decimal.Decimal `json:"supplyPrice"` GuidePrice decimal.Decimal `json:"guidePrice"` ShelvesStatus int64 `json:"shelvesStatus"` Status int64 `json:"status"` CreatedAt int64 `json:"createdAt"` UpdatedAt int64 `json:"updatedAt"` MateBrandId int64 `json:"mateBrandId"` MateCategoryId int64 `json:"mateCategoryId"` } type ReplySkuList struct { Lists []SkuItem `json:"lists"` Total int64 `json:"total"` } // List @Title 商品列表 func (s *sku) List(ctx context.Context, args ArgsSkuList) (reply ReplySkuList, err error) { xClient, err := client.GetClient(s) if err != nil { return } xClient.Call(ctx, "List", args, &reply) return } type SkuImg struct { Id int64 `json:"id"` Path string `json:"path"` ReplacePath string `json:"replacePath"` } // Imgs @Title 获取预览图 func (s *sku) Imgs(ctx context.Context, skuId int64) (reply []SkuImg, err error) { xClient, err := client.GetClient(s) if err != nil { return } err = xClient.Call(ctx, "Imgs", skuId, &reply) return } type ReplySkuInfo struct { Id int64 `json:"id"` GoodsCode string `json:"goodsCode"` GoodsName string `json:"goodsName"` Code string `json:"code"` Name string `json:"name"` Title string `json:"title"` SellPrice decimal.Decimal `json:"sellPrice"` MarketPrice decimal.Decimal `json:"marketPrice"` StartQty int64 `json:"startQty"` ShelvesStatus int64 `json:"shelvesStatus"` TaxCode string `json:"taxCode"` TaxRate decimal.Decimal `json:"taxRate"` BarCode string `json:"barCode"` IsDeleted int64 `json:"isDeleted"` BrandId int64 `json:"brandId"` BrandCode string `json:"brandCode"` BrandName string `json:"brandName"` CategoryId int64 `json:"categoryId"` FirstCategoryCode string `json:"firstCategoryCode"` FirstCategoryName string `json:"firstCategoryName"` SecondCategoryCode string `json:"secondCategoryCode"` SecondCategoryName string `json:"secondCategoryName"` ThirdCategoryCode string `json:"thirdCategoryCode"` ThirdCategoryName string `json:"thirdCategoryName"` ReturnGoodsRules int64 `json:"returnGoodsRules"` GoodsCharacteristic string `json:"goodsCharacteristic"` GoodsUnit string `json:"goodsUnit"` ModelNumber string `json:"modelNumber"` ProductPlace string `json:"productPlace"` HaveShelfLife int64 `json:"haveShelfLife"` ShelfLife string `json:"shelfLife"` FragileGoods int64 `json:"fragileGoods"` GrossWeight decimal.Decimal `json:"grossWeight"` GrossWeightUnit string `json:"grossWeightUnit"` Density decimal.Decimal `json:"density"` Extent decimal.Decimal `json:"extent"` Width decimal.Decimal `json:"width"` Height decimal.Decimal `json:"height"` CreatedAt int64 `json:"createdAt"` UpdatedAt int64 `json:"updatedAt"` MateBrandId int64 `json:"mateBrandId"` MateCategoryId int64 `json:"mateCategoryId"` Content string `json:"content"` Imgs []SkuImg `json:"imgs"` Attributes []SkuAttribute `json:"attributes"` Specs []SkuSpec `json:"specs"` } type SkuAttribute struct { Id int64 `json:"id"` Name string `json:"name"` Value string `json:"value"` } type SkuSpec struct { Id int64 `json:"id"` Name string `json:"name"` Value string `json:"value"` } // Info @Title 获取详情 func (s *sku) Info(ctx context.Context, skuId int64) (reply ReplySkuInfo, err error) { xClient, err := client.GetClient(s) if err != nil { return } err = xClient.Call(ctx, "Info", skuId, &reply) return } type ArgsSkuReplaceImg struct { SkuId int64 // 商品id ImgId int64 // 图片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 AdoptItem struct { Id int64 `json:"id"` Code string `json:"code"` Name string `json:"name"` Error string `json:"error"` } // Adopt @Title 入库 func (s *sku) Adopt(ctx context.Context, skuIds []int64) (reply []AdoptItem, err error) { xClient, err := client.GetClient(s) if err != nil { return } err = xClient.Call(ctx, "Adopt", skuIds, &reply) return } // Discard @Title 废弃 func (s *sku) Discard(ctx context.Context, skuIds []int64) error { reply := 0 xClient, err := client.GetClient(s) if err != nil { return err } return xClient.Call(ctx, "Discard", skuIds, &reply) }