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) }