作者 陈志颖

refactor:优化生成分红预算单

@@ -24,6 +24,8 @@ type ConfirmMoneyIncentivesEstimateCommand struct { @@ -24,6 +24,8 @@ type ConfirmMoneyIncentivesEstimateCommand struct {
24 UserId int64 `cname:"用户ID" json:"userId" valid:"Required"` 24 UserId int64 `cname:"用户ID" json:"userId" valid:"Required"`
25 // 用户基础数据id 25 // 用户基础数据id
26 UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId" valid:"Required"` 26 UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId" valid:"Required"`
  27 + // 动作,1预算,2确定预算
  28 + Action int32 `cname:"确定金额激励分红动作" json:"action" valid:"Required"`
27 } 29 }
28 30
29 func (estimateMoneyIncentivesCommand *ConfirmMoneyIncentivesEstimateCommand) Valid(validation *validation.Validation) { 31 func (estimateMoneyIncentivesCommand *ConfirmMoneyIncentivesEstimateCommand) Valid(validation *validation.Validation) {
@@ -14,6 +14,7 @@ import ( @@ -14,6 +14,7 @@ import (
14 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain/service" 14 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain/service"
15 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/dao" 15 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/dao"
16 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/utils" 16 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/utils"
  17 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/log"
17 "strconv" 18 "strconv"
18 "time" 19 "time"
19 ) 20 )
@@ -373,7 +374,10 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmDividendsIncent @@ -373,7 +374,10 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmDividendsIncent
373 _ = transactionContext.RollbackTransaction() 374 _ = transactionContext.RollbackTransaction()
374 }() 375 }()
375 376
376 - orderGoodIds, _ := utils.SliceAtoi(confirmDividendsIncentivesEstimateCommand.OrderGoodIds) 377 + orderGoodIds, err := utils.SliceAtoi(confirmDividendsIncentivesEstimateCommand.OrderGoodIds)
  378 + if err != nil {
  379 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  380 + }
377 381
378 // 用户REST服务初始化 382 // 用户REST服务初始化
379 //var userService service.UserService 383 //var userService service.UserService
@@ -575,13 +579,12 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmDividendsIncent @@ -575,13 +579,12 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmDividendsIncent
575 } 579 }
576 } 580 }
577 } 581 }
578 - var dividendsEstimatesSaved []*domain.DividendsEstimate  
579 - for _, dividendsEstimate := range dividendsEstimates {  
580 - if dividendsEstimateSaved, err := dividendsEstimateRepository.Save(dividendsEstimate); err != nil {  
581 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
582 - } else {  
583 - dividendsEstimatesSaved = append(dividendsEstimatesSaved, dividendsEstimateSaved)  
584 - } 582 + log.Logger.Info("新增的分红预算单", map[string]interface{}{
  583 + "dividendsEstimates": dividendsEstimates,
  584 + })
  585 + dividendsEstimatesSaved, err := dividendsEstimateRepository.SaveMany(dividendsEstimates)
  586 + if err != nil {
  587 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
585 } 588 }
586 if err := transactionContext.CommitTransaction(); err != nil { 589 if err := transactionContext.CommitTransaction(); err != nil {
587 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 590 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -737,8 +740,13 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmMoneyIncentives @@ -737,8 +740,13 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmMoneyIncentives
737 dividendsEstimatesSaved = append(dividendsEstimatesSaved, dividendsEstimateSaved) 740 dividendsEstimatesSaved = append(dividendsEstimatesSaved, dividendsEstimateSaved)
738 } 741 }
739 } 742 }
740 - if err := transactionContext.CommitTransaction(); err != nil {  
741 - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 743 + if confirmMoneyIncentivesEstimateCommand.Action == 1 { // 只预算,不入库
  744 + return dividendsEstimatesSaved, nil
  745 + } else if confirmMoneyIncentivesEstimateCommand.Action == 2 { // 确定预算
  746 + if err := transactionContext.CommitTransaction(); err != nil {
  747 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  748 + }
  749 + return dividendsEstimatesSaved, nil
742 } 750 }
743 return dividendsEstimatesSaved, nil 751 return dividendsEstimatesSaved, nil
744 } 752 }
@@ -65,6 +65,7 @@ type DividendsEstimate struct { @@ -65,6 +65,7 @@ type DividendsEstimate struct {
65 65
66 type DividendsEstimateRepository interface { 66 type DividendsEstimateRepository interface {
67 Save(dividendsEstimate *DividendsEstimate) (*DividendsEstimate, error) 67 Save(dividendsEstimate *DividendsEstimate) (*DividendsEstimate, error)
  68 + SaveMany(dividendsEstimates []*DividendsEstimate) ([]*DividendsEstimate, error)
68 UpdateMany(dividendsEstimates []*DividendsEstimate) ([]*DividendsEstimate, error) 69 UpdateMany(dividendsEstimates []*DividendsEstimate) ([]*DividendsEstimate, error)
69 Remove(dividendsEstimate *DividendsEstimate) (*DividendsEstimate, error) 70 Remove(dividendsEstimate *DividendsEstimate) (*DividendsEstimate, error)
70 FindOne(queryOptions map[string]interface{}) (*DividendsEstimate, error) 71 FindOne(queryOptions map[string]interface{}) (*DividendsEstimate, error)
@@ -162,6 +162,45 @@ func (repository *DividendsEstimateRepository) Save(dividendsEstimate *domain.Di @@ -162,6 +162,45 @@ func (repository *DividendsEstimateRepository) Save(dividendsEstimate *domain.Di
162 return dividendsEstimate, nil 162 return dividendsEstimate, nil
163 } 163 }
164 164
  165 +func (repository *DividendsEstimateRepository) SaveMany(dividendsEstimates []*domain.DividendsEstimate) ([]*domain.DividendsEstimate, error) {
  166 + tx := repository.transactionContext.PgTx
  167 + var dividendsEstimateModels []*models.DividendsEstimate
  168 + for _, dividendsEstimate := range dividendsEstimates {
  169 + dividendsEstimateId, err := repository.nextIdentify()
  170 + if err != nil {
  171 + return nil, err
  172 + } else {
  173 + dividendsEstimate.DividendsEstimateId = dividendsEstimateId
  174 + }
  175 + dividendsEstimateModels = append(dividendsEstimateModels, &models.DividendsEstimate{
  176 + DividendsEstimateId: dividendsEstimate.DividendsEstimateId,
  177 + DividendsAccountStatus: dividendsEstimate.DividendsAccountStatus,
  178 + DividendsAmount: dividendsEstimate.DividendsAmount,
  179 + DividendsEstimateOrderNumber: dividendsEstimate.DividendsEstimateOrderNumber,
  180 + DividendsEstimateTime: dividendsEstimate.DividendsEstimateTime,
  181 + DividendsParticipateType: dividendsEstimate.DividendsParticipateType,
  182 + DividendsType: dividendsEstimate.DividendsType,
  183 + DividendsTypeName: dividendsEstimate.DividendsTypeName,
  184 + OrderOrReturnedOrderNum: dividendsEstimate.OrderOrReturnedOrderNum,
  185 + CooperationContractNumber: dividendsEstimate.CooperationContractNumber,
  186 + DividendsUser: dividendsEstimate.DividendsUser,
  187 + DividendsStage: dividendsEstimate.DividendsStage,
  188 + Org: dividendsEstimate.Org,
  189 + Company: dividendsEstimate.Company,
  190 + Operator: dividendsEstimate.Operator,
  191 + OperateTime: dividendsEstimate.OperateTime,
  192 + IsCanceled: dividendsEstimate.IsCanceled,
  193 + CreatedAt: dividendsEstimate.CreatedAt,
  194 + DeletedAt: dividendsEstimate.DeletedAt,
  195 + UpdatedAt: time.Now(),
  196 + })
  197 + }
  198 + if _, err := tx.Model(&dividendsEstimateModels).WherePK().Update(); err != nil {
  199 + return nil, err
  200 + }
  201 + return dividendsEstimates, nil
  202 +}
  203 +
165 func (repository *DividendsEstimateRepository) UpdateMany(dividendsEstimates []*domain.DividendsEstimate) ([]*domain.DividendsEstimate, error) { 204 func (repository *DividendsEstimateRepository) UpdateMany(dividendsEstimates []*domain.DividendsEstimate) ([]*domain.DividendsEstimate, error) {
166 tx := repository.transactionContext.PgTx 205 tx := repository.transactionContext.PgTx
167 var dividendsEstimateModels []*models.DividendsEstimate 206 var dividendsEstimateModels []*models.DividendsEstimate