|
...
|
...
|
@@ -17,14 +17,11 @@ import ( |
|
|
|
|
|
|
|
type DividendsReturnedOrderRepository struct {
|
|
|
|
transactionContext *pgTransaction.TransactionContext
|
|
|
|
IdWorker *snowflake.IdWorker
|
|
|
|
}
|
|
|
|
|
|
|
|
func (repository *DividendsReturnedOrderRepository) nextIdentify() (int64, error) {
|
|
|
|
IdWorker, err := snowflake.NewIdWorker(1)
|
|
|
|
if err != nil {
|
|
|
|
return 0, err
|
|
|
|
}
|
|
|
|
id, err := IdWorker.NextId()
|
|
|
|
id, err := repository.IdWorker.NextId()
|
|
|
|
return id, err
|
|
|
|
}
|
|
|
|
|
|
...
|
...
|
@@ -111,7 +108,16 @@ func (repository *DividendsReturnedOrderRepository) Save(dividendsReturnedOrder |
|
|
|
// 新增退货单产品
|
|
|
|
var orderGoodsModel []*models.OrderGood
|
|
|
|
for _, good := range dividendsReturnedOrder.Goods {
|
|
|
|
if good.Identify() == nil {
|
|
|
|
goodId, err := repository.nextIdentify()
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
} else {
|
|
|
|
good.OrderGoodId = goodId
|
|
|
|
}
|
|
|
|
}
|
|
|
|
orderGoodsModel = append(orderGoodsModel, &models.OrderGood{
|
|
|
|
OrderGoodId: good.OrderGoodId,
|
|
|
|
OrderGoodAmount: good.OrderGoodAmount,
|
|
|
|
OrderGoodName: good.OrderGoodName,
|
|
|
|
OrderGoodPrice: good.OrderGoodPrice,
|
|
...
|
...
|
@@ -207,7 +213,16 @@ func (repository *DividendsReturnedOrderRepository) Save(dividendsReturnedOrder |
|
|
|
// 将待添加的分红退户订单产品领域模型转换为数据模型
|
|
|
|
var orderGoodsToAddModels []*models.OrderGood
|
|
|
|
for _, goodDomain := range orderGoodsToAdd {
|
|
|
|
if goodDomain.Identify() == nil {
|
|
|
|
goodId, err := repository.nextIdentify()
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
} else {
|
|
|
|
goodDomain.OrderGoodId = goodId
|
|
|
|
}
|
|
|
|
}
|
|
|
|
orderGoodsToAddModels = append(orderGoodsToAddModels, &models.OrderGood{
|
|
|
|
OrderGoodId: goodDomain.OrderGoodId,
|
|
|
|
OrderGoodAmount: goodDomain.OrderGoodAmount,
|
|
|
|
OrderGoodName: goodDomain.OrderGoodName,
|
|
|
|
OrderGoodPrice: goodDomain.OrderGoodPrice,
|
|
...
|
...
|
@@ -298,6 +313,100 @@ func (repository *DividendsReturnedOrderRepository) Save(dividendsReturnedOrder |
|
|
|
return dividendsReturnedOrder, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (repository *DividendsReturnedOrderRepository) SaveMany(dividendsReturnedOrders []*domain.DividendsReturnedOrder) ([]*domain.DividendsReturnedOrder, error) {
|
|
|
|
tx := repository.transactionContext.PgTx
|
|
|
|
var dividendsReturnedOrderModels []*models.DividendsReturnedOrder
|
|
|
|
var orderGoodsModel []*models.OrderGood
|
|
|
|
for _, dividendsReturnedOrder := range dividendsReturnedOrders {
|
|
|
|
if dividendsReturnedOrder.Identify() == nil {
|
|
|
|
dividendsReturnedOrderId, err := repository.nextIdentify()
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
} else {
|
|
|
|
dividendsReturnedOrder.DividendsReturnedOrderId = dividendsReturnedOrderId
|
|
|
|
}
|
|
|
|
}
|
|
|
|
dividendsReturnedOrderModels = append(dividendsReturnedOrderModels, &models.DividendsReturnedOrder{
|
|
|
|
DividendsReturnedOrderId: dividendsReturnedOrder.DividendsReturnedOrderId,
|
|
|
|
DividendsReturnedOrderNumber: dividendsReturnedOrder.DividendsReturnedOrderNumber,
|
|
|
|
DividendsReturnedOrderRefund: dividendsReturnedOrder.DividendsReturnedOrderRefund,
|
|
|
|
OriginalOrderNum: dividendsReturnedOrder.OriginalOrderNum,
|
|
|
|
DividendsOrderNumber: dividendsReturnedOrder.DividendsOrderNumber,
|
|
|
|
DividendsReturnedCustomerName: dividendsReturnedOrder.DividendsReturnedCustomerName,
|
|
|
|
OrderTime: dividendsReturnedOrder.OrderTime,
|
|
|
|
DividendsReturnedDate: dividendsReturnedOrder.DividendsReturnedDate,
|
|
|
|
Region: dividendsReturnedOrder.Region,
|
|
|
|
Remarks: dividendsReturnedOrder.Remarks,
|
|
|
|
DividendStatus: dividendsReturnedOrder.DividendStatus,
|
|
|
|
DividendTime: time.Time{},
|
|
|
|
Org: dividendsReturnedOrder.Org,
|
|
|
|
Company: dividendsReturnedOrder.Company,
|
|
|
|
CreatedAt: time.Now(),
|
|
|
|
DeletedAt: dividendsReturnedOrder.DeletedAt,
|
|
|
|
UpdatedAt: dividendsReturnedOrder.UpdatedAt,
|
|
|
|
Operator: dividendsReturnedOrder.Operator,
|
|
|
|
OperateTime: time.Now(),
|
|
|
|
})
|
|
|
|
for _, good := range dividendsReturnedOrder.Goods {
|
|
|
|
if good.Identify() == nil {
|
|
|
|
orderGoodId, err := repository.nextIdentify()
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
} else {
|
|
|
|
good.OrderGoodId = orderGoodId
|
|
|
|
}
|
|
|
|
}
|
|
|
|
orderGoodsModel = append(orderGoodsModel, &models.OrderGood{
|
|
|
|
OrderGoodId: good.OrderGoodId,
|
|
|
|
OrderGoodAmount: good.OrderGoodAmount,
|
|
|
|
OrderGoodName: good.OrderGoodName,
|
|
|
|
OrderGoodPrice: good.OrderGoodPrice,
|
|
|
|
OrderGoodQuantity: good.OrderGoodQuantity,
|
|
|
|
DividendsOrderNumber: "",
|
|
|
|
DividendsReturnedOrderNumber: dividendsReturnedOrder.DividendsReturnedOrderNumber,
|
|
|
|
CooperationContractNumber: good.CooperationContractNumber,
|
|
|
|
CompanyId: good.CompanyId,
|
|
|
|
OrgId: good.OrgId,
|
|
|
|
OrderGoodExpense: good.OrderGoodExpense,
|
|
|
|
OrderGoodDividendsStatus: good.OrderGoodDividendsStatus,
|
|
|
|
CreatedAt: time.Now(),
|
|
|
|
DeletedAt: time.Time{},
|
|
|
|
UpdatedAt: time.Time{},
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if _, err := tx.Model(÷ndsReturnedOrderModels).Insert(); err != nil { // 新增分红订单
|
|
|
|
return nil, err
|
|
|
|
} else { // 新增分红订单产品
|
|
|
|
if _, err := tx.Model(&orderGoodsModel).Insert(); err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
var dividendsReturnedOrdersSaved []*domain.DividendsReturnedOrder
|
|
|
|
for _, dividendsReturnedOrderModel := range dividendsReturnedOrderModels {
|
|
|
|
//获取订单产品
|
|
|
|
var orderGoodModels []*models.OrderGood
|
|
|
|
orderGoodModelQuery := tx.Model(&orderGoodModels)
|
|
|
|
if err := orderGoodModelQuery.
|
|
|
|
Where("company_id = ?", dividendsReturnedOrderModel.Company.CompanyId).
|
|
|
|
Where("org_id = ?", dividendsReturnedOrderModel.Org.OrgId).
|
|
|
|
Where("dividends_returned_order_number = ?", dividendsReturnedOrderModel.DividendsReturnedOrderNumber).
|
|
|
|
Select(); err != nil {
|
|
|
|
log.Logger.Error("分红退货单关联的产品不存在", map[string]interface{}{
|
|
|
|
"dividendsReturnedOrderModel": dividendsReturnedOrderModel,
|
|
|
|
})
|
|
|
|
return nil, fmt.Errorf("分红退货单关联的产品不存在")
|
|
|
|
}
|
|
|
|
// 聚合分红退货单
|
|
|
|
if dividendsReturnedOrder, err := transform.TransformToDividendsReturnedOrderDomainModelFromPgModels(dividendsReturnedOrderModel, orderGoodModels); err != nil {
|
|
|
|
return dividendsReturnedOrders, err
|
|
|
|
} else {
|
|
|
|
dividendsReturnedOrders = append(dividendsReturnedOrders, dividendsReturnedOrder)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return dividendsReturnedOrdersSaved, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (repository *DividendsReturnedOrderRepository) UpdateMany(dividendsReturnedOrders []*domain.DividendsReturnedOrder) ([]*domain.DividendsReturnedOrder, error) {
|
|
|
|
tx := repository.transactionContext.PgTx
|
|
|
|
var dividendsReturnedOrderModels []*models.DividendsReturnedOrder
|
|
...
|
...
|
@@ -469,8 +578,13 @@ func NewDividendsReturnedOrderRepository(transactionContext *pgTransaction.Trans |
|
|
|
if transactionContext == nil {
|
|
|
|
return nil, fmt.Errorf("transactionContext参数不能为nil")
|
|
|
|
} else {
|
|
|
|
idWorker, err := snowflake.NewIdWorker(1)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
return &DividendsReturnedOrderRepository{
|
|
|
|
transactionContext: transactionContext,
|
|
|
|
IdWorker: idWorker,
|
|
|
|
}, nil
|
|
|
|
}
|
|
|
|
} |
...
|
...
|
|