|
@@ -2,6 +2,7 @@ package service |
|
@@ -2,6 +2,7 @@ package service |
|
2
|
|
2
|
|
|
3
|
import (
|
3
|
import (
|
|
4
|
"fmt"
|
4
|
"fmt"
|
|
|
|
5
|
+ "time"
|
|
5
|
|
6
|
|
|
6
|
"gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/factory"
|
7
|
"gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/factory"
|
|
7
|
"gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/orderinfo/command"
|
8
|
"gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/orderinfo/command"
|
|
@@ -274,9 +275,7 @@ func (service OrderInfoService) DeleteOrder(orderId int64) error { |
|
@@ -274,9 +275,7 @@ func (service OrderInfoService) DeleteOrder(orderId int64) error { |
|
274
|
return nil
|
275
|
return nil
|
|
275
|
}
|
276
|
}
|
|
276
|
|
277
|
|
|
277
|
-//发货
|
|
|
|
278
|
-
|
|
|
|
279
|
-//编辑订单
|
278
|
+//UpdateOrderData 编辑订单
|
|
280
|
func (service OrderInfoService) UpdateOrderData(cmd command.UpdateOrderCommand) (*domain.OrderBase, error) {
|
279
|
func (service OrderInfoService) UpdateOrderData(cmd command.UpdateOrderCommand) (*domain.OrderBase, error) {
|
|
281
|
var (
|
280
|
var (
|
|
282
|
transactionContext, _ = factory.CreateTransactionContext(nil)
|
281
|
transactionContext, _ = factory.CreateTransactionContext(nil)
|
|
@@ -352,6 +351,10 @@ func (service OrderInfoService) UpdateOrderData(cmd command.UpdateOrderCommand) |
|
@@ -352,6 +351,10 @@ func (service OrderInfoService) UpdateOrderData(cmd command.UpdateOrderCommand) |
|
352
|
if err != nil {
|
351
|
if err != nil {
|
|
353
|
return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("核算订单中商品的数值失败:%s", err))
|
352
|
return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("核算订单中商品的数值失败:%s", err))
|
|
354
|
}
|
353
|
}
|
|
|
|
354
|
+ err = m.CurrentBonusStatus.WartPayPartnerBonus(&m)
|
|
|
|
355
|
+ if err != nil {
|
|
|
|
356
|
+ return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("核算订单中商品的分红数值失败:%s", err))
|
|
|
|
357
|
+ }
|
|
355
|
newOrderGoods = append(newOrderGoods, m)
|
358
|
newOrderGoods = append(newOrderGoods, m)
|
|
356
|
}
|
359
|
}
|
|
357
|
oldOrderData.OrderCode = cmd.OrderCode
|
360
|
oldOrderData.OrderCode = cmd.OrderCode
|
|
@@ -389,7 +392,7 @@ func (service OrderInfoService) UpdateOrderData(cmd command.UpdateOrderCommand) |
|
@@ -389,7 +392,7 @@ func (service OrderInfoService) UpdateOrderData(cmd command.UpdateOrderCommand) |
|
389
|
return oldOrderData, nil
|
392
|
return oldOrderData, nil
|
|
390
|
}
|
393
|
}
|
|
391
|
|
394
|
|
|
392
|
-//新旧商品列表对比
|
395
|
+//deleteOldOrderGoods 新旧商品列表对比
|
|
393
|
func (service OrderInfoService) deleteOldOrderGoods(newGoods []domain.OrderGood, oldGoods []domain.OrderGood) (goodIds []int64) {
|
396
|
func (service OrderInfoService) deleteOldOrderGoods(newGoods []domain.OrderGood, oldGoods []domain.OrderGood) (goodIds []int64) {
|
|
394
|
for _, old := range oldGoods {
|
397
|
for _, old := range oldGoods {
|
|
395
|
var hasIn bool
|
398
|
var hasIn bool
|
|
@@ -405,3 +408,86 @@ func (service OrderInfoService) deleteOldOrderGoods(newGoods []domain.OrderGood, |
|
@@ -405,3 +408,86 @@ func (service OrderInfoService) deleteOldOrderGoods(newGoods []domain.OrderGood, |
|
405
|
}
|
408
|
}
|
|
406
|
return
|
409
|
return
|
|
407
|
}
|
410
|
}
|
|
|
|
411
|
+
|
|
|
|
412
|
+//Delivery 发货
|
|
|
|
413
|
+func (service OrderInfoService) Delivery(cmd command.OrderDeliveryCommand) error {
|
|
|
|
414
|
+ var (
|
|
|
|
415
|
+ transactionContext, _ = factory.CreateTransactionContext(nil)
|
|
|
|
416
|
+ err error
|
|
|
|
417
|
+ )
|
|
|
|
418
|
+ if err = transactionContext.StartTransaction(); err != nil {
|
|
|
|
419
|
+ return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
|
420
|
+ }
|
|
|
|
421
|
+ defer func() {
|
|
|
|
422
|
+ transactionContext.RollbackTransaction()
|
|
|
|
423
|
+ }()
|
|
|
|
424
|
+ var (
|
|
|
|
425
|
+ orderBaseRepository domain.OrderBaseRepository
|
|
|
|
426
|
+ orderGoodRepository domain.OrderGoodRepository
|
|
|
|
427
|
+ oldOrderData *domain.OrderBase
|
|
|
|
428
|
+ oldOrderGoods []domain.OrderGood
|
|
|
|
429
|
+ )
|
|
|
|
430
|
+ if orderBaseRepository, err = factory.CreateOrderBaseRepository(map[string]interface{}{
|
|
|
|
431
|
+ "transactionContext": transactionContext,
|
|
|
|
432
|
+ }); err != nil {
|
|
|
|
433
|
+ return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
|
434
|
+ }
|
|
|
|
435
|
+ if orderGoodRepository, err = factory.CreateOrderGoodRepository(map[string]interface{}{
|
|
|
|
436
|
+ "transactionContext": transactionContext,
|
|
|
|
437
|
+ }); err != nil {
|
|
|
|
438
|
+ return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
|
439
|
+ }
|
|
|
|
440
|
+ //获取旧的订单
|
|
|
|
441
|
+ oldOrderData, err = orderBaseRepository.FindOne(domain.OrderBaseFindOneQuery{
|
|
|
|
442
|
+ OrderId: cmd.OrderId,
|
|
|
|
443
|
+ })
|
|
|
|
444
|
+ if err != nil {
|
|
|
|
445
|
+ return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("未找到指定的订单:%s", err))
|
|
|
|
446
|
+ }
|
|
|
|
447
|
+ //获取旧的订单中的商品
|
|
|
|
448
|
+ oldOrderGoods, _, err = orderGoodRepository.Find(domain.OrderGoodFindQuery{
|
|
|
|
449
|
+ OrderId: cmd.OrderId,
|
|
|
|
450
|
+ })
|
|
|
|
451
|
+ if err != nil {
|
|
|
|
452
|
+ return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("未找到指定的订单中的商品列表失败:%s", err))
|
|
|
|
453
|
+ }
|
|
|
|
454
|
+ for _, newGood := range cmd.Goods {
|
|
|
|
455
|
+ for i := range oldOrderGoods {
|
|
|
|
456
|
+ if newGood.Id != oldOrderGoods[i].Id {
|
|
|
|
457
|
+ continue
|
|
|
|
458
|
+ }
|
|
|
|
459
|
+ oldOrderGoods[i].GoodName = newGood.GoodName
|
|
|
|
460
|
+ oldOrderGoods[i].PlanGoodNumber = newGood.PlanGoodNumber
|
|
|
|
461
|
+ oldOrderGoods[i].Price = newGood.Price
|
|
|
|
462
|
+ oldOrderGoods[i].PartnerBonusPercent = newGood.PartnerBonusPercent
|
|
|
|
463
|
+ oldOrderGoods[i].Remark = newGood.Remark
|
|
|
|
464
|
+ err = oldOrderGoods[i].Compute()
|
|
|
|
465
|
+ if err != nil {
|
|
|
|
466
|
+ return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("核算订单中商品的数值失败:%s", err))
|
|
|
|
467
|
+ }
|
|
|
|
468
|
+ err = oldOrderGoods[i].CurrentBonusStatus.WartPayPartnerBonus(&oldOrderGoods[i])
|
|
|
|
469
|
+ if err != nil {
|
|
|
|
470
|
+ return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("核算订单中商品的分红数值失败:%s", err))
|
|
|
|
471
|
+ }
|
|
|
|
472
|
+ }
|
|
|
|
473
|
+ }
|
|
|
|
474
|
+ oldOrderData.DeliveryCode = cmd.DeliveryCode
|
|
|
|
475
|
+ oldOrderData.DeliveryTime = time.Now()
|
|
|
|
476
|
+ err = oldOrderData.Compute()
|
|
|
|
477
|
+ if err != nil {
|
|
|
|
478
|
+ return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("核算订单中合计的数值失败:%s", err))
|
|
|
|
479
|
+ }
|
|
|
|
480
|
+ err = orderBaseRepository.Save(oldOrderData)
|
|
|
|
481
|
+ if err != nil {
|
|
|
|
482
|
+ return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("保存订单数据失败:%s", err))
|
|
|
|
483
|
+ }
|
|
|
|
484
|
+ err = orderGoodRepository.Save(oldOrderGoods)
|
|
|
|
485
|
+ if err != nil {
|
|
|
|
486
|
+ return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("保存订单中的商品数据失败:%s", err))
|
|
|
|
487
|
+ }
|
|
|
|
488
|
+ err = transactionContext.CommitTransaction()
|
|
|
|
489
|
+ if err != nil {
|
|
|
|
490
|
+ return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
|
491
|
+ }
|
|
|
|
492
|
+ return nil
|
|
|
|
493
|
+} |