正在显示
8 个修改的文件
包含
152 行增加
和
4 行删除
@@ -44,6 +44,7 @@ type DividendsOrder struct { | @@ -44,6 +44,7 @@ type DividendsOrder struct { | ||
44 | 44 | ||
45 | type DividendsOrderRepository interface { | 45 | type DividendsOrderRepository interface { |
46 | Save(dividendsOrder *DividendsOrder) (*DividendsOrder, error) | 46 | Save(dividendsOrder *DividendsOrder) (*DividendsOrder, error) |
47 | + UpdateMany(dividendsOrders []*DividendsOrder) ([]*DividendsOrder, error) | ||
47 | Remove(dividendsOrder *DividendsOrder) (*DividendsOrder, error) | 48 | Remove(dividendsOrder *DividendsOrder) (*DividendsOrder, error) |
48 | BatchRemove(dividendsOrders []*DividendsOrder) ([]*DividendsOrder, error) | 49 | BatchRemove(dividendsOrders []*DividendsOrder) ([]*DividendsOrder, error) |
49 | FindOne(queryOptions map[string]interface{}) (*DividendsOrder, error) | 50 | FindOne(queryOptions map[string]interface{}) (*DividendsOrder, error) |
@@ -48,6 +48,7 @@ type DividendsReturnedOrder struct { | @@ -48,6 +48,7 @@ type DividendsReturnedOrder struct { | ||
48 | 48 | ||
49 | type DividendsReturnedOrderRepository interface { | 49 | type DividendsReturnedOrderRepository interface { |
50 | Save(dividendsReturnedOrder *DividendsReturnedOrder) (*DividendsReturnedOrder, error) | 50 | Save(dividendsReturnedOrder *DividendsReturnedOrder) (*DividendsReturnedOrder, error) |
51 | + UpdateMany(dividendsReturnedOrder []*DividendsReturnedOrder) ([]*DividendsReturnedOrder, error) | ||
51 | Remove(dividendsReturnedOrder *DividendsReturnedOrder) (*DividendsReturnedOrder, error) | 52 | Remove(dividendsReturnedOrder *DividendsReturnedOrder) (*DividendsReturnedOrder, error) |
52 | BatchRemove(dividendsReturnedOrders []*DividendsReturnedOrder) ([]*DividendsReturnedOrder, error) | 53 | BatchRemove(dividendsReturnedOrders []*DividendsReturnedOrder) ([]*DividendsReturnedOrder, error) |
53 | FindOne(queryOptions map[string]interface{}) (*DividendsReturnedOrder, error) | 54 | FindOne(queryOptions map[string]interface{}) (*DividendsReturnedOrder, error) |
@@ -7,5 +7,5 @@ import ( | @@ -7,5 +7,5 @@ import ( | ||
7 | 7 | ||
8 | type CancelDividendsEstimate interface { | 8 | type CancelDividendsEstimate interface { |
9 | coreDomain.DomainEventPublisher | 9 | coreDomain.DomainEventPublisher |
10 | - CancelEstimate(dividendsEstimateId int64, operatorId int64) ([]*domain.DividendsEstimate, error) | 10 | + CancelEstimate(dividendsEstimateIds []int64, operatorId int64) ([]*domain.DividendsEstimate, error) |
11 | } | 11 | } |
@@ -2,9 +2,13 @@ package domain_service | @@ -2,9 +2,13 @@ package domain_service | ||
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | "fmt" | 4 | "fmt" |
5 | + "github.com/linmadan/egglib-go/core/application" | ||
5 | coreDomain "github.com/linmadan/egglib-go/core/domain" | 6 | coreDomain "github.com/linmadan/egglib-go/core/domain" |
6 | pgTransaction "github.com/linmadan/egglib-go/transaction/pg" | 7 | 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" |
9 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain/service" | ||
10 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/repository" | ||
11 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/utils" | ||
8 | ) | 12 | ) |
9 | 13 | ||
10 | type CancelDividendsEstimateService struct { | 14 | type CancelDividendsEstimateService struct { |
@@ -12,7 +16,126 @@ type CancelDividendsEstimateService struct { | @@ -12,7 +16,126 @@ type CancelDividendsEstimateService struct { | ||
12 | transactionContext *pgTransaction.TransactionContext | 16 | transactionContext *pgTransaction.TransactionContext |
13 | } | 17 | } |
14 | 18 | ||
15 | -func (domainService *CancelDividendsEstimateService) CancelEstimate(dividendsEstimateId int64, operatorId int64) ([]*domain.DividendsEstimate, error) { | 19 | +func (domainService *CancelDividendsEstimateService) CancelEstimate(dividendsEstimateIds []int64, operatorId int64) ([]*domain.DividendsEstimate, error) { |
20 | + var dividendsEstimateRepository domain.DividendsEstimateRepository // 分红预算单仓储 | ||
21 | + var dividendsOrderRepository domain.DividendsOrderRepository // 分红订单仓储 | ||
22 | + var dividendsReturnedOrderRepository domain.DividendsReturnedOrderRepository // 分红退货单仓储 | ||
23 | + var userService service.UserService // 用户服务 | ||
24 | + | ||
25 | + // 分红预算单仓储初始化 | ||
26 | + if repo, err := repository.NewDividendsEstimateRepository(domainService.transactionContext); err != nil { | ||
27 | + return nil, err | ||
28 | + } else { | ||
29 | + dividendsEstimateRepository = repo | ||
30 | + } | ||
31 | + // 分红订单仓储初始化 | ||
32 | + if repo, err := repository.NewDividendsOrderRepository(domainService.transactionContext); err != nil { | ||
33 | + return nil, err | ||
34 | + } else { | ||
35 | + dividendsOrderRepository = repo | ||
36 | + } | ||
37 | + // 分红退后单仓储初始化 | ||
38 | + if repo, err := repository.NewDividendsReturnedOrderRepository(domainService.transactionContext); err != nil { | ||
39 | + return nil, err | ||
40 | + } else { | ||
41 | + dividendsReturnedOrderRepository = repo | ||
42 | + } | ||
43 | + // 用户服务初始化 | ||
44 | + if value, err := NewUserService(); err != nil { | ||
45 | + userService = value | ||
46 | + } | ||
47 | + | ||
48 | + // 获取操作人 | ||
49 | + var operator *domain.User | ||
50 | + if data, err := userService.OperatorFrom(0, 0, operatorId); err != nil { | ||
51 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
52 | + } else { | ||
53 | + operator = data | ||
54 | + } | ||
55 | + | ||
56 | + // 获取分红预算单 | ||
57 | + if count, dividendsEstimates, err := dividendsEstimateRepository.Find(map[string]interface{}{ | ||
58 | + "dividendsEstimateIds": dividendsEstimateIds, | ||
59 | + }); err != nil { | ||
60 | + return nil, err | ||
61 | + } else { | ||
62 | + if count > 0 { | ||
63 | + var dividendsEstimatesCanceled []*domain.DividendsEstimate | ||
64 | + var orderOrReturnOrderNums []string | ||
65 | + for _, dividendsEstimate := range dividendsEstimates { | ||
66 | + // 根据当前分红预算单的分红订单号或退货单号获取分红预算单 | ||
67 | + if countRelative, dividendsEstimatesRelative, err2 := dividendsEstimateRepository.Find(map[string]interface{}{ | ||
68 | + "orderOrReturnedOrderNum": dividendsEstimate.OrderOrReturnedOrderNum, | ||
69 | + }); err2 != nil { | ||
70 | + return nil, err2 | ||
71 | + } else { | ||
72 | + if countRelative > 0 { | ||
73 | + for i, _ := range dividendsEstimatesRelative { | ||
74 | + dividendsEstimatesRelative[i].IsCanceled = true | ||
75 | + dividendsEstimatesRelative[i].Operator = operator | ||
76 | + // 获取相关订单/退货单号 | ||
77 | + orderOrReturnOrderNums = append(orderOrReturnOrderNums, dividendsEstimatesRelative[i].OrderOrReturnedOrderNum) | ||
78 | + } | ||
79 | + dividendsEstimatesRelativeCanceled, err3 := dividendsEstimateRepository.UpdateMany(dividendsEstimatesRelative) | ||
80 | + if err3 != nil { | ||
81 | + return nil, err3 | ||
82 | + } | ||
83 | + dividendsEstimatesCanceled = append(dividendsEstimatesCanceled, dividendsEstimatesRelativeCanceled...) | ||
84 | + } | ||
85 | + } | ||
86 | + } | ||
87 | + | ||
88 | + // 分红订单或分红退货单状态变更 | ||
89 | + var orderNums []string | ||
90 | + var returnedOrderNums []string | ||
91 | + | ||
92 | + // 订单/退货单号数组去重 | ||
93 | + orderOrReturnOrderNumsWithoutDup := utils.RemoveDuplication(orderOrReturnOrderNums) | ||
94 | + for _, orderNullNum := range orderOrReturnOrderNumsWithoutDup { | ||
95 | + if orderNullNum[0:2] == "RE" { // 分红退后单 | ||
96 | + returnedOrderNums = append(returnedOrderNums, orderNullNum) | ||
97 | + } else if orderNullNum[0:2] == "FH" { // 分红订单 | ||
98 | + orderNums = append(orderNums, orderNullNum) | ||
99 | + } | ||
100 | + } | ||
101 | + | ||
102 | + // 获取分红订单 | ||
103 | + if countDividendsOrder, orders, err4 := dividendsOrderRepository.Find(map[string]interface{}{ | ||
104 | + "dividendsOrderNumbers": orderNums, | ||
105 | + }); err4 != nil { | ||
106 | + return nil, err4 | ||
107 | + } else { | ||
108 | + if countDividendsOrder > 0 { | ||
109 | + for i, _ := range orders { | ||
110 | + orders[i].DividendStatus = 1 | ||
111 | + } | ||
112 | + // 保存订单状态 | ||
113 | + if _, err6 := dividendsOrderRepository.UpdateMany(orders); err6 != nil { | ||
114 | + return nil, err6 | ||
115 | + } | ||
116 | + } | ||
117 | + } | ||
118 | + | ||
119 | + // 获取分红退货单 | ||
120 | + if countDividendsReturnedOrder, returnedOrders, err5 := dividendsReturnedOrderRepository.Find(map[string]interface{}{ | ||
121 | + "dividendsReturnedOrderNumbers": returnedOrderNums, | ||
122 | + }); err5 != nil { | ||
123 | + return nil, err5 | ||
124 | + } else { | ||
125 | + if countDividendsReturnedOrder > 0 { | ||
126 | + for i, _ := range returnedOrders { | ||
127 | + returnedOrders[i].DividendStatus = 1 | ||
128 | + } | ||
129 | + // 保存退货单状态 | ||
130 | + if _, err7 := dividendsReturnedOrderRepository.UpdateMany(returnedOrders); err7 != nil { | ||
131 | + return nil, err7 | ||
132 | + } | ||
133 | + } | ||
134 | + } | ||
135 | + | ||
136 | + return dividendsEstimatesCanceled, nil | ||
137 | + } | ||
138 | + } | ||
16 | return nil, nil | 139 | return nil, nil |
17 | } | 140 | } |
18 | 141 |
@@ -32,12 +32,13 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo | @@ -32,12 +32,13 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo | ||
32 | } else { | 32 | } else { |
33 | dividendsOrderRepository = repo | 33 | dividendsOrderRepository = repo |
34 | } | 34 | } |
35 | - // 分红退后单仓储初始化 | 35 | + // 分红退货单仓储初始化 |
36 | if repo, err := repository.NewDividendsReturnedOrderRepository(domainService.transactionContext); err != nil { | 36 | if repo, err := repository.NewDividendsReturnedOrderRepository(domainService.transactionContext); err != nil { |
37 | return nil, err | 37 | return nil, err |
38 | } else { | 38 | } else { |
39 | dividendsReturnedOrderRepository = repo | 39 | dividendsReturnedOrderRepository = repo |
40 | } | 40 | } |
41 | + // 确认业绩分红预算 | ||
41 | var dividendsEstimateDetails []*service.DividendsEstimateDetail | 42 | var dividendsEstimateDetails []*service.DividendsEstimateDetail |
42 | for _, orderGood := range orderGoods { | 43 | for _, orderGood := range orderGoods { |
43 | // 获取合约 | 44 | // 获取合约 |
@@ -251,6 +251,10 @@ func (repository *DividendsOrderRepository) Save(dividendsOrder *domain.Dividend | @@ -251,6 +251,10 @@ func (repository *DividendsOrderRepository) Save(dividendsOrder *domain.Dividend | ||
251 | return dividendsOrder, nil | 251 | return dividendsOrder, nil |
252 | } | 252 | } |
253 | 253 | ||
254 | +func (repository *DividendsOrderRepository) UpdateMany(dividendsOrders []*domain.DividendsOrder) ([]*domain.DividendsOrder, error) { | ||
255 | + panic("implement me") | ||
256 | +} | ||
257 | + | ||
254 | func (repository *DividendsOrderRepository) Remove(dividendsOrder *domain.DividendsOrder) (*domain.DividendsOrder, error) { | 258 | func (repository *DividendsOrderRepository) Remove(dividendsOrder *domain.DividendsOrder) (*domain.DividendsOrder, error) { |
255 | tx := repository.transactionContext.PgTx | 259 | tx := repository.transactionContext.PgTx |
256 | dividendsOrderModel := new(models.DividendsOrder) | 260 | dividendsOrderModel := new(models.DividendsOrder) |
@@ -263,6 +263,10 @@ func (repository *DividendsReturnedOrderRepository) Save(dividendsReturnedOrder | @@ -263,6 +263,10 @@ func (repository *DividendsReturnedOrderRepository) Save(dividendsReturnedOrder | ||
263 | return dividendsReturnedOrder, nil | 263 | return dividendsReturnedOrder, nil |
264 | } | 264 | } |
265 | 265 | ||
266 | +func (repository *DividendsReturnedOrderRepository) UpdateMany(dividendsReturnedOrder []*domain.DividendsReturnedOrder) ([]*domain.DividendsReturnedOrder, error) { | ||
267 | + panic("implement me") | ||
268 | +} | ||
269 | + | ||
266 | func (repository *DividendsReturnedOrderRepository) Remove(dividendsReturnedOrder *domain.DividendsReturnedOrder) (*domain.DividendsReturnedOrder, error) { | 270 | func (repository *DividendsReturnedOrderRepository) Remove(dividendsReturnedOrder *domain.DividendsReturnedOrder) (*domain.DividendsReturnedOrder, error) { |
267 | tx := repository.transactionContext.PgTx | 271 | tx := repository.transactionContext.PgTx |
268 | dividendsReturnedOrderModel := new(models.DividendsReturnedOrder) | 272 | dividendsReturnedOrderModel := new(models.DividendsReturnedOrder) |
@@ -96,7 +96,21 @@ func NumberToCNNumber(num int) string { | @@ -96,7 +96,21 @@ func NumberToCNNumber(num int) string { | ||
96 | chinese = copyChinese | 96 | chinese = copyChinese |
97 | } | 97 | } |
98 | } | 98 | } |
99 | - | ||
100 | return "第" + chinese + "阶段" | 99 | return "第" + chinese + "阶段" |
100 | +} | ||
101 | 101 | ||
102 | +// RemoveDuplication 数组去重 | ||
103 | +func RemoveDuplication(arr []string) []string { | ||
104 | + set := make(map[string]struct{}, len(arr)) | ||
105 | + j := 0 | ||
106 | + for _, v := range arr { | ||
107 | + _, ok := set[v] | ||
108 | + if ok { | ||
109 | + continue | ||
110 | + } | ||
111 | + set[v] = struct{}{} | ||
112 | + arr[j] = v | ||
113 | + j++ | ||
114 | + } | ||
115 | + return arr[:j] | ||
102 | } | 116 | } |
-
请 注册 或 登录 后发表评论