正在显示
8 个修改的文件
包含
97 行增加
和
19 行删除
@@ -387,6 +387,7 @@ func (cooperationContractService *CooperationContractService) CreateCooperationC | @@ -387,6 +387,7 @@ func (cooperationContractService *CooperationContractService) CreateCooperationC | ||
387 | CreatedAt: time.Now(), | 387 | CreatedAt: time.Now(), |
388 | DeletedAt: time.Time{}, | 388 | DeletedAt: time.Time{}, |
389 | UpdatedAt: time.Time{}, | 389 | UpdatedAt: time.Time{}, |
390 | + CooperationProjectId: cooperationProject.CooperationProjectId, | ||
390 | } | 391 | } |
391 | 392 | ||
392 | // 共创合约仓储初始化 | 393 | // 共创合约仓储初始化 |
@@ -77,6 +77,8 @@ type CooperationContract struct { | @@ -77,6 +77,8 @@ type CooperationContract struct { | ||
77 | DeletedAt time.Time `json:"deletedAt"` | 77 | DeletedAt time.Time `json:"deletedAt"` |
78 | // 更新时间 | 78 | // 更新时间 |
79 | UpdatedAt time.Time `json:"updatedAt"` | 79 | UpdatedAt time.Time `json:"updatedAt"` |
80 | + // 共创项目编号 | ||
81 | + CooperationProjectId int64 `json:"cooperationProjectId"` | ||
80 | } | 82 | } |
81 | 83 | ||
82 | type CooperationContractRepository interface { | 84 | type CooperationContractRepository interface { |
@@ -175,3 +177,20 @@ func (cooperationContract *CooperationContract) MoneyIncentivesRuleSliceEqualBCE | @@ -175,3 +177,20 @@ func (cooperationContract *CooperationContract) MoneyIncentivesRuleSliceEqualBCE | ||
175 | } | 177 | } |
176 | return true | 178 | return true |
177 | } | 179 | } |
180 | + | ||
181 | +func CooperationContractsToProjectIds(contracts []*CooperationContract) []int64 { | ||
182 | + var projectIds = make([]int64, 0) | ||
183 | + for i := range contracts { | ||
184 | + var exist = false | ||
185 | + for j := range projectIds { | ||
186 | + if contracts[i].CooperationProjectId == projectIds[j] { | ||
187 | + exist = true | ||
188 | + break | ||
189 | + } | ||
190 | + } | ||
191 | + if !exist { | ||
192 | + projectIds = append(projectIds, contracts[i].CooperationProjectId) | ||
193 | + } | ||
194 | + } | ||
195 | + return projectIds | ||
196 | +} |
@@ -91,3 +91,28 @@ func (cooperationProject *CooperationProject) Update(data map[string]interface{} | @@ -91,3 +91,28 @@ func (cooperationProject *CooperationProject) Update(data map[string]interface{} | ||
91 | cooperationProject.UpdatedAt = time.Now() | 91 | cooperationProject.UpdatedAt = time.Now() |
92 | return nil | 92 | return nil |
93 | } | 93 | } |
94 | + | ||
95 | +func CooperationProjectsToMap(queryOptions map[string]interface{}, find func(queryOptions map[string]interface{}) (int64, []*CooperationProject, error)) (map[int64]*CooperationProject, error) { | ||
96 | + var result = make(map[int64]*CooperationProject) | ||
97 | + _, projects, err := find(queryOptions) | ||
98 | + if err != nil { | ||
99 | + return nil, err | ||
100 | + } | ||
101 | + for i := range projects { | ||
102 | + result[projects[i].CooperationProjectId] = projects[i] | ||
103 | + } | ||
104 | + return result, nil | ||
105 | +} | ||
106 | + | ||
107 | +func (cooperationProject *CooperationProject) CloneSimple() interface{} { | ||
108 | + var mapResult = map[string]interface{}{ | ||
109 | + "cooperationProjectId": cooperationProject.CooperationProjectId, | ||
110 | + "cooperationProjectName": cooperationProject.CooperationProjectName, | ||
111 | + "cooperationProjectDescription": cooperationProject.CooperationProjectDescription, | ||
112 | + "updatedAt": cooperationProject.UpdatedAt.Unix() * 1000, | ||
113 | + } | ||
114 | + if cooperationProject.UpdatedAt.Unix() < 0 { | ||
115 | + mapResult["updatedAt"] = cooperationProject.CreatedAt.Unix() * 1000 | ||
116 | + } | ||
117 | + return mapResult | ||
118 | +} |
@@ -107,6 +107,18 @@ func (ptr *CooperationStatisticsService) SearchContractDividends(queryOptions ma | @@ -107,6 +107,18 @@ func (ptr *CooperationStatisticsService) SearchContractDividends(queryOptions ma | ||
107 | return nil, err | 107 | return nil, err |
108 | } | 108 | } |
109 | 109 | ||
110 | + // 1.1 个人返回合约对应的项目 | ||
111 | + | ||
112 | + var mapProject = make(map[int64]*domain.CooperationProject) | ||
113 | + var projectIds = domain.CooperationContractsToProjectIds(contracts) | ||
114 | + if request.UserBaseId > 0 && len(projectIds) > 0 { | ||
115 | + cooperationProjectRepository, _ := repository.NewCooperationProjectRepository(ptr.transactionContext) | ||
116 | + mapProject, err = domain.CooperationProjectsToMap(map[string]interface{}{"cooperationProjectIds": projectIds}, cooperationProjectRepository.Find) | ||
117 | + if err != nil { | ||
118 | + return nil, err | ||
119 | + } | ||
120 | + } | ||
121 | + | ||
110 | // 2.根据合约查询分红预算 | 122 | // 2.根据合约查询分红预算 |
111 | orderGoodDao, _ := dao.NewDividendsOrderDao(ptr.transactionContext) | 123 | orderGoodDao, _ := dao.NewDividendsOrderDao(ptr.transactionContext) |
112 | dividendsEstimateDao, _ := dao.NewDividendsEstimateDao(ptr.transactionContext) | 124 | dividendsEstimateDao, _ := dao.NewDividendsEstimateDao(ptr.transactionContext) |
@@ -123,20 +135,12 @@ func (ptr *CooperationStatisticsService) SearchContractDividends(queryOptions ma | @@ -123,20 +135,12 @@ func (ptr *CooperationStatisticsService) SearchContractDividends(queryOptions ma | ||
123 | } | 135 | } |
124 | resultItem.DividendsOrderAmount, _ = orderGoodDao.CalculateGoodOrderAmount(map[string]interface{}{"orgId": request.OrgId, "cooperationContractNumbers": []string{item.CooperationContractNumber}}) | 136 | resultItem.DividendsOrderAmount, _ = orderGoodDao.CalculateGoodOrderAmount(map[string]interface{}{"orgId": request.OrgId, "cooperationContractNumbers": []string{item.CooperationContractNumber}}) |
125 | resultItem.DividendsAmount, _ = dividendsEstimateDao.CountDividendsEstimateDividendsAmount(map[string]interface{}{"orgId": request.OrgId, "userBaseId": request.UserBaseId, "cooperationContractNumbers": []string{item.CooperationContractNumber}}) | 137 | resultItem.DividendsAmount, _ = dividendsEstimateDao.CountDividendsEstimateDividendsAmount(map[string]interface{}{"orgId": request.OrgId, "userBaseId": request.UserBaseId, "cooperationContractNumbers": []string{item.CooperationContractNumber}}) |
126 | - | 138 | + if v, ok := mapProject[item.CooperationProjectId]; ok { |
139 | + resultItem.Project = v.CloneSimple() | ||
140 | + } | ||
127 | results = append(results, resultItem) | 141 | results = append(results, resultItem) |
128 | numbers = append(numbers, item.CooperationContractNumber) | 142 | numbers = append(numbers, item.CooperationContractNumber) |
129 | } | 143 | } |
130 | - //mapCreditAccount, err := ptr.getContractsCreditAccount(numbers) | ||
131 | - //if err != nil { | ||
132 | - // return nil, err | ||
133 | - //} | ||
134 | - //for i := range results { | ||
135 | - // if v, ok := mapCreditAccount[results[i].CooperationContractNumber]; ok { | ||
136 | - // results[i].DividendsAmount = v.SettlementAmount | ||
137 | - // results[i].DividendsOrderAmount = v.GoodAmountCount | ||
138 | - // } | ||
139 | - //} | ||
140 | return results, nil | 144 | return results, nil |
141 | } | 145 | } |
142 | 146 | ||
@@ -273,6 +277,8 @@ type searchContractDividendsResult struct { | @@ -273,6 +277,8 @@ type searchContractDividendsResult struct { | ||
273 | DividendsOrderAmount float64 `json:"dividendsOrderAmount"` | 277 | DividendsOrderAmount float64 `json:"dividendsOrderAmount"` |
274 | // 创建时间 | 278 | // 创建时间 |
275 | CreatedAt int64 `json:"createdAt"` | 279 | CreatedAt int64 `json:"createdAt"` |
280 | + // 共创项目数据 | ||
281 | + Project interface{} `json:"project"` | ||
276 | } | 282 | } |
277 | 283 | ||
278 | /*1.2 分红合约详情*/ | 284 | /*1.2 分红合约详情*/ |
@@ -306,7 +312,7 @@ func (ptr *CooperationStatisticsService) GetContractDividends(queryOptions map[s | @@ -306,7 +312,7 @@ func (ptr *CooperationStatisticsService) GetContractDividends(queryOptions map[s | ||
306 | if err != nil { | 312 | if err != nil { |
307 | return nil, err | 313 | return nil, err |
308 | } | 314 | } |
309 | - res["cooperationContract"] = map[string]interface{}{ | 315 | + mapContract := map[string]interface{}{ |
310 | "cooperationContractDescription": contract.CooperationContractDescription, | 316 | "cooperationContractDescription": contract.CooperationContractDescription, |
311 | "cooperationContractId": contract.CooperationContractId, | 317 | "cooperationContractId": contract.CooperationContractId, |
312 | "cooperationContractName": contract.CooperationContractName, | 318 | "cooperationContractName": contract.CooperationContractName, |
@@ -314,21 +320,36 @@ func (ptr *CooperationStatisticsService) GetContractDividends(queryOptions map[s | @@ -314,21 +320,36 @@ func (ptr *CooperationStatisticsService) GetContractDividends(queryOptions map[s | ||
314 | "createdAt": contract.CreatedAt.Unix() * 1000, | 320 | "createdAt": contract.CreatedAt.Unix() * 1000, |
315 | "status": contract.Status, | 321 | "status": contract.Status, |
316 | } | 322 | } |
323 | + if request.UserBaseId > 0 { | ||
324 | + // 1.1.合约第一条合同的附件 | ||
325 | + undertakerRepository, _ := repository.NewCooperationContractUndertakerRepository(ptr.transactionContext) | ||
326 | + _, undertakers, err := undertakerRepository.Find(map[string]interface{}{"cooperationContractId": contract.CooperationContractId, "userBaseId": request.UserBaseId, "companyId": contract.Company.CompanyId, "orgId": contract.Org.OrgId, "offsetLimit": false}) | ||
327 | + if err != nil { | ||
328 | + return nil, err | ||
329 | + } | ||
330 | + for i := range undertakers { | ||
331 | + if len(undertakers[i].Undertaker.ContractAttachment) > 0 && len(undertakers[i].Undertaker.ContractAttachment[0].Url) > 0 { | ||
332 | + mapContract["contractAttachment"] = undertakers[i].Undertaker.ContractAttachment[0] | ||
333 | + } | ||
334 | + } | ||
335 | + } | ||
336 | + | ||
337 | + res["cooperationContract"] = mapContract | ||
317 | 338 | ||
318 | // 2.合约分红列表 | 339 | // 2.合约分红列表 |
319 | - creditAccountRepository, _ := repository.NewDividendsEstimateRepository(ptr.transactionContext) | 340 | + dividendsEstimateRepository, _ := repository.NewDividendsEstimateRepository(ptr.transactionContext) |
320 | queryOptions["cooperationContractNumber"] = contract.CooperationContractNumber | 341 | queryOptions["cooperationContractNumber"] = contract.CooperationContractNumber |
321 | queryOptions["orgId"] = contract.Org.OrgId | 342 | queryOptions["orgId"] = contract.Org.OrgId |
322 | queryOptions["isCanceled"] = false | 343 | queryOptions["isCanceled"] = false |
323 | - _, creditAccounts, err := creditAccountRepository.Find(queryOptions) | 344 | + _, dividendsEstimates, err := dividendsEstimateRepository.Find(queryOptions) |
324 | if err != nil { | 345 | if err != nil { |
325 | return res, err | 346 | return res, err |
326 | } | 347 | } |
327 | 348 | ||
328 | // 3.取订单商品列表 | 349 | // 3.取订单商品列表 |
329 | var orderGoodIds []int64 | 350 | var orderGoodIds []int64 |
330 | - for i := range creditAccounts { | ||
331 | - a := creditAccounts[i] | 351 | + for i := range dividendsEstimates { |
352 | + a := dividendsEstimates[i] | ||
332 | orderGoodIds = append(orderGoodIds, a.OrderGoodId) | 353 | orderGoodIds = append(orderGoodIds, a.OrderGoodId) |
333 | } | 354 | } |
334 | var mapOrderGoods = make(map[int64]*domain.OrderGood) | 355 | var mapOrderGoods = make(map[int64]*domain.OrderGood) |
@@ -344,14 +365,14 @@ func (ptr *CooperationStatisticsService) GetContractDividends(queryOptions map[s | @@ -344,14 +365,14 @@ func (ptr *CooperationStatisticsService) GetContractDividends(queryOptions map[s | ||
344 | } | 365 | } |
345 | 366 | ||
346 | var dividends = make([]interface{}, 0) | 367 | var dividends = make([]interface{}, 0) |
347 | - for i := range creditAccounts { | ||
348 | - a := creditAccounts[i] | 368 | + for i := range dividendsEstimates { |
369 | + a := dividendsEstimates[i] | ||
349 | // 个人查看的时候只查看自己的分红明细 | 370 | // 个人查看的时候只查看自己的分红明细 |
350 | //if request.UserBaseId!=0 && a.DividendsUser.UserBaseId!=request.UserBaseId{ | 371 | //if request.UserBaseId!=0 && a.DividendsUser.UserBaseId!=request.UserBaseId{ |
351 | // continue | 372 | // continue |
352 | //} | 373 | //} |
353 | item := map[string]interface{}{ | 374 | item := map[string]interface{}{ |
354 | - "creditAccountId": a.DividendsEstimateId, | 375 | + "dividendsEstimateId": a.DividendsEstimateId, |
355 | "orderGoodName": "", | 376 | "orderGoodName": "", |
356 | "dividendsType": a.DividendsType, | 377 | "dividendsType": a.DividendsType, |
357 | "dividendsRatio": 0, | 378 | "dividendsRatio": 0, |
@@ -364,6 +385,7 @@ func (ptr *CooperationStatisticsService) GetContractDividends(queryOptions map[s | @@ -364,6 +385,7 @@ func (ptr *CooperationStatisticsService) GetContractDividends(queryOptions map[s | ||
364 | "dividendsAccountStatus": a.DividendsAccountStatus, | 385 | "dividendsAccountStatus": a.DividendsAccountStatus, |
365 | "dividendsEstimateTime": a.CreatedAt.Unix() * 1000, | 386 | "dividendsEstimateTime": a.CreatedAt.Unix() * 1000, |
366 | "orderOrReturnedOrderNum": a.DividendsEstimateOrderNumber, | 387 | "orderOrReturnedOrderNum": a.DividendsEstimateOrderNumber, |
388 | + "creditAccountId": a.CreditAccountId, | ||
367 | } | 389 | } |
368 | if a.PaymentStatus == 2 { | 390 | if a.PaymentStatus == 2 { |
369 | item["dividendsAccountStatus"] = 3 | 391 | item["dividendsAccountStatus"] = 3 |
@@ -43,4 +43,6 @@ type CooperationContract struct { | @@ -43,4 +43,6 @@ type CooperationContract struct { | ||
43 | DeletedAt time.Time `comment:"删除时间" pg:",soft_delete"` | 43 | DeletedAt time.Time `comment:"删除时间" pg:",soft_delete"` |
44 | // 更新时间 | 44 | // 更新时间 |
45 | UpdatedAt time.Time `comment:"更新时间"` | 45 | UpdatedAt time.Time `comment:"更新时间"` |
46 | + // 共创项目编号 | ||
47 | + CooperationProjectId int64 `comment:"共创项目编号"` | ||
46 | } | 48 | } |
@@ -134,5 +134,6 @@ func TransformToCooperationContractDomainModelFromPgModels( | @@ -134,5 +134,6 @@ func TransformToCooperationContractDomainModelFromPgModels( | ||
134 | CreatedAt: cooperationContractModel.CreatedAt, | 134 | CreatedAt: cooperationContractModel.CreatedAt, |
135 | DeletedAt: cooperationContractModel.DeletedAt, | 135 | DeletedAt: cooperationContractModel.DeletedAt, |
136 | UpdatedAt: cooperationContractModel.UpdatedAt, | 136 | UpdatedAt: cooperationContractModel.UpdatedAt, |
137 | + CooperationProjectId: cooperationContractModel.CooperationProjectId, | ||
137 | }, nil | 138 | }, nil |
138 | } | 139 | } |
@@ -44,6 +44,7 @@ func (repository *CooperationContractRepository) Save(cooperationContract *domai | @@ -44,6 +44,7 @@ func (repository *CooperationContractRepository) Save(cooperationContract *domai | ||
44 | "created_at", | 44 | "created_at", |
45 | "deleted_at", | 45 | "deleted_at", |
46 | "updated_at", | 46 | "updated_at", |
47 | + "cooperation_project_id", | ||
47 | } | 48 | } |
48 | insertFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields) | 49 | insertFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields) |
49 | insertPlaceHoldersSnippet := sqlbuilder.SqlPlaceHoldersSnippet(sqlBuildFields) | 50 | insertPlaceHoldersSnippet := sqlbuilder.SqlPlaceHoldersSnippet(sqlBuildFields) |
@@ -78,6 +79,7 @@ func (repository *CooperationContractRepository) Save(cooperationContract *domai | @@ -78,6 +79,7 @@ func (repository *CooperationContractRepository) Save(cooperationContract *domai | ||
78 | &cooperationContract.CreatedAt, | 79 | &cooperationContract.CreatedAt, |
79 | &cooperationContract.DeletedAt, | 80 | &cooperationContract.DeletedAt, |
80 | &cooperationContract.UpdatedAt, | 81 | &cooperationContract.UpdatedAt, |
82 | + &cooperationContract.CooperationProjectId, | ||
81 | ), | 83 | ), |
82 | fmt.Sprintf("INSERT INTO cooperation_contracts (%s) VALUES (%s) RETURNING %s", insertFieldsSnippet, insertPlaceHoldersSnippet, returningFieldsSnippet), | 84 | fmt.Sprintf("INSERT INTO cooperation_contracts (%s) VALUES (%s) RETURNING %s", insertFieldsSnippet, insertPlaceHoldersSnippet, returningFieldsSnippet), |
83 | cooperationContract.CooperationContractId, | 85 | cooperationContract.CooperationContractId, |
@@ -98,6 +100,7 @@ func (repository *CooperationContractRepository) Save(cooperationContract *domai | @@ -98,6 +100,7 @@ func (repository *CooperationContractRepository) Save(cooperationContract *domai | ||
98 | cooperationContract.CreatedAt, | 100 | cooperationContract.CreatedAt, |
99 | nil, | 101 | nil, |
100 | cooperationContract.UpdatedAt, | 102 | cooperationContract.UpdatedAt, |
103 | + cooperationContract.CooperationProjectId, | ||
101 | ); err != nil { | 104 | ); err != nil { |
102 | return cooperationContract, err | 105 | return cooperationContract, err |
103 | } | 106 | } |
@@ -277,6 +280,7 @@ func (repository *CooperationContractRepository) Save(cooperationContract *domai | @@ -277,6 +280,7 @@ func (repository *CooperationContractRepository) Save(cooperationContract *domai | ||
277 | &cooperationContract.CreatedAt, | 280 | &cooperationContract.CreatedAt, |
278 | &cooperationContract.DeletedAt, | 281 | &cooperationContract.DeletedAt, |
279 | &cooperationContract.UpdatedAt, | 282 | &cooperationContract.UpdatedAt, |
283 | + &cooperationContract.CooperationProjectId, | ||
280 | ), | 284 | ), |
281 | fmt.Sprintf("UPDATE cooperation_contracts SET %s WHERE cooperation_contract_id=? RETURNING %s", updateFieldsSnippet, returningFieldsSnippet), | 285 | fmt.Sprintf("UPDATE cooperation_contracts SET %s WHERE cooperation_contract_id=? RETURNING %s", updateFieldsSnippet, returningFieldsSnippet), |
282 | cooperationContract.CooperationContractId, | 286 | cooperationContract.CooperationContractId, |
@@ -297,6 +301,7 @@ func (repository *CooperationContractRepository) Save(cooperationContract *domai | @@ -297,6 +301,7 @@ func (repository *CooperationContractRepository) Save(cooperationContract *domai | ||
297 | cooperationContract.CreatedAt, | 301 | cooperationContract.CreatedAt, |
298 | nil, | 302 | nil, |
299 | cooperationContract.UpdatedAt, | 303 | cooperationContract.UpdatedAt, |
304 | + cooperationContract.CooperationProjectId, | ||
300 | cooperationContract.Identify(), | 305 | cooperationContract.Identify(), |
301 | ); err != nil { | 306 | ); err != nil { |
302 | return cooperationContract, err | 307 | return cooperationContract, err |
@@ -183,6 +183,9 @@ func (repository *CooperationContractUndertakerRepository) Find(queryOptions map | @@ -183,6 +183,9 @@ func (repository *CooperationContractUndertakerRepository) Find(queryOptions map | ||
183 | var cooperationContractUndertakerModels []*models.CooperationContractUndertaker | 183 | var cooperationContractUndertakerModels []*models.CooperationContractUndertaker |
184 | cooperationContractUndertakers := make([]*domain.CooperationContractUndertaker, 0) | 184 | cooperationContractUndertakers := make([]*domain.CooperationContractUndertaker, 0) |
185 | query := sqlbuilder.BuildQuery(tx.Model(&cooperationContractUndertakerModels), queryOptions) | 185 | query := sqlbuilder.BuildQuery(tx.Model(&cooperationContractUndertakerModels), queryOptions) |
186 | + if cooperationContractId, ok := queryOptions["cooperationContractId"]; ok && cooperationContractId.(int64) != 0 { | ||
187 | + query.Where("cooperation_contract_id = ? ", cooperationContractId) | ||
188 | + } | ||
186 | if companyId, ok := queryOptions["companyId"]; ok && companyId.(int64) != 0 { | 189 | if companyId, ok := queryOptions["companyId"]; ok && companyId.(int64) != 0 { |
187 | query.Where("company->>'companyId' = '?'", companyId) | 190 | query.Where("company->>'companyId' = '?'", companyId) |
188 | } | 191 | } |
-
请 注册 或 登录 后发表评论