You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
service/wholesale/order.go

221 lines
5.0 KiB

package wholesale
import (
"context"
"git.oa00.com/supply-chain/service/client"
"git.oa00.com/supply-chain/service/lib/bean"
"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
}
type ArgsOrderFreightFee struct {
Source source
OrderFreightFees []OrderFreightFee
FreightFile string // 附件
}
type OrderFreightFee struct {
SourceOrderSn string // 供应商订单号
FreightFee decimal.Decimal // 运费
}
// FreightFee @Title 运费处理
func (o *order) FreightFee(ctx context.Context, args ArgsOrderFreightFee) (err error) {
xClient, err := client.GetClient(o)
if err != nil {
return
}
reply := 0
return xClient.Call(ctx, "FreightFee", args, &reply)
}
type ArgsOrderCancel struct {
Source source // 商品来源
SourceOrderSn string // 供应商订单号
Status uint // 订单取消
CancelFile string // 取消订单附件
}
// Cancel @Title 订单取消
func (o *order) Cancel(ctx context.Context, args ArgsOrderCancel) (err error) {
xClient, err := client.GetClient(o)
if err != nil {
return
}
reply := 0
err = xClient.Call(ctx, "Cancel", args, &reply)
return
}
type ArgsOrderStockOut struct {
Source source // 商品来源
SourceOrderSn string // 供应商订单号
Packages []Package // 包裹运单
}
type Package struct {
Type uint // 物流类型
LogisticsCode string // 物流编码
LogisticsName string // 物流名称
LogisticsPhone string // 物流联系方式
WaybillCode string // 运单号
}
// StockOut @Title 出库发货
func (o *order) StockOut(ctx context.Context, args ArgsOrderStockOut) (err error) {
xClient, err := client.GetClient(o)
if err != nil {
return
}
reply := 0
err = xClient.Call(ctx, "StockOut", args, &reply)
return
}
type ArgsOrderFinish struct {
Source source // 商品来源
SourceOrderSn string // 供应商订单号
}
// Finish @Title 订单完成
func (o *order) Finish(ctx context.Context, args ArgsOrderFinish) (err error) {
xClient, err := client.GetClient(o)
if err != nil {
return
}
reply := 0
err = xClient.Call(ctx, "Finish", args, &reply)
return
}
type ArgsOrderLists struct {
Search OrderSearch
Page bean.Page
}
type OrderSearch struct {
OrderSubSn string
Status []uint
CancelStatus uint
CreatedStartDate string
CreatedEndDate string
PayStartDate string
PayEndDate string
}
type ReplyOrderLists struct {
Lists []OrderItem
Total int64
}
type OrderItem struct {
Id uint
OrderSubSn string
SourceOrderSn string
Status uint
CancelStatus uint
OrderFee decimal.Decimal
FreightFee decimal.Decimal
CreatedAt int64
PayAt int64
CloseAt int64
FinishAt int64
}
// Lists @Title 订单列表
func (o *order) Lists(ctx context.Context, args ArgsOrderLists) (reply ReplyOrderLists, err error) {
xClient, err := client.GetClient(o)
if err != nil {
return ReplyOrderLists{}, err
}
err = xClient.Call(ctx, "Lists", args, &reply)
return
}
type ReplyOrderInfo struct {
Id uint
Status uint
CancelStatus uint
OrderSunSu string
SourceOrderSn string
CreatedAt int64
PayAt int64
CloseAt int64
FinishAt int64
OrderFee decimal.Decimal
FreightFee decimal.Decimal
Skus []OrderSkuItem
HopeStockOutAt int64
ChannelId uint
ReceiverName string
ReceiverMobile string
Address string
PackagesType uint
Packages []Packages
}
type OrderSkuItem struct {
Img string
Name string
SkuId uint
SourceSkuId string
Price decimal.Decimal
SupplyPrice decimal.Decimal
AdjustType uint
AdjustPrice decimal.Decimal
Rate decimal.Decimal
Quantity uint
PackageRate uint
}
type Packages struct {
Id uint
WaybillCode string
LogisticsName string
LogisticsCode string
LogisticsPhone string
}
// Info @Title 订单列表
func (o *order) Info(ctx context.Context, orderSubSn uint64) (reply ReplyOrderInfo, err error) {
xClient, err := client.GetClient(o)
if err != nil {
return ReplyOrderInfo{}, err
}
err = xClient.Call(ctx, "Info", orderSubSn, &reply)
return
}