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.

119 lines
3.0 KiB

package supply
import (
"fmt"
"github.com/shopspring/decimal"
)
const (
// QueueSkuPriceChange 商品价格变动
queueSkuPriceChange = "supplySkuPriceChange:%s"
// QueueSkuChange 商品信息变动
queueSkuChange = "supplySkuChange:%s"
// queueOrderSplit 订单拆单
queueOrderSplit = "supplyOrderSplit:%s"
// queueOrderChange 订单变更
queueOrderCancel = "supplyOrderCancel:%s"
// queueOrderStockOut 订单出库
queueOrderStockOut = "supplyOrderStockOut:%s"
// queueOrderFinish 订单出库
queueOrderFinish = "supplyOrderFinish:%s"
// 订阅地址
mqSubscribe = "/mq/subscribe" // 订阅mq
OrderCancelSuccess = 1 // 取消成功
OrderCancelFail = 2 // 取消失败
OrderCancelReject = 3 // 拒收/商家主动取消
)
type mq struct {
}
// Subscribe @Title 订阅mq
func (m *mq) Subscribe(name string) (err error) {
var reply interface{}
err = exec(mqSubscribe, map[string]string{
"name": name,
}, &reply)
return
}
type skuMessage struct {
SkuId uint `json:"skuId"`
}
// SkuPriceChangeQueue @Title 商品价格变动
func (m *mq) SkuPriceChangeQueue() string {
return getQuesuName(queueSkuPriceChange)
}
// SkuChangeQueue @Title 商品变动
func (m *mq) SkuChangeQueue() string {
return getQuesuName(queueSkuChange)
}
type OrderSplit struct {
OrderSn string `json:"orderSn"`
RootOrderSn string `json:"rootOrderSn"`
ParentOrderSn string `json:"parentOrderSn"`
FreightFee decimal.Decimal `json:"freightFee"`
OrderFee decimal.Decimal `json:"orderFee"`
Skus []OrderSplitSkuItem `json:"skus"`
}
type OrderSplitSkuItem struct {
SkuId uint `json:"skuId"`
Quantity uint `json:"quantity"`
}
// OrderSplit @Title 订单拆单
func (m *mq) OrderSplit() string {
return getQuesuName(queueOrderSplit)
}
type OrderCancel struct {
OrderSn string `json:"orderSn"`
ParentOrderSn string `json:"parentOrderSn"`
RootOrderSn string `json:"rootOrderSn"`
Status uint `json:"status"`
}
// OrderCancel @Title 订单取消
func (m *mq) OrderCancel() string {
return getQuesuName(queueOrderCancel)
}
type OrderStockOut struct {
OrderSn string `json:"orderSn"`
ParentOrderSn string `json:"parentOrderSn"`
RootOrderSn string `json:"rootOrderSn"`
Packages []Package `json:"packages"`
}
type Package struct {
LogisticsCode string `json:"logisticsCode"` // 物流编码
LogisticsName string `json:"logisticsName"` // 物流名称
WaybillCode string `json:"waybillCode"` // 运单号
}
// OrderStockOut @Title 订单出库
func (m *mq) OrderStockOut() string {
return getQuesuName(queueOrderStockOut)
}
type OrderFinish struct {
OrderSn string `json:"orderSn"`
ParentOrderSn string `json:"parentOrderSn"`
RootOrderSn string `json:"rootOrderSn"`
}
// OrderFinish @Title 订单完成
func (m *mq) OrderFinish() string {
return getQuesuName(queueOrderFinish)
}
// @Title 获取队列名称
func getQuesuName(queue string) string {
return fmt.Sprintf(queue, Api.Config.AppKey)
}