|
...
|
...
|
@@ -2,6 +2,7 @@ package service |
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/factory"
|
|
|
|
"gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/orderinfo/command"
|
|
...
|
...
|
@@ -274,9 +275,7 @@ func (service OrderInfoService) DeleteOrder(orderId int64) error { |
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
//发货
|
|
|
|
|
|
|
|
//编辑订单
|
|
|
|
//UpdateOrderData 编辑订单
|
|
|
|
func (service OrderInfoService) UpdateOrderData(cmd command.UpdateOrderCommand) (*domain.OrderBase, error) {
|
|
|
|
var (
|
|
|
|
transactionContext, _ = factory.CreateTransactionContext(nil)
|
|
...
|
...
|
@@ -352,6 +351,10 @@ func (service OrderInfoService) UpdateOrderData(cmd command.UpdateOrderCommand) |
|
|
|
if err != nil {
|
|
|
|
return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("核算订单中商品的数值失败:%s", err))
|
|
|
|
}
|
|
|
|
err = m.CurrentBonusStatus.WartPayPartnerBonus(&m)
|
|
|
|
if err != nil {
|
|
|
|
return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("核算订单中商品的分红数值失败:%s", err))
|
|
|
|
}
|
|
|
|
newOrderGoods = append(newOrderGoods, m)
|
|
|
|
}
|
|
|
|
oldOrderData.OrderCode = cmd.OrderCode
|
|
...
|
...
|
@@ -389,7 +392,7 @@ func (service OrderInfoService) UpdateOrderData(cmd command.UpdateOrderCommand) |
|
|
|
return oldOrderData, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
//新旧商品列表对比
|
|
|
|
//deleteOldOrderGoods 新旧商品列表对比
|
|
|
|
func (service OrderInfoService) deleteOldOrderGoods(newGoods []domain.OrderGood, oldGoods []domain.OrderGood) (goodIds []int64) {
|
|
|
|
for _, old := range oldGoods {
|
|
|
|
var hasIn bool
|
|
...
|
...
|
@@ -405,3 +408,86 @@ func (service OrderInfoService) deleteOldOrderGoods(newGoods []domain.OrderGood, |
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
//Delivery 发货
|
|
|
|
func (service OrderInfoService) Delivery(cmd command.OrderDeliveryCommand) error {
|
|
|
|
var (
|
|
|
|
transactionContext, _ = factory.CreateTransactionContext(nil)
|
|
|
|
err error
|
|
|
|
)
|
|
|
|
if err = transactionContext.StartTransaction(); err != nil {
|
|
|
|
return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
|
}
|
|
|
|
defer func() {
|
|
|
|
transactionContext.RollbackTransaction()
|
|
|
|
}()
|
|
|
|
var (
|
|
|
|
orderBaseRepository domain.OrderBaseRepository
|
|
|
|
orderGoodRepository domain.OrderGoodRepository
|
|
|
|
oldOrderData *domain.OrderBase
|
|
|
|
oldOrderGoods []domain.OrderGood
|
|
|
|
)
|
|
|
|
if orderBaseRepository, err = factory.CreateOrderBaseRepository(map[string]interface{}{
|
|
|
|
"transactionContext": transactionContext,
|
|
|
|
}); err != nil {
|
|
|
|
return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
|
}
|
|
|
|
if orderGoodRepository, err = factory.CreateOrderGoodRepository(map[string]interface{}{
|
|
|
|
"transactionContext": transactionContext,
|
|
|
|
}); err != nil {
|
|
|
|
return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
|
}
|
|
|
|
//获取旧的订单
|
|
|
|
oldOrderData, err = orderBaseRepository.FindOne(domain.OrderBaseFindOneQuery{
|
|
|
|
OrderId: cmd.OrderId,
|
|
|
|
})
|
|
|
|
if err != nil {
|
|
|
|
return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("未找到指定的订单:%s", err))
|
|
|
|
}
|
|
|
|
//获取旧的订单中的商品
|
|
|
|
oldOrderGoods, _, err = orderGoodRepository.Find(domain.OrderGoodFindQuery{
|
|
|
|
OrderId: cmd.OrderId,
|
|
|
|
})
|
|
|
|
if err != nil {
|
|
|
|
return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("未找到指定的订单中的商品列表失败:%s", err))
|
|
|
|
}
|
|
|
|
for _, newGood := range cmd.Goods {
|
|
|
|
for i := range oldOrderGoods {
|
|
|
|
if newGood.Id != oldOrderGoods[i].Id {
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
oldOrderGoods[i].GoodName = newGood.GoodName
|
|
|
|
oldOrderGoods[i].PlanGoodNumber = newGood.PlanGoodNumber
|
|
|
|
oldOrderGoods[i].Price = newGood.Price
|
|
|
|
oldOrderGoods[i].PartnerBonusPercent = newGood.PartnerBonusPercent
|
|
|
|
oldOrderGoods[i].Remark = newGood.Remark
|
|
|
|
err = oldOrderGoods[i].Compute()
|
|
|
|
if err != nil {
|
|
|
|
return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("核算订单中商品的数值失败:%s", err))
|
|
|
|
}
|
|
|
|
err = oldOrderGoods[i].CurrentBonusStatus.WartPayPartnerBonus(&oldOrderGoods[i])
|
|
|
|
if err != nil {
|
|
|
|
return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("核算订单中商品的分红数值失败:%s", err))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
oldOrderData.DeliveryCode = cmd.DeliveryCode
|
|
|
|
oldOrderData.DeliveryTime = time.Now()
|
|
|
|
err = oldOrderData.Compute()
|
|
|
|
if err != nil {
|
|
|
|
return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("核算订单中合计的数值失败:%s", err))
|
|
|
|
}
|
|
|
|
err = orderBaseRepository.Save(oldOrderData)
|
|
|
|
if err != nil {
|
|
|
|
return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("保存订单数据失败:%s", err))
|
|
|
|
}
|
|
|
|
err = orderGoodRepository.Save(oldOrderGoods)
|
|
|
|
if err != nil {
|
|
|
|
return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("保存订单中的商品数据失败:%s", err))
|
|
|
|
}
|
|
|
|
err = transactionContext.CommitTransaction()
|
|
|
|
if err != nil {
|
|
|
|
return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
} |
...
|
...
|
|