|
@@ -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
|
// 订单编号
|
|
@@ -70,13 +73,14 @@ type Order struct { |
|
@@ -70,13 +73,14 @@ type Order struct { |
70
|
// 订单状态机
|
73
|
// 订单状态机
|
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 // 下单
|
|
|
74
|
- Return(order *Order) error // 退换货
|
76
|
+ Shipping(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
|
|
198
|
-func (status *UnShippedStatus) Checkout(order *Order) error {
|
202
|
+// 发货
|
|
|
203
|
+func (status *UnShippedStatus) Shipping(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,122 +229,176 @@ func (status *UnShippedStatus) Receive(order *Order) error { |
|
@@ -214,122 +229,176 @@ func (status *UnShippedStatus) Receive(order *Order) error { |
214
|
// 待收货状态
|
229
|
// 待收货状态
|
215
|
type TransitStatus struct{}
|
230
|
type TransitStatus struct{}
|
216
|
|
231
|
|
|
|
232
|
+// 待收货订单不能再次发货
|
|
|
233
|
+func (status *TransitStatus) Shipping(order *Order) error {
|
|
|
234
|
+ return fmt.Errorf("待收货订单不能重复发货")
|
|
|
235
|
+}
|
|
|
236
|
+
|
|
|
237
|
+// 待收货订单不能关闭
|
|
|
238
|
+func (status *TransitStatus) Close(order *Order) error {
|
|
|
239
|
+ return fmt.Errorf("待收货订单不能关闭")
|
|
|
240
|
+}
|
|
|
241
|
+
|
217
|
// 待收货订单不允许编辑
|
242
|
// 待收货订单不允许编辑
|
218
|
func (status *TransitStatus) Update(order *Order, data map[string]interface{}) error {
|
243
|
func (status *TransitStatus) Update(order *Order, data map[string]interface{}) error {
|
219
|
return fmt.Errorf("已发货订单不允许编辑")
|
244
|
return fmt.Errorf("已发货订单不允许编辑")
|
220
|
}
|
245
|
}
|
221
|
|
246
|
|
222
|
-func (status *TransitStatus) Checkout(order *Order) error {
|
|
|
223
|
- return fmt.Errorf("待收货订单不能重复发货")
|
|
|
224
|
-}
|
|
|
225
|
-
|
247
|
+// 退货
|
226
|
func (status *TransitStatus) Return(order *Order) error {
|
248
|
func (status *TransitStatus) Return(order *Order) error {
|
|
|
249
|
+ order.CurrentStatus = &ReturnedStatus{}
|
227
|
return nil
|
250
|
return nil
|
228
|
}
|
251
|
}
|
229
|
|
252
|
|
|
|
253
|
+// 待收货订单不能取消
|
230
|
func (status *TransitStatus) Cancel(order *Order) error {
|
254
|
func (status *TransitStatus) Cancel(order *Order) error {
|
231
|
return fmt.Errorf("待收货订单不能取消")
|
255
|
return fmt.Errorf("待收货订单不能取消")
|
232
|
}
|
256
|
}
|
233
|
|
257
|
|
|
|
258
|
+// 收货
|
234
|
func (status *TransitStatus) Receive(order *Order) error {
|
259
|
func (status *TransitStatus) Receive(order *Order) error {
|
|
|
260
|
+ order.CurrentStatus = &ReceivedStatus{}
|
235
|
return nil
|
261
|
return nil
|
236
|
}
|
262
|
}
|
237
|
|
263
|
|
238
|
// 收货状态
|
264
|
// 收货状态
|
239
|
type ReceivedStatus struct{}
|
265
|
type ReceivedStatus struct{}
|
240
|
|
266
|
|
|
|
267
|
+// 编辑订单
|
241
|
func (status *ReceivedStatus) Update(order *Order, data map[string]interface{}) error {
|
268
|
func (status *ReceivedStatus) Update(order *Order, data map[string]interface{}) error {
|
242
|
return fmt.Errorf("已收货订单不能编辑")
|
269
|
return fmt.Errorf("已收货订单不能编辑")
|
243
|
}
|
270
|
}
|
244
|
|
271
|
|
245
|
-func (status *ReceivedStatus) Checkout(order *Order) error {
|
|
|
246
|
- return fmt.Errorf("已收货订单不能重复发货")
|
272
|
+// 已收货订单不能再次收货
|
|
|
273
|
+func (status *ReceivedStatus) Shipping(order *Order) error {
|
|
|
274
|
+ return fmt.Errorf("已收货订单不能再次发货")
|
247
|
}
|
275
|
}
|
248
|
|
276
|
|
|
|
277
|
+// 退货
|
249
|
func (status *ReceivedStatus) Return(order *Order) error {
|
278
|
func (status *ReceivedStatus) Return(order *Order) error {
|
|
|
279
|
+ order.CurrentStatus = &ReturnedStatus{}
|
250
|
return nil
|
280
|
return nil
|
251
|
}
|
281
|
}
|
252
|
|
282
|
|
|
|
283
|
+// 已取消订单不能再次取消
|
253
|
func (status *ReceivedStatus) Cancel(order *Order) error {
|
284
|
func (status *ReceivedStatus) Cancel(order *Order) error {
|
254
|
return fmt.Errorf("已收货订单不能取消")
|
285
|
return fmt.Errorf("已收货订单不能取消")
|
255
|
}
|
286
|
}
|
256
|
|
287
|
|
|
|
288
|
+// 已收货订单不能重复收货
|
257
|
func (status *ReceivedStatus) Receive(order *Order) error {
|
289
|
func (status *ReceivedStatus) Receive(order *Order) error {
|
258
|
return fmt.Errorf("已收货订单不能重复收货")
|
290
|
return fmt.Errorf("已收货订单不能重复收货")
|
259
|
}
|
291
|
}
|
260
|
|
292
|
|
|
|
293
|
+// 关闭订单
|
|
|
294
|
+func (status *ReceivedStatus) Close(order *Order) error {
|
|
|
295
|
+ return nil
|
|
|
296
|
+}
|
|
|
297
|
+
|
261
|
// 退货状态
|
298
|
// 退货状态
|
262
|
type ReturnedStatus struct{}
|
299
|
type ReturnedStatus struct{}
|
263
|
|
300
|
|
|
|
301
|
+// 已退货订单不能编辑
|
264
|
func (status *ReturnedStatus) Update(order *Order, data map[string]interface{}) error {
|
302
|
func (status *ReturnedStatus) Update(order *Order, data map[string]interface{}) error {
|
265
|
return fmt.Errorf("已退货订单不允许编辑")
|
303
|
return fmt.Errorf("已退货订单不允许编辑")
|
266
|
}
|
304
|
}
|
267
|
|
305
|
|
268
|
-func (status *ReturnedStatus) Checkout(order *Order) error {
|
|
|
269
|
- return fmt.Errorf("已退货订单不允许发货")
|
306
|
+// 已收货订单不能再次收货
|
|
|
307
|
+func (status *ReturnedStatus) Shipping(order *Order) error {
|
|
|
308
|
+ return fmt.Errorf("已收货订单不能再次发货")
|
270
|
}
|
309
|
}
|
271
|
|
310
|
|
|
|
311
|
+// 已退货订单不能再次发货
|
272
|
func (status *ReturnedStatus) Return(order *Order) error {
|
312
|
func (status *ReturnedStatus) Return(order *Order) error {
|
273
|
return fmt.Errorf("已退货订单不允许再次退货")
|
313
|
return fmt.Errorf("已退货订单不允许再次退货")
|
274
|
}
|
314
|
}
|
275
|
|
315
|
|
|
|
316
|
+// 已退货订单不能取消
|
276
|
func (status *ReturnedStatus) Cancel(order *Order) error {
|
317
|
func (status *ReturnedStatus) Cancel(order *Order) error {
|
277
|
return fmt.Errorf("已退货订单不能取消")
|
318
|
return fmt.Errorf("已退货订单不能取消")
|
278
|
}
|
319
|
}
|
279
|
|
320
|
|
|
|
321
|
+// 已退货订单不能重复守护
|
280
|
func (status *ReturnedStatus) Receive(order *Order) error {
|
322
|
func (status *ReturnedStatus) Receive(order *Order) error {
|
281
|
return fmt.Errorf("已退货订单不能收货")
|
323
|
return fmt.Errorf("已退货订单不能收货")
|
282
|
}
|
324
|
}
|
283
|
|
325
|
|
|
|
326
|
+// 关闭订单
|
|
|
327
|
+func (status *ReturnedStatus) Close(order *Order) error {
|
|
|
328
|
+
|
|
|
329
|
+ return nil
|
|
|
330
|
+}
|
|
|
331
|
+
|
284
|
// 取消状态
|
332
|
// 取消状态
|
285
|
type CanceledStatus struct{}
|
333
|
type CanceledStatus struct{}
|
286
|
|
334
|
|
|
|
335
|
+// 已取消订单不能编辑
|
287
|
func (status *CanceledStatus) Update(order *Order, dat map[string]interface{}) error {
|
336
|
func (status *CanceledStatus) Update(order *Order, dat map[string]interface{}) error {
|
288
|
return fmt.Errorf("已取消订单不能编辑")
|
337
|
return fmt.Errorf("已取消订单不能编辑")
|
289
|
}
|
338
|
}
|
290
|
|
339
|
|
291
|
-func (status *CanceledStatus) Checkout(order *Order) error {
|
|
|
292
|
- return fmt.Errorf("已取消订单不能发货")
|
340
|
+// 已取消订单不能发货
|
|
|
341
|
+func (status *CanceledStatus) Shipping(order *Order) error {
|
|
|
342
|
+ return fmt.Errorf("已取消订单不能再次发货")
|
293
|
}
|
343
|
}
|
294
|
|
344
|
|
|
|
345
|
+// 已取消的订单不能退货
|
295
|
func (status *CanceledStatus) Return(order *Order) error {
|
346
|
func (status *CanceledStatus) Return(order *Order) error {
|
296
|
return fmt.Errorf("已取消订单不能退货")
|
347
|
return fmt.Errorf("已取消订单不能退货")
|
297
|
}
|
348
|
}
|
298
|
|
349
|
|
|
|
350
|
+// 已取消定案不能再次取消
|
299
|
func (status *CanceledStatus) Cancel(order *Order) error {
|
351
|
func (status *CanceledStatus) Cancel(order *Order) error {
|
300
|
return fmt.Errorf("已取消订单不能再次取消")
|
352
|
return fmt.Errorf("已取消订单不能再次取消")
|
301
|
}
|
353
|
}
|
302
|
|
354
|
|
|
|
355
|
+// 已取消订单不能收货
|
303
|
func (status *CanceledStatus) Receive(order *Order) error {
|
356
|
func (status *CanceledStatus) Receive(order *Order) error {
|
304
|
return fmt.Errorf("已取消订单不能进行收货")
|
357
|
return fmt.Errorf("已取消订单不能进行收货")
|
305
|
}
|
358
|
}
|
306
|
|
359
|
|
|
|
360
|
+// 关闭订单
|
|
|
361
|
+func (status *CanceledStatus) Close(order *Order) error {
|
|
|
362
|
+ return nil
|
|
|
363
|
+}
|
|
|
364
|
+
|
307
|
// 已完成状态
|
365
|
// 已完成状态
|
308
|
type CompletedStatus struct{}
|
366
|
type CompletedStatus struct{}
|
309
|
|
367
|
|
|
|
368
|
+// 编辑已完成订单分红
|
310
|
func (status *CompletedStatus) Update(order *Order, data map[string]interface{}) error {
|
369
|
func (status *CompletedStatus) Update(order *Order, data map[string]interface{}) error {
|
|
|
370
|
+
|
311
|
return nil
|
371
|
return nil
|
312
|
}
|
372
|
}
|
313
|
|
373
|
|
314
|
-func (status *CompletedStatus) Checkout(order *Order) error {
|
374
|
+// 已完成的订单不能再次发货
|
|
|
375
|
+func (status *CompletedStatus) Shipping(order *Order) error {
|
315
|
return fmt.Errorf("已完成订单不能发货")
|
376
|
return fmt.Errorf("已完成订单不能发货")
|
316
|
}
|
377
|
}
|
317
|
|
378
|
|
|
|
379
|
+// 已完成订单不能退货
|
318
|
func (status *CompletedStatus) Return(order *Order) error {
|
380
|
func (status *CompletedStatus) Return(order *Order) error {
|
319
|
return fmt.Errorf("已完成订单不能退货")
|
381
|
return fmt.Errorf("已完成订单不能退货")
|
320
|
}
|
382
|
}
|
321
|
|
383
|
|
|
|
384
|
+// 已完成订单不能取消
|
322
|
func (status *CompletedStatus) Cancel(order *Order) error {
|
385
|
func (status *CompletedStatus) Cancel(order *Order) error {
|
323
|
return fmt.Errorf("已完成订单不能取消")
|
386
|
return fmt.Errorf("已完成订单不能取消")
|
324
|
}
|
387
|
}
|
325
|
|
388
|
|
|
|
389
|
+// 已完成订单不能收货
|
326
|
func (status *CompletedStatus) Receive(order *Order) error {
|
390
|
func (status *CompletedStatus) Receive(order *Order) error {
|
327
|
return fmt.Errorf("已完成订单不能收货")
|
391
|
return fmt.Errorf("已完成订单不能收货")
|
328
|
}
|
392
|
}
|
329
|
|
393
|
|
|
|
394
|
+// 关闭已完成订单
|
|
|
395
|
+func (status *CompletedStatus) Close(order *Order) error {
|
|
|
396
|
+ return nil
|
|
|
397
|
+}
|
|
|
398
|
+
|
330
|
// 订单仓储
|
399
|
// 订单仓储
|
331
|
type OrderRepository interface {
|
400
|
type OrderRepository interface {
|
332
|
- Save(order *Order) (*Order, error)
|
401
|
+ Save(order *Order) (*Order, error) // 下单/编辑订单
|
333
|
Remove(order *Order) (*Order, error)
|
402
|
Remove(order *Order) (*Order, error)
|
334
|
FindOne(queryOptions map[string]interface{}) (*Order, error)
|
403
|
FindOne(queryOptions map[string]interface{}) (*Order, error)
|
335
|
Find(queryOptions map[string]interface{}) (int64, []*Order, error)
|
404
|
Find(queryOptions map[string]interface{}) (int64, []*Order, error)
|
|
@@ -348,8 +417,8 @@ func (order *Order) Update(data map[string]interface{}) error { |
|
@@ -348,8 +417,8 @@ func (order *Order) Update(data map[string]interface{}) error { |
348
|
}
|
417
|
}
|
349
|
|
418
|
|
350
|
// 发货
|
419
|
// 发货
|
351
|
-func (order *Order) Checkout() error {
|
|
|
352
|
- return order.CurrentStatus.Checkout(order)
|
420
|
+func (order *Order) Shipping() error {
|
|
|
421
|
+ return order.CurrentStatus.Shipping(order)
|
353
|
}
|
422
|
}
|
354
|
|
423
|
|
355
|
// 退货
|
424
|
// 退货
|
|
@@ -366,3 +435,8 @@ func (order *Order) Receive() error { |
|
@@ -366,3 +435,8 @@ func (order *Order) Receive() error { |
366
|
func (order *Order) Cancel() error {
|
435
|
func (order *Order) Cancel() error {
|
367
|
return order.CurrentStatus.Cancel(order)
|
436
|
return order.CurrentStatus.Cancel(order)
|
368
|
}
|
437
|
}
|
|
|
438
|
+
|
|
|
439
|
+// 关闭订单
|
|
|
440
|
+func (order *Order) Close() error {
|
|
|
441
|
+ return order.CurrentStatus.Close(order)
|
|
|
442
|
+} |