...
|
...
|
@@ -73,7 +73,7 @@ type Order struct { |
|
|
// 订单状态机
|
|
|
type OrderStatus interface {
|
|
|
Update(order *Order, data map[string]interface{}) error // 更新订单
|
|
|
Checkout(order *Order) error // 下单
|
|
|
Shipping(order *Order) error // 发货
|
|
|
Return(order *Order) error // 退换/货
|
|
|
Cancel(order *Order) error // 取消订单
|
|
|
Receive(order *Order) error // 收货
|
...
|
...
|
@@ -200,7 +200,7 @@ func (status *UnShippedStatus) Update(order *Order, data map[string]interface{}) |
|
|
}
|
|
|
|
|
|
// 发货
|
|
|
func (status *UnShippedStatus) Checkout(order *Order) error {
|
|
|
func (status *UnShippedStatus) Shipping(order *Order) error {
|
|
|
currentTime := time.Now()
|
|
|
order.DeliveryTime = currentTime
|
|
|
if order.OrderType == ORDER_TYPE_INTENTION {
|
...
|
...
|
@@ -229,8 +229,14 @@ func (status *UnShippedStatus) Receive(order *Order) error { |
|
|
// 待收货状态
|
|
|
type TransitStatus struct{}
|
|
|
|
|
|
// 待收货订单不能再次发货
|
|
|
func (status *TransitStatus) Shipping(order *Order) error {
|
|
|
return fmt.Errorf("待收货订单不能重复发货")
|
|
|
}
|
|
|
|
|
|
// 待收货订单不能关闭
|
|
|
func (status *TransitStatus) Close(order *Order) error {
|
|
|
panic("implement me")
|
|
|
return fmt.Errorf("待收货订单不能关闭")
|
|
|
}
|
|
|
|
|
|
// 待收货订单不允许编辑
|
...
|
...
|
@@ -238,11 +244,6 @@ func (status *TransitStatus) Update(order *Order, data map[string]interface{}) e |
|
|
return fmt.Errorf("已发货订单不允许编辑")
|
|
|
}
|
|
|
|
|
|
// 待收货订单不能重复发货
|
|
|
func (status *TransitStatus) Checkout(order *Order) error {
|
|
|
return fmt.Errorf("待收货订单不能重复发货")
|
|
|
}
|
|
|
|
|
|
// 退货
|
|
|
func (status *TransitStatus) Return(order *Order) error {
|
|
|
order.CurrentStatus = &ReturnedStatus{}
|
...
|
...
|
@@ -268,9 +269,9 @@ func (status *ReceivedStatus) Update(order *Order, data map[string]interface{}) |
|
|
return fmt.Errorf("已收货订单不能编辑")
|
|
|
}
|
|
|
|
|
|
// 发货
|
|
|
func (status *ReceivedStatus) Checkout(order *Order) error {
|
|
|
return fmt.Errorf("已收货订单不能重复发货")
|
|
|
// 已收货订单不能再次收货
|
|
|
func (status *ReceivedStatus) Shipping(order *Order) error {
|
|
|
return fmt.Errorf("已收货订单不能再次发货")
|
|
|
}
|
|
|
|
|
|
// 退货
|
...
|
...
|
@@ -279,18 +280,19 @@ func (status *ReceivedStatus) Return(order *Order) error { |
|
|
return nil
|
|
|
}
|
|
|
|
|
|
// 取消订单
|
|
|
// 已取消订单不能再次取消
|
|
|
func (status *ReceivedStatus) Cancel(order *Order) error {
|
|
|
return fmt.Errorf("已收货订单不能取消")
|
|
|
}
|
|
|
|
|
|
// 收货
|
|
|
// 已收货订单不能重复收货
|
|
|
func (status *ReceivedStatus) Receive(order *Order) error {
|
|
|
return fmt.Errorf("已收货订单不能重复收货")
|
|
|
}
|
|
|
|
|
|
// 关闭订单
|
|
|
func (status *ReceivedStatus) Close(order *Order) error {
|
|
|
panic("implement me")
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
// 退货状态
|
...
|
...
|
@@ -301,9 +303,9 @@ func (status *ReturnedStatus) Update(order *Order, data map[string]interface{}) |
|
|
return fmt.Errorf("已退货订单不允许编辑")
|
|
|
}
|
|
|
|
|
|
// 已退货订单不能再次发货
|
|
|
func (status *ReturnedStatus) Checkout(order *Order) error {
|
|
|
return fmt.Errorf("已退货订单不允许发货")
|
|
|
// 已收货订单不能再次收货
|
|
|
func (status *ReturnedStatus) Shipping(order *Order) error {
|
|
|
return fmt.Errorf("已收货订单不能再次发货")
|
|
|
}
|
|
|
|
|
|
// 已退货订单不能再次发货
|
...
|
...
|
@@ -321,64 +323,82 @@ func (status *ReturnedStatus) Receive(order *Order) error { |
|
|
return fmt.Errorf("已退货订单不能收货")
|
|
|
}
|
|
|
|
|
|
// 关闭订单
|
|
|
func (status *ReturnedStatus) Close(order *Order) error {
|
|
|
panic("implement me")
|
|
|
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
// 取消状态
|
|
|
type CanceledStatus struct{}
|
|
|
|
|
|
// 已取消订单不能编辑
|
|
|
func (status *CanceledStatus) Update(order *Order, dat map[string]interface{}) error {
|
|
|
return fmt.Errorf("已取消订单不能编辑")
|
|
|
}
|
|
|
|
|
|
func (status *CanceledStatus) Checkout(order *Order) error {
|
|
|
return fmt.Errorf("已取消订单不能发货")
|
|
|
// 已取消订单不能发货
|
|
|
func (status *CanceledStatus) Shipping(order *Order) error {
|
|
|
return fmt.Errorf("已取消订单不能再次发货")
|
|
|
}
|
|
|
|
|
|
// 已取消的订单不能退货
|
|
|
func (status *CanceledStatus) Return(order *Order) error {
|
|
|
return fmt.Errorf("已取消订单不能退货")
|
|
|
}
|
|
|
|
|
|
// 已取消定案不能再次取消
|
|
|
func (status *CanceledStatus) Cancel(order *Order) error {
|
|
|
return fmt.Errorf("已取消订单不能再次取消")
|
|
|
}
|
|
|
|
|
|
// 已取消订单不能收货
|
|
|
func (status *CanceledStatus) Receive(order *Order) error {
|
|
|
return fmt.Errorf("已取消订单不能进行收货")
|
|
|
}
|
|
|
|
|
|
// 关闭订单
|
|
|
func (status *CanceledStatus) Close(order *Order) error {
|
|
|
panic("implement me")
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
// 已完成状态
|
|
|
type CompletedStatus struct{}
|
|
|
|
|
|
// 编辑已完成订单分红
|
|
|
func (status *CompletedStatus) Update(order *Order, data map[string]interface{}) error {
|
|
|
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
func (status *CompletedStatus) Checkout(order *Order) error {
|
|
|
// 已完成的订单不能再次发货
|
|
|
func (status *CompletedStatus) Shipping(order *Order) error {
|
|
|
return fmt.Errorf("已完成订单不能发货")
|
|
|
}
|
|
|
|
|
|
// 已完成订单不能退货
|
|
|
func (status *CompletedStatus) Return(order *Order) error {
|
|
|
return fmt.Errorf("已完成订单不能退货")
|
|
|
}
|
|
|
|
|
|
// 已完成订单不能取消
|
|
|
func (status *CompletedStatus) Cancel(order *Order) error {
|
|
|
return fmt.Errorf("已完成订单不能取消")
|
|
|
}
|
|
|
|
|
|
// 已完成订单不能收货
|
|
|
func (status *CompletedStatus) Receive(order *Order) error {
|
|
|
return fmt.Errorf("已完成订单不能收货")
|
|
|
}
|
|
|
|
|
|
// 关闭已完成订单
|
|
|
func (status *CompletedStatus) Close(order *Order) error {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
// 订单仓储
|
|
|
type OrderRepository interface {
|
|
|
Save(order *Order) (*Order, error)
|
|
|
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)
|
...
|
...
|
@@ -397,8 +417,8 @@ func (order *Order) Update(data map[string]interface{}) error { |
|
|
}
|
|
|
|
|
|
// 发货
|
|
|
func (order *Order) Checkout() error {
|
|
|
return order.CurrentStatus.Checkout(order)
|
|
|
func (order *Order) Shipping() error {
|
|
|
return order.CurrentStatus.Shipping(order)
|
|
|
}
|
|
|
|
|
|
// 退货
|
...
|
...
|
@@ -415,3 +435,8 @@ func (order *Order) Receive() error { |
|
|
func (order *Order) Cancel() error {
|
|
|
return order.CurrentStatus.Cancel(order)
|
|
|
}
|
|
|
|
|
|
// 关闭订单
|
|
|
func (order *Order) Close() error {
|
|
|
return order.CurrentStatus.Close(order)
|
|
|
} |
...
|
...
|
|