正在显示
4 个修改的文件
包含
73 行增加
和
7 行删除
| @@ -10,10 +10,10 @@ import ( | @@ -10,10 +10,10 @@ import ( | ||
| 10 | 10 | ||
| 11 | // ConfirmMoneyIncentivesEstimateCommand 确定金额激励分红预算 | 11 | // ConfirmMoneyIncentivesEstimateCommand 确定金额激励分红预算 |
| 12 | type ConfirmMoneyIncentivesEstimateCommand struct { | 12 | type ConfirmMoneyIncentivesEstimateCommand struct { |
| 13 | - // 共创合约ID列表 | ||
| 14 | - CooperationContractIds []string `cname:"共创合约ID列表" json:"cooperationContractIds" valid:"Required"` | 13 | + // 共创合约ID |
| 14 | + CooperationContractId string `cname:"共创合约ID" json:"cooperationContractId" valid:"Required"` | ||
| 15 | // 分红阶段 | 15 | // 分红阶段 |
| 16 | - DividendsIncentivesStage int64 `cname:"分红阶段" json:"dividendsIncentivesStage,string" valid:"Required"` | 16 | + DividendsIncentivesStage int32 `cname:"分红阶段" json:"dividendsIncentivesStage,string" valid:"Required"` |
| 17 | // 承接人UID | 17 | // 承接人UID |
| 18 | UndertakerUids []string `cname:"承接人UID列表" json:"undertakerUids" valid:"Required"` | 18 | UndertakerUids []string `cname:"承接人UID列表" json:"undertakerUids" valid:"Required"` |
| 19 | // 公司ID,通过集成REST上下文获取 | 19 | // 公司ID,通过集成REST上下文获取 |
| @@ -604,10 +604,51 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmMoneyIncentives | @@ -604,10 +604,51 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmMoneyIncentives | ||
| 604 | defer func() { | 604 | defer func() { |
| 605 | _ = transactionContext.RollbackTransaction() | 605 | _ = transactionContext.RollbackTransaction() |
| 606 | }() | 606 | }() |
| 607 | - if err := transactionContext.CommitTransaction(); err != nil { | 607 | + |
| 608 | + // 初始化确认金额激励分红预算领域服务 | ||
| 609 | + var confirmMoneyIncentivesEstimateService service.ConfirmMoneyIncentivesEstimateService | ||
| 610 | + if value, err := factory.CreateConfirmMoneyIncentivesEstimateService(map[string]interface{}{ | ||
| 611 | + "transactionContext": transactionContext, | ||
| 612 | + }); err != nil { | ||
| 613 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 614 | + } else { | ||
| 615 | + confirmMoneyIncentivesEstimateService = value | ||
| 616 | + _ = confirmMoneyIncentivesEstimateService.Subscribe(&subscriber.DividendsEstimateSubscriber{ | ||
| 617 | + TransactionContext: transactionContext.(*pgTransaction.TransactionContext), | ||
| 618 | + }) | ||
| 619 | + } | ||
| 620 | + | ||
| 621 | + // 共创合约仓储初始化 | ||
| 622 | + var cooperationContractRepository domain.CooperationContractRepository | ||
| 623 | + if value, err := factory.CreateCooperationContractRepository(map[string]interface{}{ | ||
| 624 | + "transactionContext": transactionContext, | ||
| 625 | + }); err != nil { | ||
| 626 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 627 | + } else { | ||
| 628 | + cooperationContractRepository = value | ||
| 629 | + } | ||
| 630 | + | ||
| 631 | + cooperationContractId, _ := strconv.ParseInt(confirmMoneyIncentivesEstimateCommand.CooperationContractId, 10, 64) | ||
| 632 | + undertakerUIDs, _ := utils.SliceAtoi(confirmMoneyIncentivesEstimateCommand.UndertakerUids) | ||
| 633 | + | ||
| 634 | + // 获取共创合约 | ||
| 635 | + cooperationContract, err := cooperationContractRepository.FindOne(map[string]interface{}{"cooperationContractId": cooperationContractId}) | ||
| 636 | + if err != nil { | ||
| 637 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 638 | + } | ||
| 639 | + if cooperationContract == nil { | ||
| 640 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", strconv.FormatInt(cooperationContractId, 10))) | ||
| 641 | + } | ||
| 642 | + | ||
| 643 | + // 共创合约预算 | ||
| 644 | + if dividendsEstimateDetails, err2 := confirmMoneyIncentivesEstimateService.Confirm(cooperationContract, int64(confirmMoneyIncentivesEstimateCommand.DividendsIncentivesStage), undertakerUIDs); err2 != nil { | ||
| 645 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err2.Error()) | ||
| 646 | + } else { | ||
| 647 | + if err3 := transactionContext.CommitTransaction(); err3 != nil { | ||
| 608 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 648 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
| 609 | } | 649 | } |
| 610 | - return nil, nil | 650 | + return dividendsEstimateDetails, nil |
| 651 | + } | ||
| 611 | } | 652 | } |
| 612 | 653 | ||
| 613 | // GetDividendsEstimate 返回分红预算单详情 | 654 | // GetDividendsEstimate 返回分红预算单详情 |
| 1 | package service | 1 | package service |
| 2 | 2 | ||
| 3 | -import coreDomain "github.com/linmadan/egglib-go/core/domain" | 3 | +import ( |
| 4 | + coreDomain "github.com/linmadan/egglib-go/core/domain" | ||
| 5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain" | ||
| 6 | +) | ||
| 4 | 7 | ||
| 5 | type ConfirmMoneyIncentivesEstimateService interface { | 8 | type ConfirmMoneyIncentivesEstimateService interface { |
| 6 | coreDomain.DomainEventPublisher | 9 | coreDomain.DomainEventPublisher |
| 7 | - Confirm() | 10 | + Confirm(contract *domain.CooperationContract, stage int64, undertakerUIDs []int64) ([]*DividendsEstimateDetail, error) |
| 8 | } | 11 | } |
| @@ -4,6 +4,9 @@ import ( | @@ -4,6 +4,9 @@ import ( | ||
| 4 | "fmt" | 4 | "fmt" |
| 5 | coreDomain "github.com/linmadan/egglib-go/core/domain" | 5 | coreDomain "github.com/linmadan/egglib-go/core/domain" |
| 6 | pgTransaction "github.com/linmadan/egglib-go/transaction/pg" | 6 | pgTransaction "github.com/linmadan/egglib-go/transaction/pg" |
| 7 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain" | ||
| 8 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain/service" | ||
| 9 | + "time" | ||
| 7 | ) | 10 | ) |
| 8 | 11 | ||
| 9 | type ConfirmMoneyIncentivesEstimateService struct { | 12 | type ConfirmMoneyIncentivesEstimateService struct { |
| @@ -11,6 +14,25 @@ type ConfirmMoneyIncentivesEstimateService struct { | @@ -11,6 +14,25 @@ type ConfirmMoneyIncentivesEstimateService struct { | ||
| 11 | transactionContext *pgTransaction.TransactionContext | 14 | transactionContext *pgTransaction.TransactionContext |
| 12 | } | 15 | } |
| 13 | 16 | ||
| 17 | +func (domainService *ConfirmMoneyIncentivesEstimateService) Confirm(contract *domain.CooperationContract, stage int64, undertakerUIDs []int64) ([]*service.DividendsEstimateDetail, error) { | ||
| 18 | + var dividendsEstimateDetails []*service.DividendsEstimateDetail | ||
| 19 | + // 获取金额激励规则 | ||
| 20 | + var moneyIncentivesRuleMatched *domain.MoneyIncentivesRule | ||
| 21 | + for _, moneyIncentivesRule := range contract.MoneyIncentivesRules { | ||
| 22 | + if moneyIncentivesRule.MoneyIncentivesStage == stage { | ||
| 23 | + moneyIncentivesRuleMatched = moneyIncentivesRule | ||
| 24 | + break | ||
| 25 | + } | ||
| 26 | + } | ||
| 27 | + // 判断分红阶段时间 | ||
| 28 | + currentTime := time.Now() | ||
| 29 | + if moneyIncentivesRuleMatched.MoneyIncentivesStageStart.After(currentTime) { | ||
| 30 | + return nil, fmt.Errorf("还未到分红时间") | ||
| 31 | + } | ||
| 32 | + // TODO 判断承接人在当前阶段是否已经分红 | ||
| 33 | + return dividendsEstimateDetails, nil | ||
| 34 | +} | ||
| 35 | + | ||
| 14 | func NewConfirmMoneyIncentivesEstimateService(transactionContext *pgTransaction.TransactionContext) (*ConfirmMoneyIncentivesEstimateService, error) { | 36 | func NewConfirmMoneyIncentivesEstimateService(transactionContext *pgTransaction.TransactionContext) (*ConfirmMoneyIncentivesEstimateService, error) { |
| 15 | if transactionContext == nil { | 37 | if transactionContext == nil { |
| 16 | return nil, fmt.Errorf("transactionContext参数不能为空") | 38 | return nil, fmt.Errorf("transactionContext参数不能为空") |
-
请 注册 或 登录 后发表评论