批发接口

finance
杨赟 2 years ago
commit eac053e61f

@ -0,0 +1,62 @@
package otosaas
import (
"context"
"git.oa00.com/supply-chain/service/client"
"git.oa00.com/supply-chain/service/lib/bean"
)
type category struct {
}
type ArgsCategoryList struct {
ThirdCategoryId uint
Page bean.Page
}
type CategoryItem struct {
Id uint `json:"id"`
FirstCategoryName string `json:"firstCategoryName"`
SecondCategoryName string `json:"secondCategoryName"`
ThirdCategoryName string `json:"thirdCategoryName"`
SupplyCategoryId uint `json:"supplyCategoryId"`
}
type ReplyCategoryList struct {
Lists []CategoryItem `json:"lists"`
Total int64 `json:"total"`
}
// Lists @Title 获取品牌匹配列表
func (c *category) Lists(ctx context.Context, args ArgsCategoryList) (reply ReplyCategoryList, err error) {
xClient, err := client.GetClient(c)
if err != nil {
return
}
err = xClient.Call(ctx, "Lists", args, &reply)
return
}
type ArgsCategoryEdit struct {
CategoryId uint // 分类id
SupplyCategoryId uint // 匹配分类id
}
// Edit @Title 编辑品牌匹配
func (c *category) Edit(ctx context.Context, args ArgsCategoryEdit) error {
reply := 0
xClient, err := client.GetClient(c)
if err != nil {
return err
}
return xClient.Call(ctx, "Edit", args, &reply)
}
// Select @Title 类目筛选
func (c *category) Select(ctx context.Context) (reply []CategoryItem, err error) {
args := 0
xClient, err := client.GetClient(c)
if err != nil {
return
}
err = xClient.Call(ctx, "Select", args, &reply)
return
}

@ -0,0 +1,185 @@
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
}

@ -0,0 +1,6 @@
package otosaas
type OtoSaas struct {
Category category
Commodity commodity
}

@ -3,6 +3,7 @@ package service
import (
"git.oa00.com/supply-chain/service/customer"
"git.oa00.com/supply-chain/service/jd"
"git.oa00.com/supply-chain/service/otosaas"
"git.oa00.com/supply-chain/service/supplier"
"git.oa00.com/supply-chain/service/supply"
"git.oa00.com/supply-chain/service/wholesale"
@ -16,4 +17,5 @@ type rpc struct {
Customer customer.Customer
Supplier supplier.Supplier
Wholesale wholesale.Wholesale
OtoSaas otosaas.OtoSaas
}

@ -2,5 +2,6 @@ package channel
type Channel struct {
Sku sku
Order order
Mq mq
}

@ -0,0 +1,75 @@
package channel
import (
"context"
"git.oa00.com/supply-chain/service/client"
"github.com/shopspring/decimal"
"github.com/smallnest/rpcx/share"
)
const (
ReplyOrderFreightFeeErrCodeNone = 0 // 无错误
ReplyOrderFreightFeeErrCodeErr = 1 // 有错误
ReplyOrderFreightFeeErrCodeDone = 2 // 已下架
OrderStatusSubmit = 1 // 下单
OrderStatusFreightFee = 2 // 已确认运费
OrderStatusPay = 3 // 已支付
OrderStatusClose = 4 // 关闭
OrderSubStatusSubmit = 1 // 下单
OrderSubStatusFreightFee = 2 // 确认运费
OrderSubStatusPay = 3 // 已支付
OrderSubStatusCheckout = 4 // 出库
OrderSubStatusFinish = 5 // 完成
OrderCancelSubStatusFalse = 1 // 未取消
OrderCancelSubStatusTrue = 2 // 已取消
OrderSubIsSplitFalse = 1 // 无
OrderSubIsSplitTrue = 2 // 被拆单
OrderSubTypeApi = 1 // api接口下单
OrderSubTypeCustomerWeb = 2 // 客户商城下单
)
type order struct {
}
type SkuOrderItem struct {
SkuId uint // skuId
Price decimal.Decimal // 单价
Quantity uint // 数量 (箱)
PackingRate uint // 装箱率
}
type ArgsOrderSubmit struct {
ChannelOrderSn string // 渠道订单编号
Address string // 地址
Skus []SkuOrderItem // sku信息
Receiver Receiver // 收件信息
OrderFee decimal.Decimal // 订单金额-不含运费
UserIp string // 下单用户ip
Type uint // 下单方式
}
type Receiver struct {
Name string // 姓名
Mobile string // 手机号
Email string // 邮箱
ZipCode string // 邮编
}
type ReplyOrderSubmit struct {
OrderSn string `json:"orderSn"`
ChannelOrderSn string `json:"channelOrderSn"`
}
// Submit @Title 下单
func (o *order) Submit(ctx context.Context, channelId string, args ArgsOrderSubmit) (reply ReplyOrderSubmit, err error) {
xClient, err := client.GetClient(o)
if err != nil {
return
}
err = xClient.Call(context.WithValue(ctx, share.ReqMetaDataKey, map[string]string{"channelId": channelId}), "Submit", args, &reply)
return
}

@ -44,7 +44,6 @@ type ArgsOrderSubmit struct {
OrderSn uint64 // 订单号
Skus []OrderFreightFeeSkuItem // 商品信息
Address string // 地址
FreightFee decimal.Decimal // 运费
Receiver OrderReceiver // 收件信息
UserIp string // 用户ip
}

@ -0,0 +1,42 @@
package wholesale
import (
"context"
"git.oa00.com/supply-chain/service/client"
"github.com/shopspring/decimal"
)
const (
OrderCancelStatusSuccess = 1 // 取消成功
OrderCancelStatusFail = 2 // 取消失败
)
type order struct {
}
type ArgsOrderSplit struct {
Source source // 商品来源
ParentSourceOrderSn string // 上级订单号
OrderSubs []OrderSub // 子订单
}
type OrderSub struct {
SourceOrderSn string // 供应商订单号
FreightFee decimal.Decimal // 运费
OrderFee decimal.Decimal // 订单金额
Skus []OrderSplitSkuItem // 拆分订单sku
}
type OrderSplitSkuItem struct {
SourceSkuId string
Quantity uint
SupplyPrice decimal.Decimal
}
// Split @Title 拆单
func (o *order) Split(ctx context.Context, args ArgsOrderSplit) (err error) {
xClient, err := client.GetClient(o)
if err != nil {
return
}
reply := 0
err = xClient.Call(ctx, "Split", args, &reply)
return
}
Loading…
Cancel
Save