作者 陈志颖

feat:增加关闭订单状态

@@ -73,7 +73,7 @@ type Order struct { @@ -73,7 +73,7 @@ type Order struct {
73 // 订单状态机 73 // 订单状态机
74 type OrderStatus interface { 74 type OrderStatus interface {
75 Update(order *Order, data map[string]interface{}) error // 更新订单 75 Update(order *Order, data map[string]interface{}) error // 更新订单
76 - Checkout(order *Order) error // 下单 76 + Shipping(order *Order) error // 发货
77 Return(order *Order) error // 退换/货 77 Return(order *Order) error // 退换/货
78 Cancel(order *Order) error // 取消订单 78 Cancel(order *Order) error // 取消订单
79 Receive(order *Order) error // 收货 79 Receive(order *Order) error // 收货
@@ -200,7 +200,7 @@ func (status *UnShippedStatus) Update(order *Order, data map[string]interface{}) @@ -200,7 +200,7 @@ func (status *UnShippedStatus) Update(order *Order, data map[string]interface{})
200 } 200 }
201 201
202 // 发货 202 // 发货
203 -func (status *UnShippedStatus) Checkout(order *Order) error { 203 +func (status *UnShippedStatus) Shipping(order *Order) error {
204 currentTime := time.Now() 204 currentTime := time.Now()
205 order.DeliveryTime = currentTime 205 order.DeliveryTime = currentTime
206 if order.OrderType == ORDER_TYPE_INTENTION { 206 if order.OrderType == ORDER_TYPE_INTENTION {
@@ -229,8 +229,14 @@ func (status *UnShippedStatus) Receive(order *Order) error { @@ -229,8 +229,14 @@ func (status *UnShippedStatus) Receive(order *Order) error {
229 // 待收货状态 229 // 待收货状态
230 type TransitStatus struct{} 230 type TransitStatus struct{}
231 231
  232 +// 待收货订单不能再次发货
  233 +func (status *TransitStatus) Shipping(order *Order) error {
  234 + return fmt.Errorf("待收货订单不能重复发货")
  235 +}
  236 +
  237 +// 待收货订单不能关闭
232 func (status *TransitStatus) Close(order *Order) error { 238 func (status *TransitStatus) Close(order *Order) error {
233 - panic("implement me") 239 + return fmt.Errorf("待收货订单不能关闭")
234 } 240 }
235 241
236 // 待收货订单不允许编辑 242 // 待收货订单不允许编辑
@@ -238,11 +244,6 @@ func (status *TransitStatus) Update(order *Order, data map[string]interface{}) e @@ -238,11 +244,6 @@ func (status *TransitStatus) Update(order *Order, data map[string]interface{}) e
238 return fmt.Errorf("已发货订单不允许编辑") 244 return fmt.Errorf("已发货订单不允许编辑")
239 } 245 }
240 246
241 -// 待收货订单不能重复发货  
242 -func (status *TransitStatus) Checkout(order *Order) error {  
243 - return fmt.Errorf("待收货订单不能重复发货")  
244 -}  
245 -  
246 // 退货 247 // 退货
247 func (status *TransitStatus) Return(order *Order) error { 248 func (status *TransitStatus) Return(order *Order) error {
248 order.CurrentStatus = &ReturnedStatus{} 249 order.CurrentStatus = &ReturnedStatus{}
@@ -268,9 +269,9 @@ func (status *ReceivedStatus) Update(order *Order, data map[string]interface{}) @@ -268,9 +269,9 @@ func (status *ReceivedStatus) Update(order *Order, data map[string]interface{})
268 return fmt.Errorf("已收货订单不能编辑") 269 return fmt.Errorf("已收货订单不能编辑")
269 } 270 }
270 271
271 -// 发货  
272 -func (status *ReceivedStatus) Checkout(order *Order) error {  
273 - return fmt.Errorf("已收货订单不能重复发货") 272 +// 已收货订单不能再次收货
  273 +func (status *ReceivedStatus) Shipping(order *Order) error {
  274 + return fmt.Errorf("已收货订单不能再次发货")
274 } 275 }
275 276
276 // 退货 277 // 退货
@@ -279,18 +280,19 @@ func (status *ReceivedStatus) Return(order *Order) error { @@ -279,18 +280,19 @@ func (status *ReceivedStatus) Return(order *Order) error {
279 return nil 280 return nil
280 } 281 }
281 282
282 -// 取消订单 283 +// 已取消订单不能再次取消
283 func (status *ReceivedStatus) Cancel(order *Order) error { 284 func (status *ReceivedStatus) Cancel(order *Order) error {
284 return fmt.Errorf("已收货订单不能取消") 285 return fmt.Errorf("已收货订单不能取消")
285 } 286 }
286 287
287 -// 收货 288 +// 已收货订单不能重复收货
288 func (status *ReceivedStatus) Receive(order *Order) error { 289 func (status *ReceivedStatus) Receive(order *Order) error {
289 return fmt.Errorf("已收货订单不能重复收货") 290 return fmt.Errorf("已收货订单不能重复收货")
290 } 291 }
291 292
  293 +// 关闭订单
292 func (status *ReceivedStatus) Close(order *Order) error { 294 func (status *ReceivedStatus) Close(order *Order) error {
293 - panic("implement me") 295 + return nil
294 } 296 }
295 297
296 // 退货状态 298 // 退货状态
@@ -301,9 +303,9 @@ func (status *ReturnedStatus) Update(order *Order, data map[string]interface{}) @@ -301,9 +303,9 @@ func (status *ReturnedStatus) Update(order *Order, data map[string]interface{})
301 return fmt.Errorf("已退货订单不允许编辑") 303 return fmt.Errorf("已退货订单不允许编辑")
302 } 304 }
303 305
304 -// 已退货订单不能再次发货  
305 -func (status *ReturnedStatus) Checkout(order *Order) error {  
306 - return fmt.Errorf("已退货订单不允许发货") 306 +// 已收货订单不能再次收货
  307 +func (status *ReturnedStatus) Shipping(order *Order) error {
  308 + return fmt.Errorf("已收货订单不能再次发货")
307 } 309 }
308 310
309 // 已退货订单不能再次发货 311 // 已退货订单不能再次发货
@@ -321,64 +323,82 @@ func (status *ReturnedStatus) Receive(order *Order) error { @@ -321,64 +323,82 @@ func (status *ReturnedStatus) Receive(order *Order) error {
321 return fmt.Errorf("已退货订单不能收货") 323 return fmt.Errorf("已退货订单不能收货")
322 } 324 }
323 325
  326 +// 关闭订单
324 func (status *ReturnedStatus) Close(order *Order) error { 327 func (status *ReturnedStatus) Close(order *Order) error {
325 - panic("implement me") 328 +
  329 + return nil
326 } 330 }
327 331
328 // 取消状态 332 // 取消状态
329 type CanceledStatus struct{} 333 type CanceledStatus struct{}
330 334
  335 +// 已取消订单不能编辑
331 func (status *CanceledStatus) Update(order *Order, dat map[string]interface{}) error { 336 func (status *CanceledStatus) Update(order *Order, dat map[string]interface{}) error {
332 return fmt.Errorf("已取消订单不能编辑") 337 return fmt.Errorf("已取消订单不能编辑")
333 } 338 }
334 339
335 -func (status *CanceledStatus) Checkout(order *Order) error {  
336 - return fmt.Errorf("已取消订单不能发货") 340 +// 已取消订单不能发货
  341 +func (status *CanceledStatus) Shipping(order *Order) error {
  342 + return fmt.Errorf("已取消订单不能再次发货")
337 } 343 }
338 344
  345 +// 已取消的订单不能退货
339 func (status *CanceledStatus) Return(order *Order) error { 346 func (status *CanceledStatus) Return(order *Order) error {
340 return fmt.Errorf("已取消订单不能退货") 347 return fmt.Errorf("已取消订单不能退货")
341 } 348 }
342 349
  350 +// 已取消定案不能再次取消
343 func (status *CanceledStatus) Cancel(order *Order) error { 351 func (status *CanceledStatus) Cancel(order *Order) error {
344 return fmt.Errorf("已取消订单不能再次取消") 352 return fmt.Errorf("已取消订单不能再次取消")
345 } 353 }
346 354
  355 +// 已取消订单不能收货
347 func (status *CanceledStatus) Receive(order *Order) error { 356 func (status *CanceledStatus) Receive(order *Order) error {
348 return fmt.Errorf("已取消订单不能进行收货") 357 return fmt.Errorf("已取消订单不能进行收货")
349 } 358 }
350 359
  360 +// 关闭订单
351 func (status *CanceledStatus) Close(order *Order) error { 361 func (status *CanceledStatus) Close(order *Order) error {
352 - panic("implement me") 362 + return nil
353 } 363 }
354 364
355 // 已完成状态 365 // 已完成状态
356 type CompletedStatus struct{} 366 type CompletedStatus struct{}
357 367
  368 +// 编辑已完成订单分红
358 func (status *CompletedStatus) Update(order *Order, data map[string]interface{}) error { 369 func (status *CompletedStatus) Update(order *Order, data map[string]interface{}) error {
359 370
360 return nil 371 return nil
361 } 372 }
362 373
363 -func (status *CompletedStatus) Checkout(order *Order) error { 374 +// 已完成的订单不能再次发货
  375 +func (status *CompletedStatus) Shipping(order *Order) error {
364 return fmt.Errorf("已完成订单不能发货") 376 return fmt.Errorf("已完成订单不能发货")
365 } 377 }
366 378
  379 +// 已完成订单不能退货
367 func (status *CompletedStatus) Return(order *Order) error { 380 func (status *CompletedStatus) Return(order *Order) error {
368 return fmt.Errorf("已完成订单不能退货") 381 return fmt.Errorf("已完成订单不能退货")
369 } 382 }
370 383
  384 +// 已完成订单不能取消
371 func (status *CompletedStatus) Cancel(order *Order) error { 385 func (status *CompletedStatus) Cancel(order *Order) error {
372 return fmt.Errorf("已完成订单不能取消") 386 return fmt.Errorf("已完成订单不能取消")
373 } 387 }
374 388
  389 +// 已完成订单不能收货
375 func (status *CompletedStatus) Receive(order *Order) error { 390 func (status *CompletedStatus) Receive(order *Order) error {
376 return fmt.Errorf("已完成订单不能收货") 391 return fmt.Errorf("已完成订单不能收货")
377 } 392 }
378 393
  394 +// 关闭已完成订单
  395 +func (status *CompletedStatus) Close(order *Order) error {
  396 + return nil
  397 +}
  398 +
379 // 订单仓储 399 // 订单仓储
380 type OrderRepository interface { 400 type OrderRepository interface {
381 - Save(order *Order) (*Order, error) 401 + Save(order *Order) (*Order, error) // 下单/编辑订单
382 Remove(order *Order) (*Order, error) 402 Remove(order *Order) (*Order, error)
383 FindOne(queryOptions map[string]interface{}) (*Order, error) 403 FindOne(queryOptions map[string]interface{}) (*Order, error)
384 Find(queryOptions map[string]interface{}) (int64, []*Order, error) 404 Find(queryOptions map[string]interface{}) (int64, []*Order, error)
@@ -397,8 +417,8 @@ func (order *Order) Update(data map[string]interface{}) error { @@ -397,8 +417,8 @@ func (order *Order) Update(data map[string]interface{}) error {
397 } 417 }
398 418
399 // 发货 419 // 发货
400 -func (order *Order) Checkout() error {  
401 - return order.CurrentStatus.Checkout(order) 420 +func (order *Order) Shipping() error {
  421 + return order.CurrentStatus.Shipping(order)
402 } 422 }
403 423
404 // 退货 424 // 退货
@@ -415,3 +435,8 @@ func (order *Order) Receive() error { @@ -415,3 +435,8 @@ func (order *Order) Receive() error {
415 func (order *Order) Cancel() error { 435 func (order *Order) Cancel() error {
416 return order.CurrentStatus.Cancel(order) 436 return order.CurrentStatus.Cancel(order)
417 } 437 }
  438 +
  439 +// 关闭订单
  440 +func (order *Order) Close() error {
  441 + return order.CurrentStatus.Close(order)
  442 +}