diff --git a/otosaas/commodity.go b/otosaas/commodity.go new file mode 100644 index 0000000..d252ce4 --- /dev/null +++ b/otosaas/commodity.go @@ -0,0 +1,195 @@ +package otosaas + +import ( + "context" + "git.oa00.com/supply-chain/service/client" + "git.oa00.com/supply-chain/service/lib/bean" + "github.com/shopspring/decimal" +) + +const ( + CommodityStatusNone = 1 // 待处理 + CommodityStatusAdopt = 2 // 同步入库 + CommodityStatusReject = 3 // 废弃商品 + + CommodityHandleNone = 1 // 未处理 + CommodityHandleStart = 2 // 开始处理 + + CommoditySaasSkuStatusUp = 1 // 商品上架 + CommoditySaasSkuStatusDown = 2 // 商品下架 +) + +type commodity struct { +} +type CommoditySearch struct { + Name string // 商品名称 + CategoryIds []uint // 类目id + SkuCode string // 商品条码 + Handle uint // 处理状态 1=待处理 2=入库 3=废弃 + SkuId uint // 供应商skuId + MinSupplyPrice decimal.Decimal // 最小采购价 + MaxSupplyPrice decimal.Decimal // 最大采购价 +} +type ArgsGoodsList struct { + Search CommoditySearch + Page bean.Page +} + +type CommodityItem struct { + Id uint `json:"id"` + Name string `json:"name"` + Img string `json:"img"` + CategoryId uint `json:"categoryId"` + CategoryNames string `json:"categoryNames"` + Skus []CommoditySkuItem `json:"skus"` + GuidePrices []decimal.Decimal `json:"guidePrices"` + SupplyPrices []decimal.Decimal `json:"supplyPrices"` + Status uint `json:"status"` + CreatedAt int64 `json:"createdAt"` +} + +type CommoditySkuItem struct { + Id uint `json:"id"` + Img string `json:"img"` + SupplyPrice decimal.Decimal `json:"supplyPrice"` + SpecValue string `json:"specValue"` + SkuCode string `json:"skuCode"` +} + +type GoodsSpecificationItem struct { + Name string `json:"name"` + Values []string `json:"values"` +} + +type ReplyCommodityLists struct { + List []CommodityItem `json:"list"` + Total int64 `json:"total"` +} + +// Lists @Title 获取商品列表 +func (g *commodity) Lists(ctx context.Context, args ArgsGoodsList) (reply ReplyCommodityLists, err error) { + xClient, err := client.GetClient(g) + if err != nil { + return + } + err = xClient.Call(ctx, "Lists", args, &reply) + return +} + +type ArgsGoodsInfo struct { + SkuId uint +} + +type ReplyGoodsInfo struct { + Id uint `json:"id"` + Name string `json:"name"` + SupplierId uint `json:"supplierId"` + SupplierName string `json:"supplierName"` + CategoryId uint `json:"categoryId"` + BrandId uint `json:"brandId"` + Imgs []string `json:"imgs"` + Content string `json:"content"` + Attributes []GoodsAttributeItem `json:"attributes"` + Skus []SkuItem `json:"skus"` + Status uint `json:"status"` +} + +type GoodsAttributeItem struct { + Name string `json:"name"` + Value string `json:"value"` + GroupName string `json:"groupName"` +} + +type SkuSpecItem struct { + Name string `json:"name"` + Value string `json:"value"` +} + +type SkuItem struct { + SkuId uint `json:"skuId"` + Color string `json:"color"` + Size string `json:"size"` + SupplyPrice decimal.Decimal `json:"supplyPrice"` + MarketPrice decimal.Decimal `json:"marketPrice"` + UpcCode string `json:"upcCode"` + UnitId uint `json:"uintId"` + TaxCategoryId uint `json:"taxCategoryId"` + TaxName string `json:"taxName"` + TaxCode string `json:"taxCode"` + Unit string `json:"uint"` + Tax decimal.Decimal `json:"tax"` + Img string `json:"img"` +} + +// Info @Title 商品详情 +func (g *commodity) Info(ctx context.Context, goodsId uint) (reply ReplyGoodsInfo, err error) { + xClient, err := client.GetClient(g) + if err != nil { + return + } + err = xClient.Call(ctx, "Info", goodsId, &reply) + return +} + +// GetImgs @Title 获取商品主图 +func (g *commodity) GetImgs(ctx context.Context, goodsId uint) (reply []string, err error) { + xClient, err := client.GetClient(g) + if err != nil { + return + } + err = xClient.Call(ctx, "GetImgs", goodsId, &reply) + return +} + +type AdoptItem struct { + Id uint `json:"id"` + Name string `json:"name"` + Error string `json:"error"` +} + +// Adopt @Title 批量入库 +func (g *commodity) Adopt(ctx context.Context, goodsIds []uint) (reply []AdoptItem, err error) { + xClient, err := client.GetClient(g) + if err != nil { + return + } + err = xClient.Call(ctx, "Adopt", goodsIds, &reply) + return +} + +// Discard @Title 批量废弃 +func (g *commodity) Discard(ctx context.Context, goodsIds []uint) (err error) { + xClient, err := client.GetClient(g) + if err != nil { + return + } + reply := 0 + err = xClient.Call(ctx, "Discard", goodsIds, &reply) + return +} + +// ReHandle @Title 重新处理商品 +func (g *commodity) ReHandle(ctx context.Context, goodsIds []uint) (reply []AdoptItem, err error) { + xClient, err := client.GetClient(g) + if err != nil { + return nil, err + } + err = xClient.Call(ctx, "ReHandle", goodsIds, &reply) + return +} + +type ReplyByIdItem struct { + SkuId uint `json:"skuId"` + SupplierId uint `json:"supplierIds"` + SupplierName string `json:"supplierName"` +} + +// FindBySkuIds @Title 根据商品Ids获取商品信息 +func (g *commodity) FindBySkuIds(ctx context.Context, skuIds []uint) (reply []ReplyByIdItem, err error) { + xClient, err := client.GetClient(g) + if err != nil { + return nil, err + } + err = xClient.Call(ctx, "FindBySkuIds", skuIds, &reply) + return +} diff --git a/otosaas/otosaas.go b/otosaas/otosaas.go index 450e841..92ab618 100644 --- a/otosaas/otosaas.go +++ b/otosaas/otosaas.go @@ -1,5 +1,6 @@ package otosaas type OtoSaas struct { - Category category + Category category + Commodity commodity } diff --git a/otosaas/sku.go b/otosaas/sku.go deleted file mode 100644 index 5502217..0000000 --- a/otosaas/sku.go +++ /dev/null @@ -1,253 +0,0 @@ -package otosaas - -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 // 开始处理 - - OtoSaasSkuStatusUp = 1 // 商品上架 - OtoSaasSkuStatusDown = 2 // 商品下架 -) - -type sku struct { -} -type GoodsSearch struct { - Status uint // 状态 - Handle uint // 处理状态 - Name string // 商品名称 - SkuCode string // 商品编码 - CategoryId uint64 // 类目id - MinSupplyPrice decimal.Decimal // 采购价最小 - MaxSupplyPrice decimal.Decimal // 采购价最大 -} -type ArgsGoodsList struct { - Search GoodsSearch - Page bean.Page -} - -type GoodsItem struct { - Id uint `json:"id"` - Name string `json:"name"` - FirstCategoryId uint `json:"firstCategoryId"` - FirstCategoryName string `json:"firstCategoryName"` - SecondCategoryId uint `json:"secondCategoryId"` - SecondCategoryName string `json:"secondCategoryName"` - ThirdCategoryId uint `json:"thirdCategoryId"` - ThirdCategoryName string `json:"thirdCategoryName"` - SupplyPrices []decimal.Decimal `json:"supplyPrices"` - GuidePrices []decimal.Decimal `json:"guidePrices"` - Skus []SkuItem `json:"skus"` - CreatedAt int64 `json:"createdAt"` -} -type SkuItem struct { - Id uint `json:"id"` - SkuCode string `json:"skuCode"` - SupplyPrice decimal.Decimal `json:"supplyPrice"` - GuidePrice decimal.Decimal `json:"guidePrice"` - SpecName string `json:"specName"` - SpecValue string `json:"specValue"` -} -type ReplyGoodsList struct { - Lists []GoodsItem `json:"lists"` - Total int64 `json:"total"` -} - -// Lists @Title 获取商品列表 -func (s *sku) Lists(ctx context.Context, args ArgsGoodsList) (reply ReplyGoodsList, 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) -}