parent
d5ea51ce71
commit
2523a27ba3
@ -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
|
||||||
|
}
|
@ -1,5 +1,6 @@
|
|||||||
package otosaas
|
package otosaas
|
||||||
|
|
||||||
type OtoSaas struct {
|
type OtoSaas struct {
|
||||||
Category category
|
Category category
|
||||||
|
Commodity commodity
|
||||||
}
|
}
|
||||||
|
@ -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)
|
|
||||||
}
|
|
Loading…
Reference in new issue