正在显示
6 个修改的文件
包含
153 行增加
和
21 行删除
@@ -43,12 +43,16 @@ func (svr *CooperationStatisticsService) CooperationContractStatistics(contractS | @@ -43,12 +43,16 @@ func (svr *CooperationStatisticsService) CooperationContractStatistics(contractS | ||
43 | res, err = statisticsService.CooperationModeStatistics(contractStatisticsQuery.QueryOptions) | 43 | res, err = statisticsService.CooperationModeStatistics(contractStatisticsQuery.QueryOptions) |
44 | case domain_service.CompanyDividendsStatistics: | 44 | case domain_service.CompanyDividendsStatistics: |
45 | res, err = statisticsService.CompanyDividendsStatistics(contractStatisticsQuery.QueryOptions) | 45 | res, err = statisticsService.CompanyDividendsStatistics(contractStatisticsQuery.QueryOptions) |
46 | + case domain_service.CompanyCooperationUsersStatistics: | ||
47 | + res, err = statisticsService.CompanyCooperationUsersStatistics(contractStatisticsQuery.QueryOptions) | ||
46 | case domain_service.DividendsStatistics: | 48 | case domain_service.DividendsStatistics: |
47 | res, err = statisticsService.DividendsStatistics(contractStatisticsQuery.QueryOptions) | 49 | res, err = statisticsService.DividendsStatistics(contractStatisticsQuery.QueryOptions) |
48 | case domain_service.SearchDividendsEstimates: | 50 | case domain_service.SearchDividendsEstimates: |
49 | res, err = statisticsService.SearchDividendsEstimates(contractStatisticsQuery.QueryOptions) | 51 | res, err = statisticsService.SearchDividendsEstimates(contractStatisticsQuery.QueryOptions) |
50 | case domain_service.CooperationCompanyStatistics: | 52 | case domain_service.CooperationCompanyStatistics: |
51 | res, err = statisticsService.CooperationCompanyStatistics(contractStatisticsQuery.QueryOptions) | 53 | res, err = statisticsService.CooperationCompanyStatistics(contractStatisticsQuery.QueryOptions) |
54 | + case domain_service.PersonCooperationContractStatistics: | ||
55 | + res, err = statisticsService.PersonCooperationContractStatistics(contractStatisticsQuery.QueryOptions) | ||
52 | } | 56 | } |
53 | if err != nil { | 57 | if err != nil { |
54 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | 58 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) |
@@ -55,27 +55,6 @@ func (dao *CreditAccountDao) CheckCreditAccountNumberAvailable(queryOptions map[ | @@ -55,27 +55,6 @@ func (dao *CreditAccountDao) CheckCreditAccountNumberAvailable(queryOptions map[ | ||
55 | 55 | ||
56 | // 分红统计(分红明细) | 56 | // 分红统计(分红明细) |
57 | func (dao *CreditAccountDao) DividendsStatistics(queryOptions map[string]interface{}, v interface{}) error { | 57 | func (dao *CreditAccountDao) DividendsStatistics(queryOptions map[string]interface{}, v interface{}) error { |
58 | - // sql := ` | ||
59 | - //select | ||
60 | - //sum(settlement_amount) total, | ||
61 | - //sum((case when payment_status = 1 then actually_paid_amount else 0 end)) paid, | ||
62 | - //sum((case when settlement_time is not null then settlement_amount else 0 end)) accounted | ||
63 | - //from credit_accounts | ||
64 | - //where | ||
65 | - //` | ||
66 | - // | ||
67 | - // | ||
68 | - // if _, ok := queryOptions["beginTime"]; ok { | ||
69 | - // sql += `created_at>? and created_at<? and ` | ||
70 | - // } | ||
71 | - // if v, ok := queryOptions["userBaseId"]; ok && v.(int64) > 0 { | ||
72 | - // sql += fmt.Sprintf(`participator->>'userBaseId'='%v' `, v) | ||
73 | - // } | ||
74 | - // if v, ok := queryOptions["orgId"]; ok && v.(int64) > 0 { | ||
75 | - // sql += fmt.Sprintf(` org->>'orgId'= '%v'`, v) | ||
76 | - // } | ||
77 | - // _, err := dao.transactionContext.PgDd.Query(v, sql, queryOptions["beginTime"], queryOptions["endTime"]) | ||
78 | - | ||
79 | creditAccount := new(models.CreditAccount) | 58 | creditAccount := new(models.CreditAccount) |
80 | query := dao.transactionContext.PgTx.Model(creditAccount) | 59 | query := dao.transactionContext.PgTx.Model(creditAccount) |
81 | query.ColumnExpr(`sum(settlement_amount) total`) | 60 | query.ColumnExpr(`sum(settlement_amount) total`) |
@@ -95,6 +74,42 @@ func (dao *CreditAccountDao) DividendsStatistics(queryOptions map[string]interfa | @@ -95,6 +74,42 @@ func (dao *CreditAccountDao) DividendsStatistics(queryOptions map[string]interfa | ||
95 | return err | 74 | return err |
96 | } | 75 | } |
97 | 76 | ||
77 | +// 分红统计(分红明细) | ||
78 | +func (dao *CreditAccountDao) CooperationUsersDividendsStatistics(queryOptions map[string]interface{}, v interface{}) error { | ||
79 | + creditAccount := new(models.CreditAccount) | ||
80 | + query := dao.transactionContext.PgTx.Model(creditAccount) | ||
81 | + query.ColumnExpr(`0 cooperation_time`) | ||
82 | + query.ColumnExpr(`0 dividends_order_amount`) | ||
83 | + query.ColumnExpr(`sum(settlement_amount) divides_amount`) | ||
84 | + query.ColumnExpr(`sum((case when payment_status = 1 then actually_paid_amount else 0 end)) actually_paid_amount`) | ||
85 | + query.ColumnExpr(`max(participator->>'userId') user_id`) | ||
86 | + query.ColumnExpr(`max(participator#>>'{userInfo,userName}') user_name`) | ||
87 | + if _, ok := queryOptions["beginTime"]; ok { | ||
88 | + query.Where(`created_at>? `, queryOptions["beginTime"]) | ||
89 | + query.Where(`created_at<? `, queryOptions["endTime"]) | ||
90 | + } | ||
91 | + if v, ok := queryOptions["userBaseId"]; ok && v.(int64) > 0 { | ||
92 | + query.Where(fmt.Sprintf(`participator->>'userBaseId'='%v' `, v)) | ||
93 | + } | ||
94 | + if v, ok := queryOptions["orgId"]; ok && v.(int64) > 0 { | ||
95 | + query.Where(fmt.Sprintf(` org->>'orgId'= '%v'`, v)) | ||
96 | + } | ||
97 | + query.Where("deleted_at is null") | ||
98 | + if v, ok := queryOptions["sortByActuallyPaidAmount"]; ok { | ||
99 | + vInt := v.(int) | ||
100 | + if vInt == 1 { | ||
101 | + query.Order("divides_amount asc") | ||
102 | + } else { | ||
103 | + query.Order("divides_amount desc") | ||
104 | + } | ||
105 | + } | ||
106 | + query.GroupExpr("participator->>'userBaseId'") | ||
107 | + query.Limit(queryOptions["limit"].(int)) | ||
108 | + query.Offset(queryOptions["offset"].(int)) | ||
109 | + err := query.Select(v) | ||
110 | + return err | ||
111 | +} | ||
112 | + | ||
98 | func NewCreditAccountDao(transactionContext *pgTransaction.TransactionContext) (*CreditAccountDao, error) { | 113 | func NewCreditAccountDao(transactionContext *pgTransaction.TransactionContext) (*CreditAccountDao, error) { |
99 | if transactionContext == nil { | 114 | if transactionContext == nil { |
100 | return nil, fmt.Errorf("transactionContext参数不能为空") | 115 | return nil, fmt.Errorf("transactionContext参数不能为空") |
@@ -186,3 +186,61 @@ type item struct { | @@ -186,3 +186,61 @@ type item struct { | ||
186 | key string | 186 | key string |
187 | val interface{} | 187 | val interface{} |
188 | } | 188 | } |
189 | + | ||
190 | +// 公司 - 共创用户统计 | ||
191 | +func (ptr *CooperationStatisticsService) CompanyCooperationUsersStatistics(queryOptions map[string]interface{}) (interface{}, error) { | ||
192 | + // 参数验证 | ||
193 | + var request = struct { | ||
194 | + Limit int `json:"limit" valid:"Required"` | ||
195 | + Offset int `json:"offset"` | ||
196 | + OrgId int64 `json:"orgId" valid:"Required"` | ||
197 | + SortByActuallyPaidAmount int `json:"sortByActuallyPaidAmount" valid:"Required"` | ||
198 | + }{} | ||
199 | + if err := LoadQueryObject(queryOptions, &request); err != nil { | ||
200 | + return nil, err | ||
201 | + } | ||
202 | + queryOptions = tool_funs.SimpleStructToMap(&request) | ||
203 | + | ||
204 | + type response struct { | ||
205 | + CooperationTime int64 `json:"cooperationTime"` | ||
206 | + DividendsOrderAmount float64 `json:"dividendsOrderAmount"` | ||
207 | + DividesAmount float64 `json:"dividesAmount"` // 分红金额 | ||
208 | + ActuallyPaidAmount float64 `json:"actuallyPaidAmount"` // 已支付金额 | ||
209 | + UnPaidAmount float64 `json:"unPaidAmount"` // 未支付金额 | ||
210 | + UserId int64 `json:"userId,string"` | ||
211 | + UserName string `json:"userName"` | ||
212 | + | ||
213 | + Participator interface{} `json:"participator"` | ||
214 | + } | ||
215 | + var responses []response | ||
216 | + creditAccountDao, _ := dao.NewCreditAccountDao(ptr.transactionContext) | ||
217 | + if err := creditAccountDao.CooperationUsersDividendsStatistics(queryOptions, &responses); err != nil { | ||
218 | + return nil, err | ||
219 | + } | ||
220 | + | ||
221 | + var retMap = make([]interface{}, 0) | ||
222 | + for i := range responses { | ||
223 | + responses[i].CooperationTime = time.Now().Unix() * 1000 | ||
224 | + unPaidAmount := responses[i].DividesAmount - responses[i].ActuallyPaidAmount | ||
225 | + responses[i].Participator = map[string]interface{}{ | ||
226 | + "userId": responses[i].UserId, | ||
227 | + "userInfo": map[string]interface{}{ | ||
228 | + "userName": responses[i].UserName, | ||
229 | + }, | ||
230 | + } | ||
231 | + retMap = append(retMap, map[string]interface{}{ | ||
232 | + "dividendsOrderAmount": 0, | ||
233 | + "dividesAmount": responses[i].DividesAmount, | ||
234 | + "unPaidAmount": unPaidAmount, | ||
235 | + "cooperationTime": time.Now().Unix() * 1000, | ||
236 | + "participator": map[string]interface{}{ | ||
237 | + "userId": responses[i].UserId, | ||
238 | + "userInfo": map[string]interface{}{ | ||
239 | + "userName": responses[i].UserName, | ||
240 | + }, | ||
241 | + }, | ||
242 | + }) | ||
243 | + } | ||
244 | + | ||
245 | + return retMap, nil | ||
246 | +} |
1 | package domain_service | 1 | package domain_service |
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | + "github.com/go-pg/pg/v10" | ||
4 | "github.com/linmadan/egglib-go/utils/tool_funs" | 5 | "github.com/linmadan/egglib-go/utils/tool_funs" |
5 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/dao" | 6 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/dao" |
7 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/pg/models" | ||
6 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/repository" | 8 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/repository" |
7 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/utils" | 9 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/utils" |
8 | ) | 10 | ) |
@@ -90,3 +92,49 @@ type cooperationCompanyStatisticsResponse struct { | @@ -90,3 +92,49 @@ type cooperationCompanyStatisticsResponse struct { | ||
90 | // 分红支出 | 92 | // 分红支出 |
91 | DividendsIncome float64 `json:"dividendsIncome"` | 93 | DividendsIncome float64 `json:"dividendsIncome"` |
92 | } | 94 | } |
95 | + | ||
96 | +// 个人-用户合约统计 | ||
97 | +func (ptr *CooperationStatisticsService) PersonCooperationContractStatistics(queryOptions map[string]interface{}) (interface{}, error) { | ||
98 | + // 参数验证 | ||
99 | + var request = struct { | ||
100 | + UserBaseId int64 `json:"userBaseId" valid:"Required"` | ||
101 | + }{} | ||
102 | + if err := LoadQueryObject(queryOptions, &request); err != nil { | ||
103 | + return nil, err | ||
104 | + } | ||
105 | + queryOptions = tool_funs.SimpleStructToMap(&request) | ||
106 | + | ||
107 | + cooperationContractUndertaker, _ := repository.NewCooperationContractUndertakerRepository(ptr.transactionContext) | ||
108 | + _, contractUndertakers, err := cooperationContractUndertaker.Find(queryOptions) | ||
109 | + if err != nil { | ||
110 | + return nil, nil | ||
111 | + } | ||
112 | + | ||
113 | + var response = struct { | ||
114 | + ContractSum int `json:"contractSum"` | ||
115 | + ContractStoppedSum int `json:"contractStoppedSum"` | ||
116 | + }{} | ||
117 | + if len(contractUndertakers) == 0 { | ||
118 | + return response, nil | ||
119 | + } | ||
120 | + var numbers []string | ||
121 | + for i := range contractUndertakers { | ||
122 | + numbers = append(numbers, contractUndertakers[i].CooperationContractNumber) | ||
123 | + } | ||
124 | + response.ContractSum = ptr.cooperationContractCount(numbers, 0) | ||
125 | + response.ContractStoppedSum = ptr.cooperationContractCount(numbers, 2) | ||
126 | + return response, nil | ||
127 | +} | ||
128 | + | ||
129 | +func (ptr *CooperationStatisticsService) cooperationContractCount(numbers []string, status int) int { | ||
130 | + var total int | ||
131 | + var contract = new(models.CooperationContract) | ||
132 | + query := ptr.transactionContext.PgDd.Model(contract) | ||
133 | + query.ColumnExpr("count(*) total") | ||
134 | + query.Where("cooperation_contract_number in (?)", pg.In(numbers)) | ||
135 | + if status > 0 { | ||
136 | + query.Where("status =? ") | ||
137 | + } | ||
138 | + query.Select(&total) | ||
139 | + return total | ||
140 | +} |
@@ -29,9 +29,13 @@ const ( | @@ -29,9 +29,13 @@ const ( | ||
29 | CompanyDividendsStatistics = "CompanyDividendsStatistics" | 29 | CompanyDividendsStatistics = "CompanyDividendsStatistics" |
30 | // 企业、个人 - 分红预算列表 | 30 | // 企业、个人 - 分红预算列表 |
31 | SearchDividendsEstimates = "SearchDividendsEstimates" | 31 | SearchDividendsEstimates = "SearchDividendsEstimates" |
32 | + // 公司 - 共创用户统计 | ||
33 | + CompanyCooperationUsersStatistics = "CompanyCooperationUsersStatistics" | ||
32 | 34 | ||
33 | // 个人 - 共创企业统计 | 35 | // 个人 - 共创企业统计 |
34 | CooperationCompanyStatistics = "CooperationCompanyStatistics" | 36 | CooperationCompanyStatistics = "CooperationCompanyStatistics" |
37 | + // 个人 - 用户合约统计 | ||
38 | + PersonCooperationContractStatistics = "PersonCooperationContractStatistics" | ||
35 | ) | 39 | ) |
36 | 40 | ||
37 | // CooperationStatisticsService 共创统计服务 | 41 | // CooperationStatisticsService 共创统计服务 |
@@ -234,6 +234,9 @@ func (repository *CooperationApplicationRepository) Find(queryOptions map[string | @@ -234,6 +234,9 @@ func (repository *CooperationApplicationRepository) Find(queryOptions map[string | ||
234 | if cooperationApplicationIds, ok := queryOptions["cooperationApplicationIds"]; ok && len(cooperationApplicationIds.([]int64)) > 0 { | 234 | if cooperationApplicationIds, ok := queryOptions["cooperationApplicationIds"]; ok && len(cooperationApplicationIds.([]int64)) > 0 { |
235 | query.Where("cooperation_application_id IN (?)", pg.In(cooperationApplicationIds)) | 235 | query.Where("cooperation_application_id IN (?)", pg.In(cooperationApplicationIds)) |
236 | } | 236 | } |
237 | + if userBaseId, ok := queryOptions["userBaseId"]; ok && userBaseId.(int64) != 0 { | ||
238 | + query.Where(`(cooperation_application.cooperation_application_applicant->>'userBaseId' ='?')`, userBaseId) | ||
239 | + } | ||
237 | if companyId, ok := queryOptions["companyId"]; ok && companyId.(int64) != 0 { | 240 | if companyId, ok := queryOptions["companyId"]; ok && companyId.(int64) != 0 { |
238 | query.Where("company->>'companyId' = '?'", companyId) | 241 | query.Where("company->>'companyId' = '?'", companyId) |
239 | } | 242 | } |
-
请 注册 或 登录 后发表评论