...
|
...
|
@@ -10,12 +10,12 @@ const ( |
|
|
|
|
|
// 订单状态
|
|
|
const (
|
|
|
ORDER_STATUS_SHIPPED = iota + 1 // 已发货
|
|
|
ORDER_STATUS_TRANSIT // 待收货
|
|
|
ORDER_STATUS_RECEIVED // 已收货
|
|
|
ORDER_STATUS_RETURNED // 已退货
|
|
|
ORDER_STATUS_CANCELED // 已取消
|
|
|
ORDER_STATUS_CLOSED // 已关闭
|
|
|
ORDER_STATUS_UNSHIPPED = iota + 1 // 待发货
|
|
|
ORDER_STATUS_TRANSIT // 待收货
|
|
|
ORDER_STATUS_RECEIVED // 已收货
|
|
|
ORDER_STATUS_RETURN // 退换货
|
|
|
ORDER_STATUS_CANCELED // 已取消(关闭)
|
|
|
ORDER_STATUS_COMPLETED // 已完成
|
|
|
)
|
|
|
|
|
|
// 订单实体
|
...
|
...
|
@@ -60,23 +60,21 @@ type Order struct { |
|
|
UpdateAt time.Time `json:"updateAt"`
|
|
|
// 软删
|
|
|
DeleteAt time.Time `json:"deleteAt"`
|
|
|
// 当前状态
|
|
|
CurrentStatus OrderStatus `json:"-"`
|
|
|
}
|
|
|
|
|
|
type OrderRepository interface {
|
|
|
Save(order *Order) (*Order, error)
|
|
|
Remove(order *Order) (*Order, error)
|
|
|
FindOne(queryOptions map[string]interface{}) (*Order, error)
|
|
|
Find(queryOptions map[string]interface{}) (int64, []*Order, error)
|
|
|
type OrderStatus interface {
|
|
|
Update(order *Order, data map[string]interface{}) error // 更新订单
|
|
|
Checkout(order *Order) error // 下单
|
|
|
Return(order *Order) error // 退换货
|
|
|
Cancel(order *Order) error // 取消订单
|
|
|
Receive(order *Order) error // 收货
|
|
|
}
|
|
|
|
|
|
func (order *Order) Identify() interface{} {
|
|
|
if order.OrderId == 0 {
|
|
|
return nil
|
|
|
}
|
|
|
return order.OrderId
|
|
|
}
|
|
|
type UnShippedStatus struct{}
|
|
|
|
|
|
func (order *Order) Update(data map[string]interface{}) error {
|
|
|
func (status *UnShippedStatus) Update(order *Order, data map[string]interface{}) error {
|
|
|
if orderId, ok := data["orderId"]; ok {
|
|
|
order.OrderId = orderId.(int64)
|
|
|
}
|
...
|
...
|
@@ -190,3 +188,53 @@ func (order *Order) Update(data map[string]interface{}) error { |
|
|
}
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
func (status *UnShippedStatus) Checkout(order *Order) error {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
func (status *UnShippedStatus) Return(order *Order) error {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
func (status *UnShippedStatus) Cancel(order *Order) error {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
func (status *UnShippedStatus) Receive(order *Order) error {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
type OrderRepository interface {
|
|
|
Save(order *Order) (*Order, error)
|
|
|
Remove(order *Order) (*Order, error)
|
|
|
FindOne(queryOptions map[string]interface{}) (*Order, error)
|
|
|
Find(queryOptions map[string]interface{}) (int64, []*Order, error)
|
|
|
}
|
|
|
|
|
|
func (order *Order) Identify() interface{} {
|
|
|
if order.OrderId == 0 {
|
|
|
return nil
|
|
|
}
|
|
|
return order.OrderId
|
|
|
}
|
|
|
|
|
|
func (order *Order) Update(data map[string]interface{}) error {
|
|
|
return order.CurrentStatus.Update(order, data)
|
|
|
}
|
|
|
|
|
|
func (order *Order) Checkout() error {
|
|
|
return order.CurrentStatus.Checkout(order)
|
|
|
}
|
|
|
|
|
|
func (order *Order) Return() error {
|
|
|
return order.CurrentStatus.Return(order)
|
|
|
}
|
|
|
|
|
|
func (order *Order) Receive() error {
|
|
|
return order.CurrentStatus.Receive(order)
|
|
|
}
|
|
|
|
|
|
func (order *Order) Cancel() error {
|
|
|
return order.CurrentStatus.Cancel(order)
|
|
|
} |
...
|
...
|
|