|
|
|
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 // 有错误
|
|
|
|
|
|
|
|
OrderStatusLock = 1 // 锁单待确认
|
|
|
|
OrderStatusLadingBill = 2 // 提单
|
|
|
|
OrderStatusClose = 3 // 关闭
|
|
|
|
|
|
|
|
OrderSubStatusLock = 1 // 锁单
|
|
|
|
OrderSubStatusLadingBill = 2 // 提单
|
|
|
|
OrderSubStatusSendOutGoods = 3 // 出库/发货
|
|
|
|
OrderSubStatusDelivered = 4 // 妥投
|
|
|
|
OrderSubStatusFinal = 5 // 完成
|
|
|
|
OrderSubStatusCancel = 6 // 取消
|
|
|
|
|
|
|
|
OrderSubIsSplitFalse = 1 // 无
|
|
|
|
OrderSubIsSplitTrue = 2 // 被拆单
|
|
|
|
)
|
|
|
|
|
|
|
|
type order struct {
|
|
|
|
}
|
|
|
|
type ArgsOrderFreightFee struct {
|
|
|
|
Address string // 地址
|
|
|
|
Skus []SkuFreightFeeItem // sku信息
|
|
|
|
}
|
|
|
|
|
|
|
|
type SkuFreightFeeItem struct {
|
|
|
|
SkuId uint // skuId
|
|
|
|
Quantity uint // 数量
|
|
|
|
}
|
|
|
|
|
|
|
|
type ReplyOrderFreightFee struct {
|
|
|
|
SkuIds []uint `json:"skuIds"`
|
|
|
|
FreightFee decimal.Decimal `json:"freightFee"`
|
|
|
|
ErrCode uint `json:"errCode"`
|
|
|
|
ErrMsg string `json:"errMsg"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// FreightFee @Title 获取运费
|
|
|
|
func (o *order) FreightFee(ctx context.Context, channelId string, args ArgsOrderFreightFee) (reply []ReplyOrderFreightFee, err error) {
|
|
|
|
xClient, err := client.GetClient(o)
|
|
|
|
if err != nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
err = xClient.Call(context.WithValue(ctx, share.ReqMetaDataKey, map[string]string{"channelId": channelId}), "FreightFee", args, &reply)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
type SkuOrderItem struct {
|
|
|
|
SkuId uint // skuId
|
|
|
|
Price decimal.Decimal // 单价
|
|
|
|
Quantity uint // 数量
|
|
|
|
}
|
|
|
|
type ArgsOrderSubmit struct {
|
|
|
|
ChannelOrderSn string // 渠道订单编号
|
|
|
|
Address string // 地址
|
|
|
|
Skus []SkuOrderItem // sku信息
|
|
|
|
Receiver Receiver // 收件信息
|
|
|
|
OrderFee decimal.Decimal // 订单金额-不含运费
|
|
|
|
FreightFees []OrderFreightFee // 运费
|
|
|
|
UserIp string // 下单用户ip
|
|
|
|
}
|
|
|
|
|
|
|
|
type OrderFreightFee struct {
|
|
|
|
SkuIds []uint `json:"skuIds"`
|
|
|
|
FreightFee decimal.Decimal `json:"freightFee"`
|
|
|
|
}
|
|
|
|
|
|
|
|
type Receiver struct {
|
|
|
|
Name string // 姓名
|
|
|
|
Mobile string // 手机号
|
|
|
|
Email string // 邮箱
|
|
|
|
ZipCode string // 邮编
|
|
|
|
}
|
|
|
|
|
|
|
|
type ReplyOrderSubmit struct {
|
|
|
|
OrderSn string
|
|
|
|
ChannelOrderSn string
|
|
|
|
}
|
|
|
|
|
|
|
|
// 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
|
|
|
|
}
|
|
|
|
|
|
|
|
// LadingBill @Title 提单
|
|
|
|
func (o *order) LadingBill(ctx context.Context, channelId string, orderSn string) (err error) {
|
|
|
|
reply := 0
|
|
|
|
xClient, err := client.GetClient(o)
|
|
|
|
if err != nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
return xClient.Call(context.WithValue(ctx, share.ReqMetaDataKey, map[string]string{"channelId": channelId}), "LadingBill", orderSn, &reply)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Close @Title 关闭
|
|
|
|
func (o *order) Close(ctx context.Context, channelId string, orderSn string) (err error) {
|
|
|
|
reply := 0
|
|
|
|
xClient, err := client.GetClient(o)
|
|
|
|
if err != nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
return xClient.Call(context.WithValue(ctx, share.ReqMetaDataKey, map[string]string{"channelId": channelId}), "Close", orderSn, &reply)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Cancel @Title 订单取消
|
|
|
|
func (o *order) Cancel(ctx context.Context, channelId string, orderSn string) (err error) {
|
|
|
|
reply := 0
|
|
|
|
xClient, err := client.GetClient(o)
|
|
|
|
if err != nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
return xClient.Call(context.WithValue(ctx, share.ReqMetaDataKey, map[string]string{"channelId": channelId}), "Cancel", orderSn, &reply)
|
|
|
|
}
|