|
|
|
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=废弃
|
|
|
|
CommodityCode string // 商品编码
|
|
|
|
MinSupplyPrice decimal.Decimal // 最小采购价
|
|
|
|
MaxSupplyPrice decimal.Decimal // 最大采购价
|
|
|
|
}
|
|
|
|
type ArgsCommodityList struct {
|
|
|
|
Search CommoditySearch
|
|
|
|
Page bean.Page
|
|
|
|
}
|
|
|
|
|
|
|
|
type CommodityItem struct {
|
|
|
|
Id uint `json:"id"`
|
|
|
|
Name string `json:"name"`
|
|
|
|
CommodityCode string `json:"commodityCode"`
|
|
|
|
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 ReplyCommodityLists struct {
|
|
|
|
List []CommodityItem `json:"list"`
|
|
|
|
Total int64 `json:"total"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// Lists @Title 获取商品列表
|
|
|
|
func (g *commodity) Lists(ctx context.Context, args ArgsCommodityList) (reply ReplyCommodityLists, err error) {
|
|
|
|
xClient, err := client.GetClient(g)
|
|
|
|
if err != nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
err = xClient.Call(ctx, "Lists", args, &reply)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
type ReplyCommodityInfo struct {
|
|
|
|
Id uint `json:"id"`
|
|
|
|
CommodityCode string `json:"commodityCode"`
|
|
|
|
Name string `json:"name"`
|
|
|
|
ImgUrl string `json:"imgUrl"`
|
|
|
|
FirstCategoryId uint `json:"firstCategoryId"`
|
|
|
|
FirstCategoryName string `json:"firstCategoryName"`
|
|
|
|
SecondCategoryId uint `json:"secondCategoryId"`
|
|
|
|
SecondCategoryName string `json:"secondCategoryName"`
|
|
|
|
ThirdCategoryId uint `json:"thirdCategoryId"`
|
|
|
|
ThirdCategoryName string `json:"thirdCategoryName"`
|
|
|
|
SupplyCategoryId uint `json:"supplyCategoryId"`
|
|
|
|
Handle uint `json:"handle"`
|
|
|
|
Status uint `json:"status"`
|
|
|
|
Skus []SkuItem `json:"skus"`
|
|
|
|
Imgs []CommodityImgItem `json:"imgs"`
|
|
|
|
}
|
|
|
|
|
|
|
|
type CommodityImgItem struct {
|
|
|
|
Id uint `json:"id"`
|
|
|
|
Path string `json:"path"`
|
|
|
|
ReplacePath string `json:"replacePath"`
|
|
|
|
}
|
|
|
|
|
|
|
|
type SkuItem struct {
|
|
|
|
Id uint `json:"id"`
|
|
|
|
SkuCode string `json:"skuCode"`
|
|
|
|
SpecName string `json:"specName"`
|
|
|
|
SpecValue string `json:"specValue"`
|
|
|
|
SupplyPrice decimal.Decimal `json:"supplyPrice"`
|
|
|
|
GuidePrice decimal.Decimal `json:"guidePrice"`
|
|
|
|
ImgUrl string `json:"imgUrl"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// Info @Title 商品详情
|
|
|
|
func (g *commodity) Info(ctx context.Context, goodsId uint) (reply ReplyCommodityInfo, err error) {
|
|
|
|
xClient, err := client.GetClient(g)
|
|
|
|
if err != nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
err = xClient.Call(ctx, "Info", goodsId, &reply)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
type ReplyImgs struct {
|
|
|
|
GoodsId uint `json:"goodsId"`
|
|
|
|
Imgs []string `json:"imgs"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// GetImgs @Title 获取商品主图
|
|
|
|
func (g *commodity) GetImgs(ctx context.Context, goodsIds []uint) (reply []ReplyImgs, err error) {
|
|
|
|
xClient, err := client.GetClient(g)
|
|
|
|
if err != nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
err = xClient.Call(ctx, "GetImgs", goodsIds, &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
|
|
|
|
}
|