作者 陈志颖

Merge branch 'feat/order-domain' into 6-order-domain-service

增加状态
  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 // 订单编号
@@ -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 +}