作者 陈志颖

feat:更新订单状态机

  1 +version: v1
  2 +kind: Attribute
  3 +metadata:
  4 + name: deliveryTime
  5 + description: 发货时间
  6 + type:
  7 + primitive: datetime
@@ -14,6 +14,8 @@ metadata: @@ -14,6 +14,8 @@ metadata:
14 required: true 14 required: true
15 - ref: deliveryCode 15 - ref: deliveryCode
16 required: true 16 required: true
  17 + - ref: delieveryTime
  18 + required: true
17 - ref: isDisable 19 - ref: isDisable
18 required: true 20 required: true
19 - ref: orderNo 21 - ref: orderNo
@@ -19,6 +19,7 @@ const ( @@ -19,6 +19,7 @@ const (
19 ORDER_STATUS_RETURN // 退换货 19 ORDER_STATUS_RETURN // 退换货
20 ORDER_STATUS_CANCELED // 已取消(关闭) 20 ORDER_STATUS_CANCELED // 已取消(关闭)
21 ORDER_STATUS_COMPLETED // 已完成 21 ORDER_STATUS_COMPLETED // 已完成
  22 + ORDER_STATUS_CLOSED // 已关闭
22 ) 23 )
23 24
24 // 订单实体 25 // 订单实体
@@ -33,6 +34,8 @@ type Order struct { @@ -33,6 +34,8 @@ type Order struct {
33 PartnerId int64 `json:"partnerId"` 34 PartnerId int64 `json:"partnerId"`
34 // 发货单号 35 // 发货单号
35 DeliveryCode string `json:"deliveryCode"` 36 DeliveryCode string `json:"deliveryCode"`
  37 + // 发货时间
  38 + DeliveryTime time.Time `json:"deliveryTime"`
36 // 是否关闭订单标志 39 // 是否关闭订单标志
37 IsDisable int `json:"isDisable"` 40 IsDisable int `json:"isDisable"`
38 // 订单编号 41 // 订单编号
@@ -71,12 +74,13 @@ type Order struct { @@ -71,12 +74,13 @@ type Order struct {
71 type OrderStatus interface { 74 type OrderStatus interface {
72 Update(order *Order, data map[string]interface{}) error // 更新订单 75 Update(order *Order, data map[string]interface{}) error // 更新订单
73 Checkout(order *Order) error // 下单 76 Checkout(order *Order) error // 下单
74 - Return(order *Order) error // 退换货 77 + Return(order *Order) error // 退换/
75 Cancel(order *Order) error // 取消订单 78 Cancel(order *Order) error // 取消订单
76 Receive(order *Order) error // 收货 79 Receive(order *Order) error // 收货
  80 + Close(order *Order) error // 关闭订单
77 } 81 }
78 82
79 -// 发货状态 83 +// 发货状态
80 type UnShippedStatus struct{} 84 type UnShippedStatus struct{}
81 85
82 // 编辑待发货订单 86 // 编辑待发货订单
@@ -195,18 +199,29 @@ func (status *UnShippedStatus) Update(order *Order, data map[string]interface{}) @@ -195,18 +199,29 @@ func (status *UnShippedStatus) Update(order *Order, data map[string]interface{})
195 return nil 199 return nil
196 } 200 }
197 201
  202 +// 发货
198 func (status *UnShippedStatus) Checkout(order *Order) error { 203 func (status *UnShippedStatus) Checkout(order *Order) error {
  204 + currentTime := time.Now()
  205 + order.DeliveryTime = currentTime
  206 + if order.OrderType == ORDER_TYPE_INTENTION {
  207 + order.OrderStatus = ORDER_STATUS_TRANSIT
  208 + order.CurrentStatus = &TransitStatus{}
  209 + }
199 return nil 210 return nil
200 } 211 }
201 212
  213 +// 退货
202 func (status *UnShippedStatus) Return(order *Order) error { 214 func (status *UnShippedStatus) Return(order *Order) error {
203 return fmt.Errorf("待发货订单不能退货") 215 return fmt.Errorf("待发货订单不能退货")
204 } 216 }
205 217
  218 +// 取消订单
206 func (status *UnShippedStatus) Cancel(order *Order) error { 219 func (status *UnShippedStatus) Cancel(order *Order) error {
  220 + order.CurrentStatus = &CanceledStatus{}
207 return nil 221 return nil
208 } 222 }
209 223
  224 +// 收货
210 func (status *UnShippedStatus) Receive(order *Order) error { 225 func (status *UnShippedStatus) Receive(order *Order) error {
211 return fmt.Errorf("待发货订单不能收货") 226 return fmt.Errorf("待发货订单不能收货")
212 } 227 }
@@ -214,73 +229,102 @@ func (status *UnShippedStatus) Receive(order *Order) error { @@ -214,73 +229,102 @@ func (status *UnShippedStatus) Receive(order *Order) error {
214 // 待收货状态 229 // 待收货状态
215 type TransitStatus struct{} 230 type TransitStatus struct{}
216 231
  232 +func (status *TransitStatus) Close(order *Order) error {
  233 + panic("implement me")
  234 +}
  235 +
217 // 待收货订单不允许编辑 236 // 待收货订单不允许编辑
218 func (status *TransitStatus) Update(order *Order, data map[string]interface{}) error { 237 func (status *TransitStatus) Update(order *Order, data map[string]interface{}) error {
219 return fmt.Errorf("已发货订单不允许编辑") 238 return fmt.Errorf("已发货订单不允许编辑")
220 } 239 }
221 240
  241 +// 待收货订单不能重复发货
222 func (status *TransitStatus) Checkout(order *Order) error { 242 func (status *TransitStatus) Checkout(order *Order) error {
223 return fmt.Errorf("待收货订单不能重复发货") 243 return fmt.Errorf("待收货订单不能重复发货")
224 } 244 }
225 245
  246 +// 退货
226 func (status *TransitStatus) Return(order *Order) error { 247 func (status *TransitStatus) Return(order *Order) error {
  248 + order.CurrentStatus = &ReturnedStatus{}
227 return nil 249 return nil
228 } 250 }
229 251
  252 +// 待收货订单不能取消
230 func (status *TransitStatus) Cancel(order *Order) error { 253 func (status *TransitStatus) Cancel(order *Order) error {
231 return fmt.Errorf("待收货订单不能取消") 254 return fmt.Errorf("待收货订单不能取消")
232 } 255 }
233 256
  257 +// 收货
234 func (status *TransitStatus) Receive(order *Order) error { 258 func (status *TransitStatus) Receive(order *Order) error {
  259 + order.CurrentStatus = &ReceivedStatus{}
235 return nil 260 return nil
236 } 261 }
237 262
238 // 收货状态 263 // 收货状态
239 type ReceivedStatus struct{} 264 type ReceivedStatus struct{}
240 265
  266 +// 编辑订单
241 func (status *ReceivedStatus) Update(order *Order, data map[string]interface{}) error { 267 func (status *ReceivedStatus) Update(order *Order, data map[string]interface{}) error {
242 return fmt.Errorf("已收货订单不能编辑") 268 return fmt.Errorf("已收货订单不能编辑")
243 } 269 }
244 270
  271 +// 发货
245 func (status *ReceivedStatus) Checkout(order *Order) error { 272 func (status *ReceivedStatus) Checkout(order *Order) error {
246 return fmt.Errorf("已收货订单不能重复发货") 273 return fmt.Errorf("已收货订单不能重复发货")
247 } 274 }
248 275
  276 +// 退货
249 func (status *ReceivedStatus) Return(order *Order) error { 277 func (status *ReceivedStatus) Return(order *Order) error {
  278 + order.CurrentStatus = &ReturnedStatus{}
250 return nil 279 return nil
251 } 280 }
252 281
  282 +// 取消订单
253 func (status *ReceivedStatus) Cancel(order *Order) error { 283 func (status *ReceivedStatus) Cancel(order *Order) error {
254 return fmt.Errorf("已收货订单不能取消") 284 return fmt.Errorf("已收货订单不能取消")
255 } 285 }
256 286
  287 +// 收货
257 func (status *ReceivedStatus) Receive(order *Order) error { 288 func (status *ReceivedStatus) Receive(order *Order) error {
258 return fmt.Errorf("已收货订单不能重复收货") 289 return fmt.Errorf("已收货订单不能重复收货")
259 } 290 }
260 291
  292 +func (status *ReceivedStatus) Close(order *Order) error {
  293 + panic("implement me")
  294 +}
  295 +
261 // 退货状态 296 // 退货状态
262 type ReturnedStatus struct{} 297 type ReturnedStatus struct{}
263 298
  299 +// 已退货订单不能编辑
264 func (status *ReturnedStatus) Update(order *Order, data map[string]interface{}) error { 300 func (status *ReturnedStatus) Update(order *Order, data map[string]interface{}) error {
265 return fmt.Errorf("已退货订单不允许编辑") 301 return fmt.Errorf("已退货订单不允许编辑")
266 } 302 }
267 303
  304 +// 已退货订单不能再次发货
268 func (status *ReturnedStatus) Checkout(order *Order) error { 305 func (status *ReturnedStatus) Checkout(order *Order) error {
269 return fmt.Errorf("已退货订单不允许发货") 306 return fmt.Errorf("已退货订单不允许发货")
270 } 307 }
271 308
  309 +// 已退货订单不能再次发货
272 func (status *ReturnedStatus) Return(order *Order) error { 310 func (status *ReturnedStatus) Return(order *Order) error {
273 return fmt.Errorf("已退货订单不允许再次退货") 311 return fmt.Errorf("已退货订单不允许再次退货")
274 } 312 }
275 313
  314 +// 已退货订单不能取消
276 func (status *ReturnedStatus) Cancel(order *Order) error { 315 func (status *ReturnedStatus) Cancel(order *Order) error {
277 return fmt.Errorf("已退货订单不能取消") 316 return fmt.Errorf("已退货订单不能取消")
278 } 317 }
279 318
  319 +// 已退货订单不能重复守护
280 func (status *ReturnedStatus) Receive(order *Order) error { 320 func (status *ReturnedStatus) Receive(order *Order) error {
281 return fmt.Errorf("已退货订单不能收货") 321 return fmt.Errorf("已退货订单不能收货")
282 } 322 }
283 323
  324 +func (status *ReturnedStatus) Close(order *Order) error {
  325 + panic("implement me")
  326 +}
  327 +
284 // 取消状态 328 // 取消状态
285 type CanceledStatus struct{} 329 type CanceledStatus struct{}
286 330
@@ -304,10 +348,15 @@ func (status *CanceledStatus) Receive(order *Order) error { @@ -304,10 +348,15 @@ func (status *CanceledStatus) Receive(order *Order) error {
304 return fmt.Errorf("已取消订单不能进行收货") 348 return fmt.Errorf("已取消订单不能进行收货")
305 } 349 }
306 350
  351 +func (status *CanceledStatus) Close(order *Order) error {
  352 + panic("implement me")
  353 +}
  354 +
307 // 已完成状态 355 // 已完成状态
308 type CompletedStatus struct{} 356 type CompletedStatus struct{}
309 357
310 func (status *CompletedStatus) Update(order *Order, data map[string]interface{}) error { 358 func (status *CompletedStatus) Update(order *Order, data map[string]interface{}) error {
  359 +
311 return nil 360 return nil
312 } 361 }
313 362