正在显示
19 个修改的文件
包含
469 行增加
和
253 行删除
@@ -3,10 +3,13 @@ package command | @@ -3,10 +3,13 @@ package command | ||
3 | import ( | 3 | import ( |
4 | "fmt" | 4 | "fmt" |
5 | "github.com/astaxie/beego/validation" | 5 | "github.com/astaxie/beego/validation" |
6 | + "time" | ||
6 | ) | 7 | ) |
7 | 8 | ||
8 | type EmployeesContributionsStatisticsCommand struct { | 9 | type EmployeesContributionsStatisticsCommand struct { |
9 | CompanyId int `json:"companyId" valid:"Required"` // 公司id | 10 | CompanyId int `json:"companyId" valid:"Required"` // 公司id |
11 | + StartTime time.Time `json:"startTime"` // 年榜开始时间 | ||
12 | + EndTime time.Time `json:"EndTime"` // 年榜结束时间 | ||
10 | } | 13 | } |
11 | 14 | ||
12 | func (employeesContributionsStatisticsCommand *EmployeesContributionsStatisticsCommand) ValidateCommand() error { | 15 | func (employeesContributionsStatisticsCommand *EmployeesContributionsStatisticsCommand) ValidateCommand() error { |
@@ -2,12 +2,15 @@ package command | @@ -2,12 +2,15 @@ package command | ||
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | "fmt" | 4 | "fmt" |
5 | + "time" | ||
5 | 6 | ||
6 | "github.com/astaxie/beego/validation" | 7 | "github.com/astaxie/beego/validation" |
7 | ) | 8 | ) |
8 | 9 | ||
9 | type EmployeesSuMoneyStatisticsCommand struct { | 10 | type EmployeesSuMoneyStatisticsCommand struct { |
10 | CompanyId int `json:"companyId" valid:"Required"` // 公司id | 11 | CompanyId int `json:"companyId" valid:"Required"` // 公司id |
12 | + StartTime time.Time `json:"startTime"` // 年榜开始时间 | ||
13 | + EndTime time.Time `json:"EndTime"` // 年榜结束时间 | ||
11 | } | 14 | } |
12 | 15 | ||
13 | func (employeesSuMoneyStatisticsCommand *EmployeesSuMoneyStatisticsCommand) ValidateCommand() error { | 16 | func (employeesSuMoneyStatisticsCommand *EmployeesSuMoneyStatisticsCommand) ValidateCommand() error { |
@@ -196,6 +196,7 @@ func (statisticsService *StatisticsService) PersonSuMoneyStatistics(personSuMone | @@ -196,6 +196,7 @@ func (statisticsService *StatisticsService) PersonSuMoneyStatistics(personSuMone | ||
196 | } | 196 | } |
197 | } | 197 | } |
198 | 198 | ||
199 | +// 获取系统素币统计 | ||
199 | func (statisticsService *StatisticsService) SystemSuMoneyStatistics(systemSuMoneyStatisticsCommand *command.SystemSuMoneyStatisticsCommand) (interface{}, error) { | 200 | func (statisticsService *StatisticsService) SystemSuMoneyStatistics(systemSuMoneyStatisticsCommand *command.SystemSuMoneyStatisticsCommand) (interface{}, error) { |
200 | if err := systemSuMoneyStatisticsCommand.ValidateCommand(); err != nil { | 201 | if err := systemSuMoneyStatisticsCommand.ValidateCommand(); err != nil { |
201 | return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | 202 | return nil, application.ThrowError(application.ARG_ERROR, err.Error()) |
@@ -230,6 +231,7 @@ func (statisticsService *StatisticsService) SystemSuMoneyStatistics(systemSuMone | @@ -230,6 +231,7 @@ func (statisticsService *StatisticsService) SystemSuMoneyStatistics(systemSuMone | ||
230 | } | 231 | } |
231 | } | 232 | } |
232 | 233 | ||
234 | +// 获取系统现金统计 | ||
233 | func (statisticsService *StatisticsService) SystemCashStatistics(systemCashStatisticsCommand *command.SystemCashStatisticsCommand) (interface{}, error) { | 235 | func (statisticsService *StatisticsService) SystemCashStatistics(systemCashStatisticsCommand *command.SystemCashStatisticsCommand) (interface{}, error) { |
234 | if err := systemCashStatisticsCommand.ValidateCommand(); err != nil { | 236 | if err := systemCashStatisticsCommand.ValidateCommand(); err != nil { |
235 | return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | 237 | return nil, application.ThrowError(application.ARG_ERROR, err.Error()) |
@@ -264,19 +266,72 @@ func (statisticsService *StatisticsService) SystemCashStatistics(systemCashStati | @@ -264,19 +266,72 @@ func (statisticsService *StatisticsService) SystemCashStatistics(systemCashStati | ||
264 | } | 266 | } |
265 | } | 267 | } |
266 | 268 | ||
267 | -// TODO 员工素币值统计 | 269 | +// 获取员工财富值分组统计 |
268 | func (statisticsService *StatisticsService) EmployeesSuMoneyStatistics(employeesSuMoneyStatisticsCommand *command.EmployeesSuMoneyStatisticsCommand) (interface{}, error) { | 270 | func (statisticsService *StatisticsService) EmployeesSuMoneyStatistics(employeesSuMoneyStatisticsCommand *command.EmployeesSuMoneyStatisticsCommand) (interface{}, error) { |
269 | - | ||
270 | - return nil ,nil | 271 | + if err := employeesSuMoneyStatisticsCommand.ValidateCommand(); err != nil { |
272 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
273 | + } | ||
274 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
275 | + if err != nil { | ||
276 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
277 | + } | ||
278 | + if err := transactionContext.StartTransaction(); err != nil { | ||
279 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
280 | + } | ||
281 | + defer func() { | ||
282 | + transactionContext.RollbackTransaction() | ||
283 | + }() | ||
284 | + var employeeDao *dao.EmployeeDao | ||
285 | + if value, err := factory.CreateEmployeeDao(map[string]interface{}{ | ||
286 | + "transactionContext": transactionContext, | ||
287 | + }); err != nil { | ||
288 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
289 | + } else { | ||
290 | + employeeDao = value | ||
291 | + } | ||
292 | + if employeesSuMoneyStatistics, err := employeeDao.CalculateEmployeesSuMoney(employeesSuMoneyStatisticsCommand.CompanyId, employeesSuMoneyStatisticsCommand.StartTime, employeesSuMoneyStatisticsCommand.EndTime); err != nil { | ||
293 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
294 | + } else { | ||
295 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
296 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
297 | + } | ||
298 | + return employeesSuMoneyStatistics, nil | ||
299 | + } | ||
271 | } | 300 | } |
272 | 301 | ||
273 | -// TODO 员工贡献值统计 | 302 | +// 获取员工贡献值分组统计 |
274 | func (statisticsService *StatisticsService) EmployeesContributionsStatistics(employeesContributionsStatisticsCommand *command.EmployeesContributionsStatisticsCommand) (interface{}, error) { | 303 | func (statisticsService *StatisticsService) EmployeesContributionsStatistics(employeesContributionsStatisticsCommand *command.EmployeesContributionsStatisticsCommand) (interface{}, error) { |
275 | - | ||
276 | - return nil, nil | 304 | + if err := employeesContributionsStatisticsCommand.ValidateCommand(); err != nil { |
305 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
306 | + } | ||
307 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
308 | + if err != nil { | ||
309 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
310 | + } | ||
311 | + if err := transactionContext.StartTransaction(); err != nil { | ||
312 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
313 | + } | ||
314 | + defer func() { | ||
315 | + transactionContext.RollbackTransaction() | ||
316 | + }() | ||
317 | + var employeeDao *dao.EmployeeDao | ||
318 | + if value, err := factory.CreateEmployeeDao(map[string]interface{}{ | ||
319 | + "transactionContext": transactionContext, | ||
320 | + }); err != nil { | ||
321 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
322 | + } else { | ||
323 | + employeeDao = value | ||
324 | + } | ||
325 | + if employeesContributionsStatistics, err := employeeDao.CalculateEmployeesContributions(employeesContributionsStatisticsCommand.CompanyId, employeesContributionsStatisticsCommand.StartTime, employeesContributionsStatisticsCommand.EndTime); err != nil { | ||
326 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
327 | + } else { | ||
328 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
329 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
330 | + } | ||
331 | + return employeesContributionsStatistics, nil | ||
332 | + } | ||
277 | } | 333 | } |
278 | 334 | ||
279 | - | ||
280 | func NewStatisticsService(options map[string]interface{}) *StatisticsService { | 335 | func NewStatisticsService(options map[string]interface{}) *StatisticsService { |
281 | newStatisticsService := &StatisticsService{} | 336 | newStatisticsService := &StatisticsService{} |
282 | return newStatisticsService | 337 | return newStatisticsService |
@@ -6,10 +6,12 @@ import ( | @@ -6,10 +6,12 @@ import ( | ||
6 | ) | 6 | ) |
7 | 7 | ||
8 | type CreateExchangeCashPersonCommand struct { | 8 | type CreateExchangeCashPersonCommand struct { |
9 | + Uid int64 `json:"uid"` // 统一用户id | ||
9 | PersonName string `json:"personName,omitempty"` // 兑换现金人员名称 | 10 | PersonName string `json:"personName,omitempty"` // 兑换现金人员名称 |
10 | - PersonAccount string `json:"personAccount,omitempty"` // 手机账号 | ||
11 | - ExchangeCashActivityId int64 `json:"exchangeCashActivityId" valid:"Required"` // 参与的兑换活动id | ||
12 | - ExchangedSuMoney float64 `json:"exchangedSuMoney"` // 已兑换素币值 | 11 | + Operator int64 `json:"operator"` // 操作人 |
12 | + PersonAccount string `json:"personAccount,omitempty"` // 手机账号 | ||
13 | + ExchangeCashActivityId int64 `json:"exchangeCashActivityId" valid:"Required"` // 参与的兑换活动id | ||
14 | + ExchangedSuMoney float64 `json:"exchangedSuMoney"` // 已兑换素币值 | ||
13 | } | 15 | } |
14 | 16 | ||
15 | func (createExchangeCashPersonCommand *CreateExchangeCashPersonCommand) ValidateCommand() error { | 17 | func (createExchangeCashPersonCommand *CreateExchangeCashPersonCommand) ValidateCommand() error { |
@@ -34,7 +34,6 @@ func (cashPoolService *CashPoolService) CreateCashPool(createCashPoolCommand *co | @@ -34,7 +34,6 @@ func (cashPoolService *CashPoolService) CreateCashPool(createCashPoolCommand *co | ||
34 | defer func() { | 34 | defer func() { |
35 | transactionContext.RollbackTransaction() | 35 | transactionContext.RollbackTransaction() |
36 | }() | 36 | }() |
37 | - | ||
38 | var employeeDao *dao.EmployeeDao | 37 | var employeeDao *dao.EmployeeDao |
39 | if value, err := factory.CreateEmployeeDao(map[string]interface{}{ | 38 | if value, err := factory.CreateEmployeeDao(map[string]interface{}{ |
40 | "transactionContext": transactionContext, | 39 | "transactionContext": transactionContext, |
@@ -43,7 +42,6 @@ func (cashPoolService *CashPoolService) CreateCashPool(createCashPoolCommand *co | @@ -43,7 +42,6 @@ func (cashPoolService *CashPoolService) CreateCashPool(createCashPoolCommand *co | ||
43 | } else { | 42 | } else { |
44 | employeeDao = value | 43 | employeeDao = value |
45 | } | 44 | } |
46 | - | ||
47 | // 统计系统素币 | 45 | // 统计系统素币 |
48 | systemSuMoneyStatistics, err := employeeDao.CalculateSystemSuMoney(createCashPoolCommand.CompanyId) | 46 | systemSuMoneyStatistics, err := employeeDao.CalculateSystemSuMoney(createCashPoolCommand.CompanyId) |
49 | if err != nil { | 47 | if err != nil { |
@@ -52,7 +50,8 @@ func (cashPoolService *CashPoolService) CreateCashPool(createCashPoolCommand *co | @@ -52,7 +50,8 @@ func (cashPoolService *CashPoolService) CreateCashPool(createCashPoolCommand *co | ||
52 | if systemSuMoneyStatistics == nil { | 50 | if systemSuMoneyStatistics == nil { |
53 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的公司") | 51 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的公司") |
54 | } | 52 | } |
55 | - | 53 | + systemExchangedSuMoney := systemSuMoneyStatistics["systemExchangedSuMoney"].(float64) |
54 | + systemUnExchangeSuMoney := systemSuMoneyStatistics["systemUnExchangeSuMoney"].(float64) | ||
56 | // 统计系统现金 | 55 | // 统计系统现金 |
57 | systemCashStatistics, err := employeeDao.CalculateSystemCash(createCashPoolCommand.CompanyId) | 56 | systemCashStatistics, err := employeeDao.CalculateSystemCash(createCashPoolCommand.CompanyId) |
58 | if err != nil { | 57 | if err != nil { |
@@ -61,7 +60,8 @@ func (cashPoolService *CashPoolService) CreateCashPool(createCashPoolCommand *co | @@ -61,7 +60,8 @@ func (cashPoolService *CashPoolService) CreateCashPool(createCashPoolCommand *co | ||
61 | if systemCashStatistics == nil { | 60 | if systemCashStatistics == nil { |
62 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的公司") | 61 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的公司") |
63 | } | 62 | } |
64 | - | 63 | + systemExchangedCash := systemCashStatistics["systemExchangedCash"].(float64) |
64 | + systemUnExchangeCash := systemCashStatistics["systemUnExchangeCash"].(float64) | ||
65 | var cashPoolRepository domain.CashPoolRepository | 65 | var cashPoolRepository domain.CashPoolRepository |
66 | if value, err := factory.CreateCashPoolRepository(map[string] interface{} { | 66 | if value, err := factory.CreateCashPoolRepository(map[string] interface{} { |
67 | "transactionContext": transactionContext, | 67 | "transactionContext": transactionContext, |
@@ -70,15 +70,8 @@ func (cashPoolService *CashPoolService) CreateCashPool(createCashPoolCommand *co | @@ -70,15 +70,8 @@ func (cashPoolService *CashPoolService) CreateCashPool(createCashPoolCommand *co | ||
70 | } else { | 70 | } else { |
71 | cashPoolRepository = value | 71 | cashPoolRepository = value |
72 | } | 72 | } |
73 | - | ||
74 | - systemExchangedCash := systemCashStatistics["systemExchangedCash"].(float64) | ||
75 | - systemUnExchangeCash := systemCashStatistics["systemUnExchangeCash"].(float64) | ||
76 | - systemExchangedSuMoney := systemSuMoneyStatistics["systemExchangedSuMoney"].(float64) | ||
77 | - systemUnExchangeSuMoney := systemSuMoneyStatistics["systemUnExchangeSuMoney"].(float64) | ||
78 | - | ||
79 | - // TODO 计算系统平均兑换汇率 | 73 | + // 计算系统平均兑换汇率 |
80 | rate, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", systemExchangedCash / systemExchangedSuMoney), 64) // 平均兑换汇率 | 74 | rate, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", systemExchangedCash / systemExchangedSuMoney), 64) // 平均兑换汇率 |
81 | - | ||
82 | // 新建现金池 | 75 | // 新建现金池 |
83 | newCashPool := &domain.CashPool{ | 76 | newCashPool := &domain.CashPool{ |
84 | CompanyId: createCashPoolCommand.CompanyId, | 77 | CompanyId: createCashPoolCommand.CompanyId, |
@@ -122,7 +115,7 @@ func (cashPoolService *CashPoolService) GetCashPool(getCashPoolQuery *query.GetC | @@ -122,7 +115,7 @@ func (cashPoolService *CashPoolService) GetCashPool(getCashPoolQuery *query.GetC | ||
122 | defer func() { | 115 | defer func() { |
123 | transactionContext.RollbackTransaction() | 116 | transactionContext.RollbackTransaction() |
124 | }() | 117 | }() |
125 | - | 118 | + // 统计系统素币 |
126 | var employeeDao *dao.EmployeeDao | 119 | var employeeDao *dao.EmployeeDao |
127 | if value, err := factory.CreateEmployeeDao(map[string]interface{}{ | 120 | if value, err := factory.CreateEmployeeDao(map[string]interface{}{ |
128 | "transactionContext": transactionContext, | 121 | "transactionContext": transactionContext, |
@@ -131,8 +124,6 @@ func (cashPoolService *CashPoolService) GetCashPool(getCashPoolQuery *query.GetC | @@ -131,8 +124,6 @@ func (cashPoolService *CashPoolService) GetCashPool(getCashPoolQuery *query.GetC | ||
131 | } else { | 124 | } else { |
132 | employeeDao = value | 125 | employeeDao = value |
133 | } | 126 | } |
134 | - | ||
135 | - // 统计系统素币 | ||
136 | systemSuMoneyStatistics, err := employeeDao.CalculateSystemSuMoney(getCashPoolQuery.CompanyId) | 127 | systemSuMoneyStatistics, err := employeeDao.CalculateSystemSuMoney(getCashPoolQuery.CompanyId) |
137 | if err != nil { | 128 | if err != nil { |
138 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 129 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
@@ -140,10 +131,8 @@ func (cashPoolService *CashPoolService) GetCashPool(getCashPoolQuery *query.GetC | @@ -140,10 +131,8 @@ func (cashPoolService *CashPoolService) GetCashPool(getCashPoolQuery *query.GetC | ||
140 | if systemSuMoneyStatistics == nil { | 131 | if systemSuMoneyStatistics == nil { |
141 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的公司") | 132 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的公司") |
142 | } | 133 | } |
143 | - | ||
144 | systemExchangedSuMoney := systemSuMoneyStatistics["systemExchangedSuMoney"].(float64) | 134 | systemExchangedSuMoney := systemSuMoneyStatistics["systemExchangedSuMoney"].(float64) |
145 | systemUnExchangeSuMoney := systemSuMoneyStatistics["systemUnExchangeSuMoney"].(float64) | 135 | systemUnExchangeSuMoney := systemSuMoneyStatistics["systemUnExchangeSuMoney"].(float64) |
146 | - | ||
147 | var cashPoolRepository domain.CashPoolRepository | 136 | var cashPoolRepository domain.CashPoolRepository |
148 | if value, err := factory.CreateCashPoolRepository(map[string] interface{} { | 137 | if value, err := factory.CreateCashPoolRepository(map[string] interface{} { |
149 | "transactionContext": transactionContext, | 138 | "transactionContext": transactionContext, |
@@ -158,7 +147,6 @@ func (cashPoolService *CashPoolService) GetCashPool(getCashPoolQuery *query.GetC | @@ -158,7 +147,6 @@ func (cashPoolService *CashPoolService) GetCashPool(getCashPoolQuery *query.GetC | ||
158 | if err := transactionContext.CommitTransaction(); err != nil { | 147 | if err := transactionContext.CommitTransaction(); err != nil { |
159 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 148 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
160 | } | 149 | } |
161 | - // 初始状态下,现金池返回默认值 | ||
162 | if count == 0 { | 150 | if count == 0 { |
163 | return map[string] interface{} { | 151 | return map[string] interface{} { |
164 | "cashPoolId": 0, | 152 | "cashPoolId": 0, |
@@ -192,12 +180,10 @@ func (cashPoolService *CashPoolService) CreateExchangeCashActivity(createExchang | @@ -192,12 +180,10 @@ func (cashPoolService *CashPoolService) CreateExchangeCashActivity(createExchang | ||
192 | defer func() { | 180 | defer func() { |
193 | transactionContext.RollbackTransaction() | 181 | transactionContext.RollbackTransaction() |
194 | }() | 182 | }() |
195 | - | ||
196 | var timeNow = time.Now() | 183 | var timeNow = time.Now() |
197 | var deadline = createExchangeCashActivityCommand.Deadline | 184 | var deadline = createExchangeCashActivityCommand.Deadline |
198 | var t1 = time.Date(timeNow.Year(), timeNow.Month(), timeNow.Day(), 0, 0, 0, 0, time.Local) | 185 | var t1 = time.Date(timeNow.Year(), timeNow.Month(), timeNow.Day(), 0, 0, 0, 0, time.Local) |
199 | var t2 = time.Date(deadline.Year(), deadline.Month(), deadline.Day(), 0, 0, 0, 0, time.Local) | 186 | var t2 = time.Date(deadline.Year(), deadline.Month(), deadline.Day(), 0, 0, 0, 0, time.Local) |
200 | - | ||
201 | newActivity := &domain.ExchangeCashActivity{ | 187 | newActivity := &domain.ExchangeCashActivity{ |
202 | ExchangeActivityName: createExchangeCashActivityCommand.ExchangeActivityName, | 188 | ExchangeActivityName: createExchangeCashActivityCommand.ExchangeActivityName, |
203 | CompanyId: createExchangeCashActivityCommand.CompanyId, | 189 | CompanyId: createExchangeCashActivityCommand.CompanyId, |
@@ -208,7 +194,6 @@ func (cashPoolService *CashPoolService) CreateExchangeCashActivity(createExchang | @@ -208,7 +194,6 @@ func (cashPoolService *CashPoolService) CreateExchangeCashActivity(createExchang | ||
208 | Rate: createExchangeCashActivityCommand.ExchangeRate, | 194 | Rate: createExchangeCashActivityCommand.ExchangeRate, |
209 | CreateTime: timeNow, | 195 | CreateTime: timeNow, |
210 | } | 196 | } |
211 | - | ||
212 | var exchangeCashActivityRepository domain.ExchangeActivityRepository | 197 | var exchangeCashActivityRepository domain.ExchangeActivityRepository |
213 | if value, err := factory.CreateExchangeCashActivityRepository(map[string]interface{}{ | 198 | if value, err := factory.CreateExchangeCashActivityRepository(map[string]interface{}{ |
214 | "transactionContext": transactionContext, | 199 | "transactionContext": transactionContext, |
@@ -217,7 +202,6 @@ func (cashPoolService *CashPoolService) CreateExchangeCashActivity(createExchang | @@ -217,7 +202,6 @@ func (cashPoolService *CashPoolService) CreateExchangeCashActivity(createExchang | ||
217 | } else { | 202 | } else { |
218 | exchangeCashActivityRepository = value | 203 | exchangeCashActivityRepository = value |
219 | } | 204 | } |
220 | - | ||
221 | if activity, err := exchangeCashActivityRepository.Save(newActivity); err != nil { | 205 | if activity, err := exchangeCashActivityRepository.Save(newActivity); err != nil { |
222 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 206 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
223 | } else { | 207 | } else { |
@@ -233,7 +217,6 @@ func (cashPoolService *CashPoolService) ListExchangeCashActivity(listExchangeCas | @@ -233,7 +217,6 @@ func (cashPoolService *CashPoolService) ListExchangeCashActivity(listExchangeCas | ||
233 | if err := listExchangeCashActivityQuery.ValidateQuery(); err != nil { | 217 | if err := listExchangeCashActivityQuery.ValidateQuery(); err != nil { |
234 | return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | 218 | return nil, application.ThrowError(application.ARG_ERROR, err.Error()) |
235 | } | 219 | } |
236 | - | ||
237 | transactionContext, err := factory.CreateTransactionContext(nil) | 220 | transactionContext, err := factory.CreateTransactionContext(nil) |
238 | if err != nil { | 221 | if err != nil { |
239 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 222 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
@@ -244,7 +227,6 @@ func (cashPoolService *CashPoolService) ListExchangeCashActivity(listExchangeCas | @@ -244,7 +227,6 @@ func (cashPoolService *CashPoolService) ListExchangeCashActivity(listExchangeCas | ||
244 | defer func() { | 227 | defer func() { |
245 | transactionContext.RollbackTransaction() | 228 | transactionContext.RollbackTransaction() |
246 | }() | 229 | }() |
247 | - | ||
248 | var exchangeActivityRepository domain.ExchangeActivityRepository | 230 | var exchangeActivityRepository domain.ExchangeActivityRepository |
249 | if value, err := factory.CreateExchangeCashActivityRepository(map[string]interface{}{ | 231 | if value, err := factory.CreateExchangeCashActivityRepository(map[string]interface{}{ |
250 | "transactionContext": transactionContext, | 232 | "transactionContext": transactionContext, |
@@ -253,7 +235,6 @@ func (cashPoolService *CashPoolService) ListExchangeCashActivity(listExchangeCas | @@ -253,7 +235,6 @@ func (cashPoolService *CashPoolService) ListExchangeCashActivity(listExchangeCas | ||
253 | } else { | 235 | } else { |
254 | exchangeActivityRepository = value | 236 | exchangeActivityRepository = value |
255 | } | 237 | } |
256 | - | ||
257 | if count, activities, err := exchangeActivityRepository.Find(tool_funs.SimpleStructToMap(listExchangeCashActivityQuery)); err != nil { | 238 | if count, activities, err := exchangeActivityRepository.Find(tool_funs.SimpleStructToMap(listExchangeCashActivityQuery)); err != nil { |
258 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 239 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
259 | } else { | 240 | } else { |
@@ -360,7 +341,7 @@ func (cashPoolService *CashPoolService) UpdateExchangeCashActivity(updateExchang | @@ -360,7 +341,7 @@ func (cashPoolService *CashPoolService) UpdateExchangeCashActivity(updateExchang | ||
360 | transactionContext.RollbackTransaction() | 341 | transactionContext.RollbackTransaction() |
361 | }() | 342 | }() |
362 | 343 | ||
363 | - // TODO 更新汇率处理: | 344 | + // TODO 更新汇率判断 |
364 | 345 | ||
365 | var exchangeCashActivityRepository domain.ExchangeActivityRepository | 346 | var exchangeCashActivityRepository domain.ExchangeActivityRepository |
366 | if value, err := factory.CreateExchangeCashActivityRepository(map[string]interface{}{ | 347 | if value, err := factory.CreateExchangeCashActivityRepository(map[string]interface{}{ |
@@ -380,25 +361,20 @@ func (cashPoolService *CashPoolService) UpdateExchangeCashActivity(updateExchang | @@ -380,25 +361,20 @@ func (cashPoolService *CashPoolService) UpdateExchangeCashActivity(updateExchang | ||
380 | if err := activity.Update(tool_funs.SimpleStructToMap(updateExchangeCashActivityCommand)); err != nil { | 361 | if err := activity.Update(tool_funs.SimpleStructToMap(updateExchangeCashActivityCommand)); err != nil { |
381 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | 362 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) |
382 | } | 363 | } |
383 | - if activityUpdated, err := exchangeCashActivityRepository.Save(activity); err != nil { | 364 | + activityUpdated, err := exchangeCashActivityRepository.Save(activity) |
365 | + if err != nil { | ||
384 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 366 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
385 | - } else { | ||
386 | - // TODO 更新现金池已兑换素币、已兑换现金值、未兑换素币、未兑换现金值、平均汇率 | 367 | + } |
387 | 368 | ||
388 | - //var cashPoolRepository domain.CashPoolRepository | ||
389 | - //if value, err := factory.CreateCashPoolRepository(map[string]interface{}{ | ||
390 | - // "transactionContext": transactionContext, | ||
391 | - //}); err != nil { | ||
392 | - // return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
393 | - //} else { | ||
394 | - // cashPoolRepository = value | ||
395 | - //} | 369 | + // TODO 更新现金池 |
370 | + // 获取现金池 | ||
396 | 371 | ||
397 | - if err := transactionContext.CommitTransaction(); err != nil { | ||
398 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
399 | - } | ||
400 | - return activityUpdated, nil | 372 | + // 更新现金池 |
373 | + | ||
374 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
375 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
401 | } | 376 | } |
377 | + return activityUpdated, nil | ||
402 | } | 378 | } |
403 | 379 | ||
404 | // 新增兑换素币清单 | 380 | // 新增兑换素币清单 |
@@ -416,58 +392,121 @@ func (cashPoolService *CashPoolService) CreateExchangeCashPerson(createExchangeC | @@ -416,58 +392,121 @@ func (cashPoolService *CashPoolService) CreateExchangeCashPerson(createExchangeC | ||
416 | defer func() { | 392 | defer func() { |
417 | transactionContext.RollbackTransaction() | 393 | transactionContext.RollbackTransaction() |
418 | }() | 394 | }() |
419 | - | ||
420 | - // TODO 获取兑换活动兑换汇率 | ||
421 | - | ||
422 | - //var exchangeCashActivityRepository domain.ExchangeActivityRepository | ||
423 | - //activity, err := exchangeCashActivityRepository.FindOne(map[string]interface{}{"exchangeCashActivityId": createExchangeCashPersonCommand.ExchangeCashActivityId}) | ||
424 | - //if err != nil { | ||
425 | - // return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
426 | - //} | ||
427 | - //if activity == nil { | ||
428 | - // return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string("请设置汇率"))) | ||
429 | - //} else { | ||
430 | - // fmt.Print(activity.Rate) | ||
431 | - //} | ||
432 | - | ||
433 | - // TODO 清单中现金总额超过现金池时创建失败,提示:“已超过投入现金池的未兑换现金” | ||
434 | - | ||
435 | - // TODO 新增兑换清单时,根据uid判断成员是否存在,判断素币值是否超过本人持有的素币 | ||
436 | - | ||
437 | - // TODO 导入兑换清单时,时根据手机账号判断成员是否存在,判断素币是否超过本人持有的素币 | ||
438 | - | 395 | + // 获取兑换活动兑换汇率 |
396 | + var rate float64 | ||
397 | + var exchangeCashActivityRepository domain.ExchangeActivityRepository | ||
398 | + activity, err := exchangeCashActivityRepository.FindOne(map[string]interface{}{"exchangeCashActivityId": createExchangeCashPersonCommand.ExchangeCashActivityId}) | ||
399 | + if err != nil { | ||
400 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
401 | + } | ||
402 | + if activity != nil { | ||
403 | + rate = activity.Rate | ||
404 | + } | ||
405 | + // 根据uid/手机账号判断成员是否存在 | ||
406 | + var employeeRepository domain.EmployeeRepository | ||
407 | + if value, err := factory.CreateEmployeeRepository(map[string]interface{}{ | ||
408 | + "transactionContext": transactionContext, | ||
409 | + }); err != nil { | ||
410 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
411 | + } else { | ||
412 | + employeeRepository = value | ||
413 | + } | ||
414 | + employee, err := employeeRepository.FindOne(map[string]interface{}{ | ||
415 | + "uid": createExchangeCashPersonCommand.Uid, | ||
416 | + "account": createExchangeCashPersonCommand.PersonAccount, | ||
417 | + }) | ||
418 | + if err != nil { | ||
419 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
420 | + } | ||
421 | + if employee == nil { | ||
422 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的员工") | ||
423 | + } | ||
424 | + if employee.SuMoney < createExchangeCashPersonCommand.ExchangedSuMoney { | ||
425 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "当前兑换素币超过本人持有的素币值") | ||
426 | + } | ||
427 | + // 新增兑换清单 | ||
428 | + var exchangeCashPersonListRepository domain.ExchangeCashPersonListRepository | ||
429 | + if value, err := factory.CreateExchangeCashPersonListRepository(map[string]interface{}{ | ||
430 | + "transactionContext": transactionContext, | ||
431 | + }); err != nil { | ||
432 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
433 | + } else { | ||
434 | + exchangeCashPersonListRepository = value | ||
435 | + } | ||
439 | newPerson := &domain.ExchangeCashPersonList{ | 436 | newPerson := &domain.ExchangeCashPersonList{ |
440 | EmployeeInfo: &domain.EmployeeInfo{ | 437 | EmployeeInfo: &domain.EmployeeInfo{ |
441 | - EmployeeName: createExchangeCashPersonCommand.PersonName, | ||
442 | - EmployeeAccount: createExchangeCashPersonCommand.PersonAccount, | 438 | + Uid: employee.EmployeeInfo.Uid, |
439 | + EmployeeName: employee.EmployeeInfo.EmployeeName, | ||
440 | + EmployeeAccount: employee.EmployeeInfo.EmployeeAccount, | ||
443 | }, | 441 | }, |
444 | ExchangeCashActivityId: createExchangeCashPersonCommand.ExchangeCashActivityId, | 442 | ExchangeCashActivityId: createExchangeCashPersonCommand.ExchangeCashActivityId, |
445 | ExchangedSuMoney: createExchangeCashPersonCommand.ExchangedSuMoney, | 443 | ExchangedSuMoney: createExchangeCashPersonCommand.ExchangedSuMoney, |
446 | - ExchangedCash: createExchangeCashPersonCommand.ExchangedSuMoney, | 444 | + ExchangedCash: createExchangeCashPersonCommand.ExchangedSuMoney * rate, |
447 | } | 445 | } |
448 | - | ||
449 | - var exchangeCashPersonListRepository domain.ExchangeCashPersonListRepository | ||
450 | - if value, err := factory.CreateExchangeCashPersonListRepository(map[string]interface{}{ | 446 | + person, err := exchangeCashPersonListRepository.Save(newPerson) |
447 | + if err != nil { | ||
448 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
449 | + } | ||
450 | + // 生成素币流水,更新个人素币 | ||
451 | + var operationSuMoneyService service.OperationSuMoneyService | ||
452 | + if value, err := factory.CreateOperationSuMoneyService(map[string]interface{}{ | ||
451 | "transactionContext": transactionContext, | 453 | "transactionContext": transactionContext, |
452 | }); err != nil { | 454 | }); err != nil { |
453 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 455 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
454 | } else { | 456 | } else { |
455 | - exchangeCashPersonListRepository = value | 457 | + operationSuMoneyService = value |
458 | + } | ||
459 | + operationSuMoneyCommand := &command.OperationSuMoneyCommand{ | ||
460 | + Uid: person.EmployeeInfo.Uid, | ||
461 | + Operator: createExchangeCashPersonCommand.Operator, | ||
462 | + SuMoney: person.ExchangedSuMoney, | ||
463 | + OperationType: 3, | ||
464 | + OperationDescription: "素币兑换现金", | ||
465 | + } | ||
466 | + task, err := operationSuMoneyService.Operation(operationSuMoneyCommand.Uid, operationSuMoneyCommand.Operator, operationSuMoneyCommand.SuMoney, operationSuMoneyCommand.OperationType, operationSuMoneyCommand.OperationDescription) | ||
467 | + if err != nil { | ||
468 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
469 | + } | ||
470 | + if task == nil { | ||
471 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(operationSuMoneyCommand.Uid))) | ||
456 | } | 472 | } |
457 | - if person, err := exchangeCashPersonListRepository.Save(newPerson); err != nil { | 473 | + // 更新兑换活动 |
474 | + if value, err := factory.CreateExchangeCashActivityRepository(map[string]interface{}{ | ||
475 | + "transactionContext": transactionContext, | ||
476 | + }); err != nil { | ||
458 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 477 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
459 | } else { | 478 | } else { |
460 | - // TODO 更新个人素币 | 479 | + exchangeCashActivityRepository = value |
480 | + } | ||
481 | + activityFound, err := exchangeCashActivityRepository.FindOne(map[string]interface{}{"activityId": createExchangeCashPersonCommand.ExchangeCashActivityId}) | ||
482 | + if err != nil { | ||
483 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
484 | + } | ||
485 | + if activityFound == nil { | ||
486 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(createExchangeCashPersonCommand.ExchangeCashActivityId))) | ||
487 | + } | ||
488 | + createExchangeCashPersonCommand.ExchangedSuMoney += activityFound.ExchangedSuMoney | ||
489 | + if err := activityFound.Update(tool_funs.SimpleStructToMap(createExchangeCashPersonCommand)); err != nil { | ||
490 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
491 | + } | ||
492 | + activityUpdated, err := exchangeCashActivityRepository.Save(activityFound) | ||
493 | + if err != nil { | ||
494 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
495 | + } | ||
496 | + if activityUpdated == nil { | ||
497 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(createExchangeCashPersonCommand.ExchangeCashActivityId))) | ||
498 | + } | ||
461 | 499 | ||
462 | - // TODO 更新活动数据 | 500 | + // TODO 判断清单中现金总额超过现金池未兑换现金时创建失败,提示:“已超过投入现金池的未兑换现金” |
463 | 501 | ||
464 | - // TODO 更新现金池数据 | 502 | + // TODO 更新现金池 |
503 | + // 获取现金池 | ||
504 | + // 更新现金池 | ||
465 | 505 | ||
466 | - if err := transactionContext.CommitTransaction(); err != nil { | ||
467 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
468 | - } | ||
469 | - return person, nil | 506 | + if err := transactionContext.CommitTransaction(); err != nil { |
507 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
470 | } | 508 | } |
509 | + return person, nil | ||
471 | } | 510 | } |
472 | 511 | ||
473 | // 返回兑换素币清单 | 512 | // 返回兑换素币清单 |
@@ -558,6 +597,27 @@ func (cashPoolService *CashPoolService) RemoveExchangeCashPerson(removeExchangeC | @@ -558,6 +597,27 @@ func (cashPoolService *CashPoolService) RemoveExchangeCashPerson(removeExchangeC | ||
558 | defer func() { | 597 | defer func() { |
559 | transactionContext.RollbackTransaction() | 598 | transactionContext.RollbackTransaction() |
560 | }() | 599 | }() |
600 | + var exchangeCashPersonListRepository domain.ExchangeCashPersonListRepository | ||
601 | + if value, err := factory.CreateExchangeCashPersonListRepository(map[string]interface{}{ | ||
602 | + "transactionContext": transactionContext, | ||
603 | + }); err != nil { | ||
604 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
605 | + } else { | ||
606 | + exchangeCashPersonListRepository = value | ||
607 | + } | ||
608 | + person, err := exchangeCashPersonListRepository.FindOne(map[string]interface{}{"id": removeExchangeCashPersonCommand.ListId}) | ||
609 | + if err != nil { | ||
610 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
611 | + } | ||
612 | + if person == nil { | ||
613 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(removeExchangeCashPersonCommand.ListId))) | ||
614 | + } | ||
615 | + // 移除兑换素币清单 | ||
616 | + personDeleted, err := exchangeCashPersonListRepository.Remove(person) | ||
617 | + if err != nil { | ||
618 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
619 | + } | ||
620 | + // 生成素币流水,更新个人素币 | ||
561 | var operationSuMoneyService service.OperationSuMoneyService | 621 | var operationSuMoneyService service.OperationSuMoneyService |
562 | if value, err := factory.CreateOperationSuMoneyService(map[string]interface{}{ | 622 | if value, err := factory.CreateOperationSuMoneyService(map[string]interface{}{ |
563 | "transactionContext": transactionContext, | 623 | "transactionContext": transactionContext, |
@@ -566,52 +626,62 @@ func (cashPoolService *CashPoolService) RemoveExchangeCashPerson(removeExchangeC | @@ -566,52 +626,62 @@ func (cashPoolService *CashPoolService) RemoveExchangeCashPerson(removeExchangeC | ||
566 | } else { | 626 | } else { |
567 | operationSuMoneyService = value | 627 | operationSuMoneyService = value |
568 | } | 628 | } |
569 | - var exchangeCashPersonListRepository domain.ExchangeCashPersonListRepository | ||
570 | - if value, err := factory.CreateExchangeCashPersonListRepository(map[string]interface{}{ | 629 | + operationSuMoneyCommand := &command.OperationSuMoneyCommand{ |
630 | + Uid: person.EmployeeInfo.Uid, | ||
631 | + Operator: removeExchangeCashPersonCommand.Operator, | ||
632 | + SuMoney: person.ExchangedSuMoney, | ||
633 | + OperationType: 1, | ||
634 | + OperationDescription: "素币兑换现金调整", | ||
635 | + } | ||
636 | + task, err := operationSuMoneyService.Operation(operationSuMoneyCommand.Uid, operationSuMoneyCommand.Operator, operationSuMoneyCommand.SuMoney, operationSuMoneyCommand.OperationType, operationSuMoneyCommand.OperationDescription) | ||
637 | + if err != nil { | ||
638 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
639 | + } | ||
640 | + if task == nil { | ||
641 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(operationSuMoneyCommand.Uid))) | ||
642 | + } | ||
643 | + // 更新兑换活动 | ||
644 | + var exchangeCashActivityRepository domain.ExchangeActivityRepository | ||
645 | + if value, err := factory.CreateExchangeCashActivityRepository(map[string]interface{}{ | ||
571 | "transactionContext": transactionContext, | 646 | "transactionContext": transactionContext, |
572 | }); err != nil { | 647 | }); err != nil { |
573 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 648 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
574 | } else { | 649 | } else { |
575 | - exchangeCashPersonListRepository = value | 650 | + exchangeCashActivityRepository = value |
576 | } | 651 | } |
577 | - person, err := exchangeCashPersonListRepository.FindOne(map[string]interface{}{"id": removeExchangeCashPersonCommand.ListId}) | 652 | + activityFound, err := exchangeCashActivityRepository.FindOne(map[string]interface{}{"activityId": person.ExchangeCashActivityId}) |
578 | if err != nil { | 653 | if err != nil { |
579 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 654 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
580 | } | 655 | } |
581 | - if person == nil { | ||
582 | - return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(removeExchangeCashPersonCommand.ListId))) | 656 | + if activityFound == nil { |
657 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(person.ExchangeCashActivityId))) | ||
658 | + } | ||
659 | + updateExchangeCashActivityCommand := &command.UpdateExchangeCashActivityCommand{ | ||
660 | + ExchangeCashActivityId: person.ExchangeCashActivityId, | ||
661 | + ExchangedSuMoney: activityFound.ExchangedSuMoney + person.ExchangedSuMoney, | ||
662 | + ExchangedCash: activityFound.ExchangedCash + person.ExchangedCash, | ||
583 | } | 663 | } |
584 | - if personDeleted, err := exchangeCashPersonListRepository.Remove(person); err != nil { | 664 | + if err := activityFound.Update(tool_funs.SimpleStructToMap(updateExchangeCashActivityCommand)); err != nil { |
665 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
666 | + } | ||
667 | + activityUpdated, err := exchangeCashActivityRepository.Save(activityFound) | ||
668 | + if err != nil { | ||
585 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 669 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
586 | - } else { | ||
587 | - // TODO 更新个人素币,个人素币值需要还原,理由:素币兑换现金调整 | ||
588 | - operationSuMoneyCommand := &command.OperationSuMoneyCommand{ | ||
589 | - Uid: person.EmployeeInfo.Uid, | ||
590 | - Operator: removeExchangeCashPersonCommand.Operator, | ||
591 | - SuMoney: 0, | ||
592 | - OperationType: 5, | ||
593 | - OperationDescription: "素币兑换现金调整", | ||
594 | - } | ||
595 | - task, err := operationSuMoneyService.Operation(operationSuMoneyCommand.Uid, operationSuMoneyCommand.Operator, operationSuMoneyCommand.SuMoney, operationSuMoneyCommand.OperationType, operationSuMoneyCommand.OperationDescription) | ||
596 | - if err != nil { | ||
597 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
598 | - } | ||
599 | - if task == nil { | ||
600 | - return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(operationSuMoneyCommand.Uid))) | ||
601 | - } | 670 | + } |
671 | + if activityUpdated == nil { | ||
672 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(updateExchangeCashActivityCommand.ExchangeCashActivityId))) | ||
673 | + } | ||
602 | 674 | ||
603 | - // TODO 更新兑换活动数据 | 675 | + // TODO 更新现金池 |
604 | 676 | ||
605 | - // TODO 更新现金池数据 | ||
606 | 677 | ||
607 | - if err := transactionContext.CommitTransaction(); err != nil { | ||
608 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
609 | - } | ||
610 | - return personDeleted, nil | 678 | + if err := transactionContext.CommitTransaction(); err != nil { |
679 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
611 | } | 680 | } |
681 | + return personDeleted, nil | ||
612 | } | 682 | } |
613 | 683 | ||
614 | -// 更新兑换现金人员 | 684 | +// 更新兑换清单 |
615 | func (cashPoolService *CashPoolService) UpdateExchangeCashPerson(updateExchangeCashPersonCommand *command.UpdateExchangeCashPersonCommand) (interface{}, error) { | 685 | func (cashPoolService *CashPoolService) UpdateExchangeCashPerson(updateExchangeCashPersonCommand *command.UpdateExchangeCashPersonCommand) (interface{}, error) { |
616 | if err := updateExchangeCashPersonCommand.ValidateCommand(); err != nil { | 686 | if err := updateExchangeCashPersonCommand.ValidateCommand(); err != nil { |
617 | return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | 687 | return nil, application.ThrowError(application.ARG_ERROR, err.Error()) |
@@ -626,6 +696,7 @@ func (cashPoolService *CashPoolService) UpdateExchangeCashPerson(updateExchangeC | @@ -626,6 +696,7 @@ func (cashPoolService *CashPoolService) UpdateExchangeCashPerson(updateExchangeC | ||
626 | defer func() { | 696 | defer func() { |
627 | transactionContext.RollbackTransaction() | 697 | transactionContext.RollbackTransaction() |
628 | }() | 698 | }() |
699 | + // 更新兑换清单 | ||
629 | var operationSuMoneyService service.OperationSuMoneyService | 700 | var operationSuMoneyService service.OperationSuMoneyService |
630 | if value, err := factory.CreateOperationSuMoneyService(map[string]interface{}{ | 701 | if value, err := factory.CreateOperationSuMoneyService(map[string]interface{}{ |
631 | "transactionContext": transactionContext, | 702 | "transactionContext": transactionContext, |
@@ -634,7 +705,6 @@ func (cashPoolService *CashPoolService) UpdateExchangeCashPerson(updateExchangeC | @@ -634,7 +705,6 @@ func (cashPoolService *CashPoolService) UpdateExchangeCashPerson(updateExchangeC | ||
634 | } else { | 705 | } else { |
635 | operationSuMoneyService = value | 706 | operationSuMoneyService = value |
636 | } | 707 | } |
637 | - | ||
638 | var exchangeCashPersonListRepository domain.ExchangeCashPersonListRepository | 708 | var exchangeCashPersonListRepository domain.ExchangeCashPersonListRepository |
639 | if value, err := factory.CreateExchangeCashPersonListRepository(map[string]interface{}{ | 709 | if value, err := factory.CreateExchangeCashPersonListRepository(map[string]interface{}{ |
640 | "transactionContext": transactionContext, | 710 | "transactionContext": transactionContext, |
@@ -653,34 +723,38 @@ func (cashPoolService *CashPoolService) UpdateExchangeCashPerson(updateExchangeC | @@ -653,34 +723,38 @@ func (cashPoolService *CashPoolService) UpdateExchangeCashPerson(updateExchangeC | ||
653 | if err := person.Update(tool_funs.SimpleStructToMap(updateExchangeCashPersonCommand)); err != nil { | 723 | if err := person.Update(tool_funs.SimpleStructToMap(updateExchangeCashPersonCommand)); err != nil { |
654 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | 724 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) |
655 | } | 725 | } |
656 | - if personUpdated, err := exchangeCashPersonListRepository.Save(person); err != nil { | 726 | + personUpdated, err := exchangeCashPersonListRepository.Save(person) |
727 | + if err != nil { | ||
657 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 728 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
658 | - } else { | ||
659 | - operationSuMoneyCommand := &command.OperationSuMoneyCommand{ | ||
660 | - Uid: person.EmployeeInfo.Uid, | ||
661 | - Operator: updateExchangeCashPersonCommand.Operator, | ||
662 | - SuMoney: updateExchangeCashPersonCommand.ExchangedSuMoney, | ||
663 | - OperationType: 5, | ||
664 | - OperationDescription: "参与兑换素币活动", | ||
665 | - } | ||
666 | - // TODO 更新个人当前可用素币值,生成素币兑换流水记录(获取更新前的已兑换素币值,判断是扣除还是增加),记录描述:参与素币兑换现金活动(红色表示取活动名称) | ||
667 | - task, err := operationSuMoneyService.Operation(operationSuMoneyCommand.Uid, operationSuMoneyCommand.Operator, operationSuMoneyCommand.SuMoney, operationSuMoneyCommand.OperationType, operationSuMoneyCommand.OperationDescription) | ||
668 | - if err != nil { | ||
669 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
670 | - } | ||
671 | - if task == nil { | ||
672 | - return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(operationSuMoneyCommand.Uid))) | ||
673 | - } | 729 | + } |
674 | 730 | ||
675 | - // TODO 更新兑换活动数据 | 731 | + // TODO 更新兑换活动 |
676 | 732 | ||
677 | - // TODO 更新现金池 | ||
678 | 733 | ||
679 | - if err := transactionContext.CommitTransaction(); err != nil { | ||
680 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
681 | - } | ||
682 | - return personUpdated, nil | 734 | + // TODO 判断现金池未兑换现金 |
735 | + | ||
736 | + | ||
737 | + // TODO 更新现金池 | ||
738 | + | ||
739 | + // 生成素币兑换流水记录,更新员工素币 | ||
740 | + operationSuMoneyCommand := &command.OperationSuMoneyCommand{ | ||
741 | + Uid: person.EmployeeInfo.Uid, | ||
742 | + Operator: updateExchangeCashPersonCommand.Operator, | ||
743 | + SuMoney: updateExchangeCashPersonCommand.ExchangedSuMoney, | ||
744 | + OperationType: 3, | ||
745 | + OperationDescription: "参与兑换素币活动", | ||
746 | + } | ||
747 | + task, err := operationSuMoneyService.Operation(operationSuMoneyCommand.Uid, operationSuMoneyCommand.Operator, operationSuMoneyCommand.SuMoney, operationSuMoneyCommand.OperationType, operationSuMoneyCommand.OperationDescription) | ||
748 | + if err != nil { | ||
749 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
750 | + } | ||
751 | + if task == nil { | ||
752 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(operationSuMoneyCommand.Uid))) | ||
753 | + } | ||
754 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
755 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
683 | } | 756 | } |
757 | + return personUpdated, nil | ||
684 | } | 758 | } |
685 | 759 | ||
686 | func NewCashPoolService(options map[string]interface{}) *CashPoolService { | 760 | func NewCashPoolService(options map[string]interface{}) *CashPoolService { |
@@ -41,8 +41,6 @@ func (suMoneyService *SuMoneyService) OperationSuMoney(operationSuMoneyCommand * | @@ -41,8 +41,6 @@ func (suMoneyService *SuMoneyService) OperationSuMoney(operationSuMoneyCommand * | ||
41 | if task, err := operationSuMoneyService.Operation(operationSuMoneyCommand.Uid, operationSuMoneyCommand.Operator, operationSuMoneyCommand.SuMoney, operationSuMoneyCommand.OperationType, operationSuMoneyCommand.OperationDescription); err != nil { | 41 | if task, err := operationSuMoneyService.Operation(operationSuMoneyCommand.Uid, operationSuMoneyCommand.Operator, operationSuMoneyCommand.SuMoney, operationSuMoneyCommand.OperationType, operationSuMoneyCommand.OperationDescription); err != nil { |
42 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 42 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
43 | } else { | 43 | } else { |
44 | - // TODO 增加、扣除素币和个人贡献值关联,兑换物资不与贡献值关联 | ||
45 | - | ||
46 | if err := transactionContext.CommitTransaction(); err != nil { | 44 | if err := transactionContext.CommitTransaction(); err != nil { |
47 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 45 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
48 | } | 46 | } |
@@ -29,6 +29,8 @@ type CreateTaskCommand struct { | @@ -29,6 +29,8 @@ type CreateTaskCommand struct { | ||
29 | TaskNature int `json:"taskNature,omitempty"` | 29 | TaskNature int `json:"taskNature,omitempty"` |
30 | // 奖励素币 | 30 | // 奖励素币 |
31 | SuMoney float64 `json:"suMoney,omitempty"` | 31 | SuMoney float64 `json:"suMoney,omitempty"` |
32 | + // 奖励素币参考值范围(1000~3000) | ||
33 | + ReferenceSuMoney string `json:"referenceSuMoney"` | ||
32 | // 验收标准 | 34 | // 验收标准 |
33 | AcceptanceStandard string `json:"acceptanceStandard,omitempty"` | 35 | AcceptanceStandard string `json:"acceptanceStandard,omitempty"` |
34 | // 任务描述 | 36 | // 任务描述 |
@@ -325,6 +325,7 @@ func (taskService *TaskService) AcceptanceTask(acceptanceTaskCommand *command.Ac | @@ -325,6 +325,7 @@ func (taskService *TaskService) AcceptanceTask(acceptanceTaskCommand *command.Ac | ||
325 | acceptanceTaskService = value | 325 | acceptanceTaskService = value |
326 | acceptanceTaskService.Subscribe(&subscriber.AbilityServiceSubscriber{}) | 326 | acceptanceTaskService.Subscribe(&subscriber.AbilityServiceSubscriber{}) |
327 | } | 327 | } |
328 | + | ||
328 | if task, err := acceptanceTaskService.Acceptance(acceptanceTaskCommand.TaskId, acceptanceTaskCommand.Operator, acceptanceTaskCommand.Participators, acceptanceTaskCommand.TaskPercentage, acceptanceTaskCommand.ReferenceResourceScore, acceptanceTaskCommand.SolveReport, acceptanceTaskCommand.SolvePictureUrls, acceptanceTaskCommand.ActualCompletionTime); err != nil { | 329 | if task, err := acceptanceTaskService.Acceptance(acceptanceTaskCommand.TaskId, acceptanceTaskCommand.Operator, acceptanceTaskCommand.Participators, acceptanceTaskCommand.TaskPercentage, acceptanceTaskCommand.ReferenceResourceScore, acceptanceTaskCommand.SolveReport, acceptanceTaskCommand.SolvePictureUrls, acceptanceTaskCommand.ActualCompletionTime); err != nil { |
329 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 330 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
330 | } else { | 331 | } else { |
@@ -774,12 +775,9 @@ func (taskService *TaskService) GetRejectTaskRecord(getRejectTaskRecordQuery *qu | @@ -774,12 +775,9 @@ func (taskService *TaskService) GetRejectTaskRecord(getRejectTaskRecordQuery *qu | ||
774 | 775 | ||
775 | // 创建新任务 | 776 | // 创建新任务 |
776 | func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTaskCommand) (interface{}, error) { | 777 | func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTaskCommand) (interface{}, error) { |
777 | - // 校验创建任务命令 | ||
778 | if err := createTaskCommand.ValidateCommand(); err != nil { | 778 | if err := createTaskCommand.ValidateCommand(); err != nil { |
779 | return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | 779 | return nil, application.ThrowError(application.ARG_ERROR, err.Error()) |
780 | } | 780 | } |
781 | - | ||
782 | - // 新建事务 | ||
783 | transactionContext, err := factory.CreateTransactionContext(nil) | 781 | transactionContext, err := factory.CreateTransactionContext(nil) |
784 | if err != nil { | 782 | if err != nil { |
785 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 783 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
@@ -790,8 +788,6 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask | @@ -790,8 +788,6 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask | ||
790 | defer func() { | 788 | defer func() { |
791 | transactionContext.RollbackTransaction() | 789 | transactionContext.RollbackTransaction() |
792 | }() | 790 | }() |
793 | - | ||
794 | - // 新建任务数据访问对象 | ||
795 | var taskDao *dao.TaskDao | 791 | var taskDao *dao.TaskDao |
796 | if value, err := factory.CreateTaskDao(map[string]interface{}{ | 792 | if value, err := factory.CreateTaskDao(map[string]interface{}{ |
797 | "transactionContext": transactionContext, | 793 | "transactionContext": transactionContext, |
@@ -800,8 +796,6 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask | @@ -800,8 +796,6 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask | ||
800 | } else { | 796 | } else { |
801 | taskDao = value | 797 | taskDao = value |
802 | } | 798 | } |
803 | - | ||
804 | - // 获取任务发布者信息 | ||
805 | var employeeRepository domain.EmployeeRepository | 799 | var employeeRepository domain.EmployeeRepository |
806 | if value, err := factory.CreateEmployeeRepository(map[string]interface{}{ | 800 | if value, err := factory.CreateEmployeeRepository(map[string]interface{}{ |
807 | "transactionContext": transactionContext, | 801 | "transactionContext": transactionContext, |
@@ -810,7 +804,6 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask | @@ -810,7 +804,6 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask | ||
810 | } else { | 804 | } else { |
811 | employeeRepository = value | 805 | employeeRepository = value |
812 | } | 806 | } |
813 | - | ||
814 | sponsor, err := employeeRepository.FindOne(map[string]interface{}{ | 807 | sponsor, err := employeeRepository.FindOne(map[string]interface{}{ |
815 | "uid": createTaskCommand.Sponsor, | 808 | "uid": createTaskCommand.Sponsor, |
816 | }) | 809 | }) |
@@ -820,7 +813,6 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask | @@ -820,7 +813,6 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask | ||
820 | if sponsor == nil { | 813 | if sponsor == nil { |
821 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的发布者") | 814 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的发布者") |
822 | } | 815 | } |
823 | - | ||
824 | // 获取任务指派人 | 816 | // 获取任务指派人 |
825 | var assignedPerson *domain.EmployeeInfo | 817 | var assignedPerson *domain.EmployeeInfo |
826 | if createTaskCommand.AssignedPerson != 0 { | 818 | if createTaskCommand.AssignedPerson != 0 { |
@@ -835,8 +827,6 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask | @@ -835,8 +827,6 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask | ||
835 | } | 827 | } |
836 | assignedPerson = employee.EmployeeInfo | 828 | assignedPerson = employee.EmployeeInfo |
837 | } | 829 | } |
838 | - | ||
839 | - // 创建新任务 | ||
840 | newTask := &domain.Task{ | 830 | newTask := &domain.Task{ |
841 | TaskStatus: domain.TASK_STATUS_UNRELEASED, | 831 | TaskStatus: domain.TASK_STATUS_UNRELEASED, |
842 | CompanyId: createTaskCommand.CompanyId, | 832 | CompanyId: createTaskCommand.CompanyId, |
@@ -851,6 +841,7 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask | @@ -851,6 +841,7 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask | ||
851 | CustomerValues: createTaskCommand.CustomerValues, | 841 | CustomerValues: createTaskCommand.CustomerValues, |
852 | TaskNature: createTaskCommand.TaskNature, | 842 | TaskNature: createTaskCommand.TaskNature, |
853 | SuMoney: createTaskCommand.SuMoney, | 843 | SuMoney: createTaskCommand.SuMoney, |
844 | + ReferenceSuMoney: createTaskCommand.ReferenceSuMoney, // 奖励素币范围 | ||
854 | AcceptanceStandard: createTaskCommand.AcceptanceStandard, | 845 | AcceptanceStandard: createTaskCommand.AcceptanceStandard, |
855 | TaskDescription: createTaskCommand.TaskDescription, | 846 | TaskDescription: createTaskCommand.TaskDescription, |
856 | TaskPictureUrls: createTaskCommand.TaskPictureUrls, | 847 | TaskPictureUrls: createTaskCommand.TaskPictureUrls, |
@@ -859,7 +850,6 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask | @@ -859,7 +850,6 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask | ||
859 | PlannedCompletionTime: createTaskCommand.PlannedCompletionTime, | 850 | PlannedCompletionTime: createTaskCommand.PlannedCompletionTime, |
860 | CreateTime: time.Now(), | 851 | CreateTime: time.Now(), |
861 | } | 852 | } |
862 | - | ||
863 | var taskRepository domain.TaskRepository | 853 | var taskRepository domain.TaskRepository |
864 | if value, err := factory.CreateTaskRepository(map[string]interface{}{ | 854 | if value, err := factory.CreateTaskRepository(map[string]interface{}{ |
865 | "transactionContext": transactionContext, | 855 | "transactionContext": transactionContext, |
@@ -922,21 +912,16 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter | @@ -922,21 +912,16 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter | ||
922 | if err := getTaskQuery.ValidateQuery(); err != nil { | 912 | if err := getTaskQuery.ValidateQuery(); err != nil { |
923 | return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | 913 | return nil, application.ThrowError(application.ARG_ERROR, err.Error()) |
924 | } | 914 | } |
925 | - | ||
926 | transactionContext, err := factory.CreateTransactionContext(nil) | 915 | transactionContext, err := factory.CreateTransactionContext(nil) |
927 | - | ||
928 | if err != nil { | 916 | if err != nil { |
929 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 917 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
930 | } | 918 | } |
931 | - | ||
932 | if err := transactionContext.StartTransaction(); err != nil { | 919 | if err := transactionContext.StartTransaction(); err != nil { |
933 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 920 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
934 | } | 921 | } |
935 | - | ||
936 | defer func() { | 922 | defer func() { |
937 | transactionContext.RollbackTransaction() | 923 | transactionContext.RollbackTransaction() |
938 | }() | 924 | }() |
939 | - | ||
940 | var taskRepository domain.TaskRepository | 925 | var taskRepository domain.TaskRepository |
941 | if value, err := factory.CreateTaskRepository(map[string]interface{}{ | 926 | if value, err := factory.CreateTaskRepository(map[string]interface{}{ |
942 | "transactionContext": transactionContext, | 927 | "transactionContext": transactionContext, |
@@ -945,18 +930,14 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter | @@ -945,18 +930,14 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter | ||
945 | } else { | 930 | } else { |
946 | taskRepository = value | 931 | taskRepository = value |
947 | } | 932 | } |
948 | - | ||
949 | task, err := taskRepository.FindOne(map[string]interface{}{"taskId": getTaskQuery.TaskId}) | 933 | task, err := taskRepository.FindOne(map[string]interface{}{"taskId": getTaskQuery.TaskId}) |
950 | - | ||
951 | if err != nil { | 934 | if err != nil { |
952 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 935 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
953 | } | 936 | } |
954 | - | ||
955 | if task == nil { | 937 | if task == nil { |
956 | return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(getTaskQuery.TaskId))) | 938 | return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(getTaskQuery.TaskId))) |
957 | } else { | 939 | } else { |
958 | var projectBelongRepository domain.ProjectBelongRepository | 940 | var projectBelongRepository domain.ProjectBelongRepository |
959 | - | ||
960 | if value, err := factory.CreateProjectBelongRepository(map[string]interface{}{ | 941 | if value, err := factory.CreateProjectBelongRepository(map[string]interface{}{ |
961 | "transactionContext": transactionContext, | 942 | "transactionContext": transactionContext, |
962 | }); err != nil { | 943 | }); err != nil { |
@@ -964,9 +945,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter | @@ -964,9 +945,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter | ||
964 | } else { | 945 | } else { |
965 | projectBelongRepository = value | 946 | projectBelongRepository = value |
966 | } | 947 | } |
967 | - | ||
968 | projectBelongMap := make(map[int]*domain.ProjectBelong) | 948 | projectBelongMap := make(map[int]*domain.ProjectBelong) |
969 | - | ||
970 | if _, projectBelongs, err := projectBelongRepository.Find(map[string]interface{}{ | 949 | if _, projectBelongs, err := projectBelongRepository.Find(map[string]interface{}{ |
971 | "companyId": task.CompanyId, | 950 | "companyId": task.CompanyId, |
972 | }); err != nil { | 951 | }); err != nil { |
@@ -976,9 +955,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter | @@ -976,9 +955,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter | ||
976 | projectBelongMap[projectBelong.ProjectBelongId] = projectBelong | 955 | projectBelongMap[projectBelong.ProjectBelongId] = projectBelong |
977 | } | 956 | } |
978 | } | 957 | } |
979 | - | ||
980 | var customerValueRepository domain.CustomerValueRepository | 958 | var customerValueRepository domain.CustomerValueRepository |
981 | - | ||
982 | if value, err := factory.CreateCustomerValueRepository(map[string]interface{}{ | 959 | if value, err := factory.CreateCustomerValueRepository(map[string]interface{}{ |
983 | "transactionContext": transactionContext, | 960 | "transactionContext": transactionContext, |
984 | }); err != nil { | 961 | }); err != nil { |
@@ -986,9 +963,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter | @@ -986,9 +963,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter | ||
986 | } else { | 963 | } else { |
987 | customerValueRepository = value | 964 | customerValueRepository = value |
988 | } | 965 | } |
989 | - | ||
990 | customerValueMap := make(map[int]*domain.CustomerValue) | 966 | customerValueMap := make(map[int]*domain.CustomerValue) |
991 | - | ||
992 | if _, customerValues, err := customerValueRepository.Find(map[string]interface{}{ | 967 | if _, customerValues, err := customerValueRepository.Find(map[string]interface{}{ |
993 | "companyId": task.CompanyId, | 968 | "companyId": task.CompanyId, |
994 | }); err != nil { | 969 | }); err != nil { |
@@ -998,9 +973,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter | @@ -998,9 +973,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter | ||
998 | customerValueMap[customerValue.CustomerValueId] = customerValue | 973 | customerValueMap[customerValue.CustomerValueId] = customerValue |
999 | } | 974 | } |
1000 | } | 975 | } |
1001 | - | ||
1002 | var taskNatureRepository domain.TaskNatureRepository | 976 | var taskNatureRepository domain.TaskNatureRepository |
1003 | - | ||
1004 | if value, err := factory.CreateTaskNatureRepository(map[string]interface{}{ | 977 | if value, err := factory.CreateTaskNatureRepository(map[string]interface{}{ |
1005 | "transactionContext": transactionContext, | 978 | "transactionContext": transactionContext, |
1006 | }); err != nil { | 979 | }); err != nil { |
@@ -1008,9 +981,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter | @@ -1008,9 +981,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter | ||
1008 | } else { | 981 | } else { |
1009 | taskNatureRepository = value | 982 | taskNatureRepository = value |
1010 | } | 983 | } |
1011 | - | ||
1012 | taskNatureMap := make(map[int]*domain.TaskNature) | 984 | taskNatureMap := make(map[int]*domain.TaskNature) |
1013 | - | ||
1014 | if _, taskNatures, err := taskNatureRepository.Find(map[string]interface{}{ | 985 | if _, taskNatures, err := taskNatureRepository.Find(map[string]interface{}{ |
1015 | "companyId": task.CompanyId, | 986 | "companyId": task.CompanyId, |
1016 | }); err != nil { | 987 | }); err != nil { |
@@ -1020,16 +991,13 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter | @@ -1020,16 +991,13 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter | ||
1020 | taskNatureMap[taskNature.TaskNatureId] = taskNature | 991 | taskNatureMap[taskNature.TaskNatureId] = taskNature |
1021 | } | 992 | } |
1022 | } | 993 | } |
1023 | - | ||
1024 | taskDto := &dto.TaskDto{} | 994 | taskDto := &dto.TaskDto{} |
1025 | - | ||
1026 | if err := taskDto.LoadDto(task, projectBelongMap, customerValueMap, taskNatureMap); err != nil { | 995 | if err := taskDto.LoadDto(task, projectBelongMap, customerValueMap, taskNatureMap); err != nil { |
1027 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 996 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
1028 | } | 997 | } |
1029 | if err := transactionContext.CommitTransaction(); err != nil { | 998 | if err := transactionContext.CommitTransaction(); err != nil { |
1030 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 999 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
1031 | } | 1000 | } |
1032 | - | ||
1033 | return taskDto, nil | 1001 | return taskDto, nil |
1034 | } | 1002 | } |
1035 | } | 1003 | } |
@@ -1241,9 +1209,17 @@ func (taskService *TaskService) ListTask(listTaskQuery *query.ListTaskQuery) (in | @@ -1241,9 +1209,17 @@ func (taskService *TaskService) ListTask(listTaskQuery *query.ListTaskQuery) (in | ||
1241 | if err := transactionContext.CommitTransaction(); err != nil { | 1209 | if err := transactionContext.CommitTransaction(); err != nil { |
1242 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 1210 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
1243 | } | 1211 | } |
1212 | + // 拼接奖励素币范围值 | ||
1213 | + var retTasks []*domain.Task | ||
1214 | + for _, task := range tasks { | ||
1215 | + if task.ReferenceSuMoney == "" { | ||
1216 | + task.ReferenceSuMoney = "0~" + fmt.Sprintf("%.0f", task.SuMoney) | ||
1217 | + } | ||
1218 | + retTasks = append(retTasks, task) | ||
1219 | + } | ||
1244 | return map[string]interface{}{ | 1220 | return map[string]interface{}{ |
1245 | "count": count, | 1221 | "count": count, |
1246 | - "tasks": tasks, | 1222 | + "tasks": retTasks, |
1247 | }, nil | 1223 | }, nil |
1248 | } | 1224 | } |
1249 | } | 1225 | } |
@@ -17,6 +17,7 @@ type CashPool struct { | @@ -17,6 +17,7 @@ type CashPool struct { | ||
17 | 17 | ||
18 | type CashPoolRepository interface { | 18 | type CashPoolRepository interface { |
19 | Save(cashPool *CashPool) (*CashPool, error) | 19 | Save(cashPool *CashPool) (*CashPool, error) |
20 | + FindOne(queryOptions map[string]interface{}) (*CashPool, error) | ||
20 | Find(queryOptions map[string]interface{}) (int64, []*CashPool, error) | 21 | Find(queryOptions map[string]interface{}) (int64, []*CashPool, error) |
21 | } | 22 | } |
22 | 23 |
@@ -50,6 +50,8 @@ type Task struct { | @@ -50,6 +50,8 @@ type Task struct { | ||
50 | TaskNature int `json:"taskNature"` | 50 | TaskNature int `json:"taskNature"` |
51 | // 奖励素币 | 51 | // 奖励素币 |
52 | SuMoney float64 `json:"suMoney"` | 52 | SuMoney float64 `json:"suMoney"` |
53 | + // 奖励素币参考值 | ||
54 | + ReferenceSuMoney string `json:"referenceSuMoney"` | ||
53 | // 验收标准 | 55 | // 验收标准 |
54 | AcceptanceStandard string `json:"acceptanceStandard"` | 56 | AcceptanceStandard string `json:"acceptanceStandard"` |
55 | // 任务描述 | 57 | // 任务描述 |
@@ -10,47 +10,71 @@ type CashPoolDao struct { | @@ -10,47 +10,71 @@ type CashPoolDao struct { | ||
10 | transactionContext *pgTransaction.TransactionContext | 10 | transactionContext *pgTransaction.TransactionContext |
11 | } | 11 | } |
12 | 12 | ||
13 | -// 计算系统素币 | ||
14 | -func (dao *CashPoolDao) CalculateSystemSuMoney(companyId int64) ( float64, float64, error) { | ||
15 | - var systemUnExchangeSuMoney float64 | ||
16 | - var systemExchangedSuMoney float64 | 13 | +// 计算系统已兑换素币、未兑换素币 |
14 | +//func (dao *CashPoolDao) CalculateSystemSuMoney(companyId int64) ( map[string]interface{}, error) { | ||
15 | +// var systemUnExchangeSuMoney float64 | ||
16 | +// var systemExchangedSuMoney float64 | ||
17 | +// tx := dao.transactionContext.PgTx | ||
18 | +// employeeModel := new(models.Employee) | ||
19 | +// if err := tx.Model(employeeModel). | ||
20 | +// ColumnExpr("sum(employee.su_money) AS system_unExchange_su_money"). | ||
21 | +// Where("employee.company_id = ?", companyId). | ||
22 | +// Select(&systemUnExchangeSuMoney); err != nil { | ||
23 | +// return nil, err | ||
24 | +// } | ||
25 | +// exchangeCashActivityModel := new(models.ExchangeCashActivity) | ||
26 | +// if err := tx.Model(exchangeCashActivityModel). | ||
27 | +// ColumnExpr("sum(exchange_cash_activity.exchanged_su_money) AS system_changed_su_money"). | ||
28 | +// Where("exchange_cash_activity.company_id = ?", companyId). | ||
29 | +// Select(&systemExchangedSuMoney); err != nil { | ||
30 | +// return nil, err | ||
31 | +// } | ||
32 | +// return map[string]interface{}{ | ||
33 | +// "systemUnExchangeSuMoney": systemUnExchangeSuMoney, | ||
34 | +// "systemExchangedSuMoney": systemExchangedSuMoney, | ||
35 | +// }, nil | ||
36 | +//} | ||
17 | 37 | ||
18 | - tx := dao.transactionContext.PgTx | ||
19 | - | ||
20 | - employeeModel := new(models.Employee) | ||
21 | - if err := tx.Model(employeeModel). | ||
22 | - ColumnExpr("sum(employee.su_money) AS system_unExchange_su_money"). | ||
23 | - Where("employee.company_id = ?", companyId). | ||
24 | - Select(&systemUnExchangeSuMoney); err != nil { | ||
25 | - return 0, 0, err | ||
26 | - } | ||
27 | - | ||
28 | - exchangeCashActivityModel := new(models.ExchangeCashActivity) | ||
29 | - if err := tx.Model(exchangeCashActivityModel). | ||
30 | - ColumnExpr("sum(exchange_cash_activity.exchanged_su_money) AS system_changed_su_money"). | ||
31 | - Where("exchange_cash_activity.company_id = ?", companyId). | ||
32 | - Select(&systemExchangedSuMoney); err != nil { | ||
33 | - return 0, 0, err | ||
34 | - } | ||
35 | - | ||
36 | - return systemUnExchangeSuMoney, systemExchangedSuMoney, nil | ||
37 | -} | ||
38 | - | ||
39 | -// 计算系统已兑换现金 | ||
40 | -func (dao *CashPoolDao) CalculateSystemCash(companyId int64) (float64, error) { | ||
41 | - var systemExchangedCash float64 // 系统已兑换现金 | 38 | +// 计算系统已兑换现金、未兑换现金 |
39 | +//func (dao *CashPoolDao) CalculateSystemCash(companyId int64) (map[string]interface{}, error) { | ||
40 | +// var systemExchangedCash float64 // 系统已兑换现金 | ||
41 | +// var systemUnExchangeCash float64 // 系统未兑换现金 | ||
42 | +// tx := dao.transactionContext.PgTx | ||
43 | +// exchangeCashActivityModel := new(models.ExchangeCashActivity) | ||
44 | +// if err := tx.Model(exchangeCashActivityModel). | ||
45 | +// ColumnExpr("sum(exchange_cash_activity.exchanged_cash) AS system_exchanged_cash"). | ||
46 | +// Where("exchange_cash_activity.company_id = ?", companyId). | ||
47 | +// Select(&systemExchangedCash) ; err != nil { | ||
48 | +// return nil, err | ||
49 | +// } | ||
50 | +// return map[string]interface{}{ | ||
51 | +// "systemExchangedCash": systemExchangedCash, | ||
52 | +// "systemUnExchangeCash": systemUnExchangeCash, | ||
53 | +// }, nil | ||
54 | +//} | ||
42 | 55 | ||
56 | +// 兑换兑换活动已兑换素币、已兑换现金 | ||
57 | +func (dao *CashPoolDao) CalculateActivityExchangedSuMoney(activityId int64) (map[string]interface{}, error) { | ||
58 | + var activityExchangedSuMoney float64 | ||
59 | + var activityExchangedCash float64 | ||
43 | tx := dao.transactionContext.PgTx | 60 | tx := dao.transactionContext.PgTx |
44 | - exchangeCashActivityModel := new(models.ExchangeCashActivity) | ||
45 | - | ||
46 | - if err := tx.Model(exchangeCashActivityModel). | ||
47 | - ColumnExpr("sum(exchange_cash_activity.exchanged_cash) AS system_exchanged_cash"). | ||
48 | - Where("exchange_cash_activity.company_id = ?", companyId). | ||
49 | - Select(&systemExchangedCash) ; err != nil { | ||
50 | - return 0, err | 61 | + exchangeCashPersonListModels := new(models.ExchangeCashPersonList) |
62 | + if err := tx.Model(exchangeCashPersonListModels). | ||
63 | + ColumnExpr("sum(exchange_cash_person_lists.exchanged_su_money) AS activity_exchanged_su_money"). | ||
64 | + Where("exchange_cash_person_lists.activity_id = ?", activityId). | ||
65 | + Select(&activityExchangedSuMoney); err !=nil { | ||
66 | + return nil, err | ||
51 | } | 67 | } |
52 | - | ||
53 | - return systemExchangedCash, nil | 68 | + if err := tx.Model(exchangeCashPersonListModels). |
69 | + ColumnExpr("sum(exchange_cash_person_lists.exchanged_cash) AS activity_exchanged_cash"). | ||
70 | + Where("exchange_cash_person_lists.activity_id = ?", activityId). | ||
71 | + Select(&activityExchangedCash); err !=nil { | ||
72 | + return nil, err | ||
73 | + } | ||
74 | + return map[string]interface{}{ | ||
75 | + "activityExchangedSuMoney": activityExchangedSuMoney, | ||
76 | + "activityExchangedCash": activityExchangedCash, | ||
77 | + }, nil | ||
54 | } | 78 | } |
55 | 79 | ||
56 | func NewCashPoolDao(transactionContext *pgTransaction.TransactionContext) (*CashPoolDao, error) { | 80 | func NewCashPoolDao(transactionContext *pgTransaction.TransactionContext) (*CashPoolDao, error) { |
@@ -114,22 +114,26 @@ func (dao *EmployeeDao) CalculatePersonSuMoney(uid int64) (map[string]interface{ | @@ -114,22 +114,26 @@ func (dao *EmployeeDao) CalculatePersonSuMoney(uid int64) (map[string]interface{ | ||
114 | }, nil | 114 | }, nil |
115 | } | 115 | } |
116 | 116 | ||
117 | -// 计算系统素币 | 117 | +// 系统已兑换素币、未兑换素币 |
118 | func (dao *EmployeeDao) CalculateSystemSuMoney(companyId int64) (map[string] interface{}, error) { | 118 | func (dao *EmployeeDao) CalculateSystemSuMoney(companyId int64) (map[string] interface{}, error) { |
119 | var systemUnExchangeSuMoney float64 | 119 | var systemUnExchangeSuMoney float64 |
120 | var systemExchangedSuMoney float64 | 120 | var systemExchangedSuMoney float64 |
121 | tx := dao.transactionContext.PgTx | 121 | tx := dao.transactionContext.PgTx |
122 | - suMoneyTransactionRecordModel := new(models.SuMoneyTransactionRecord) | ||
123 | - if err := tx.Model(suMoneyTransactionRecordModel).Join("JOIN employees AS e ON e.uid = (su_money_transaction_records.employee->>'uid')::bigint"). | ||
124 | - ColumnExpr("sum(su_money_transaction_record.current_su_money) AS system_unExchange_su_money"). | 122 | + // 系统未兑换素币 |
123 | + employeeModel := new(models.Employee) | ||
124 | + if err := tx.Model(employeeModel). | ||
125 | + ColumnExpr("sum(employee.su_money) AS system_unExchange_su_money"). | ||
125 | Where("employee.company_id = ?", companyId). | 126 | Where("employee.company_id = ?", companyId). |
126 | - Where(`su_money_transaction_record.record_type = ?`, 5). | 127 | + Where("employee.status = ?", 1). |
127 | Select(&systemUnExchangeSuMoney); err != nil { | 128 | Select(&systemUnExchangeSuMoney); err != nil { |
128 | return nil, err | 129 | return nil, err |
129 | } | 130 | } |
131 | + // 系统已兑换现金素币 | ||
132 | + suMoneyTransactionRecordModel := new(models.SuMoneyTransactionRecord) | ||
130 | if err := tx.Model(suMoneyTransactionRecordModel).Join("JOIN employees AS e ON e.uid = (su_money_transaction_records.employee->>'uid')::bigint"). | 133 | if err := tx.Model(suMoneyTransactionRecordModel).Join("JOIN employees AS e ON e.uid = (su_money_transaction_records.employee->>'uid')::bigint"). |
131 | ColumnExpr("sum(su_money_transaction_record.su_money) AS system_changed_su_money"). | 134 | ColumnExpr("sum(su_money_transaction_record.su_money) AS system_changed_su_money"). |
132 | - Where("employee.company_id = ?", companyId). | 135 | + Where("e.company_id = ?", companyId). |
136 | + Where("e.status = ?", 1). | ||
133 | Where(`su_money_transaction_record.record_type = ?`, 5). | 137 | Where(`su_money_transaction_record.record_type = ?`, 5). |
134 | Select(&systemExchangedSuMoney); err != nil { | 138 | Select(&systemExchangedSuMoney); err != nil { |
135 | return nil, err | 139 | return nil, err |
@@ -140,38 +144,40 @@ func (dao *EmployeeDao) CalculateSystemSuMoney(companyId int64) (map[string] int | @@ -140,38 +144,40 @@ func (dao *EmployeeDao) CalculateSystemSuMoney(companyId int64) (map[string] int | ||
140 | },nil | 144 | },nil |
141 | } | 145 | } |
142 | 146 | ||
143 | -// 计算系统现金 | 147 | +// 计算系统已兑换现金、未兑换现金 |
144 | func (dao *EmployeeDao) CalculateSystemCash(companyId int64) (map[string] interface{}, error) { | 148 | func (dao *EmployeeDao) CalculateSystemCash(companyId int64) (map[string] interface{}, error) { |
149 | + tx := dao.transactionContext.PgTx | ||
145 | var ( | 150 | var ( |
146 | systemUnExchangeCash float64 | 151 | systemUnExchangeCash float64 |
147 | systemExchangedCash float64 | 152 | systemExchangedCash float64 |
148 | ) | 153 | ) |
149 | - tx := dao.transactionContext.PgTx | 154 | + // 系统已兑换现金 |
150 | suMoneyTransactionRecordModel := new(models.SuMoneyTransactionRecord) | 155 | suMoneyTransactionRecordModel := new(models.SuMoneyTransactionRecord) |
151 | if err := tx.Model(suMoneyTransactionRecordModel).Join("JOIN employees AS e ON e.uid = (su_money_transaction_records.employee->>'uid')::bigint"). | 156 | if err := tx.Model(suMoneyTransactionRecordModel).Join("JOIN employees AS e ON e.uid = (su_money_transaction_records.employee->>'uid')::bigint"). |
152 | ColumnExpr("sum(su_money_transaction_record.cash) AS system_exchanged_cash"). | 157 | ColumnExpr("sum(su_money_transaction_record.cash) AS system_exchanged_cash"). |
153 | - Where("employee.company_id = ?", companyId). | 158 | + Where("e.company_id = ?", companyId). |
159 | + //Where(`e.status = ?`, 1). | ||
154 | Where(`su_money_transaction_record.record_type = ?`, 5). | 160 | Where(`su_money_transaction_record.record_type = ?`, 5). |
155 | Select(&systemExchangedCash) ; err != nil { | 161 | Select(&systemExchangedCash) ; err != nil { |
156 | return nil, err | 162 | return nil, err |
157 | } | 163 | } |
158 | - | 164 | + // 系统未兑换现金 |
159 | cashPool := new(models.CashPool) | 165 | cashPool := new(models.CashPool) |
160 | if err := tx.Model(cashPool). | 166 | if err := tx.Model(cashPool). |
161 | Column("un_exchange_cash"). | 167 | Column("un_exchange_cash"). |
162 | - Where("cash_pool.company_id = ?", companyId). | ||
163 | - Order("id DSC"). | 168 | + Where("cash_pools.company_id = ?", companyId). |
169 | + Order("id DESC"). | ||
164 | Limit(1). | 170 | Limit(1). |
165 | Select(&systemUnExchangeCash) ; err != nil { | 171 | Select(&systemUnExchangeCash) ; err != nil { |
166 | return nil, err | 172 | return nil, err |
167 | } | 173 | } |
168 | - | ||
169 | return map[string] interface{} { | 174 | return map[string] interface{} { |
170 | "systemUnExchangeCash": systemUnExchangeCash, | 175 | "systemUnExchangeCash": systemUnExchangeCash, |
171 | "systemExchangedCash": systemExchangedCash, | 176 | "systemExchangedCash": systemExchangedCash, |
172 | }, nil | 177 | }, nil |
173 | } | 178 | } |
174 | 179 | ||
180 | +// 个人素币事务统计 | ||
175 | func (dao *EmployeeDao) CalculateSuMoneyTransactionRecord(uid int64, transactionStartTime time.Time, transactionEndTime time.Time) (map[string]interface{}, error) { | 181 | func (dao *EmployeeDao) CalculateSuMoneyTransactionRecord(uid int64, transactionStartTime time.Time, transactionEndTime time.Time) (map[string]interface{}, error) { |
176 | var incomeSuMoney float64 // 收入的素币(2:任务奖励,3:增加) | 182 | var incomeSuMoney float64 // 收入的素币(2:任务奖励,3:增加) |
177 | var expendSuMoney float64 // 消耗的素币(1:兑换物资,4:扣除, 5: 兑换现金) | 183 | var expendSuMoney float64 // 消耗的素币(1:兑换物资,4:扣除, 5: 兑换现金) |
@@ -201,47 +207,89 @@ func (dao *EmployeeDao) CalculateSuMoneyTransactionRecord(uid int64, transaction | @@ -201,47 +207,89 @@ func (dao *EmployeeDao) CalculateSuMoneyTransactionRecord(uid int64, transaction | ||
201 | }, nil | 207 | }, nil |
202 | } | 208 | } |
203 | 209 | ||
204 | -func (dao *EmployeeDao) CalculateEmployeesSuMoney(companyId int) (map[string]interface{}, error) { | 210 | +// 员工财富值统计 |
211 | +func (dao *EmployeeDao) CalculateEmployeesSuMoney(companyId int, startTime time.Time, endTime time.Time) (map[string]interface{}, error) { | ||
205 | tx := dao.transactionContext.PgTx | 212 | tx := dao.transactionContext.PgTx |
206 | - var res []struct { | 213 | + var ret []struct { |
214 | + Uid int | ||
215 | + EmployeeName string | ||
207 | EmployeesSuMoney float64 | 216 | EmployeesSuMoney float64 |
208 | - Employee domain.Employee | 217 | + //Employee domain.Employee |
209 | } | 218 | } |
210 | suMoneyTransactionRecordModel := new(models.SuMoneyTransactionRecord) | 219 | suMoneyTransactionRecordModel := new(models.SuMoneyTransactionRecord) |
211 | if err := tx.Model(suMoneyTransactionRecordModel).Join("JOIN employees AS e ON e.uid = (su_money_transaction_record.employee->>'uid')::bigint"). | 220 | if err := tx.Model(suMoneyTransactionRecordModel).Join("JOIN employees AS e ON e.uid = (su_money_transaction_record.employee->>'uid')::bigint"). |
212 | - Column("su_money_transaction_record.employee, (su_money_transaction_record.employee->>'employeeName')::text,"). | ||
213 | - ColumnExpr("sum(su_money_transaction_record.current_su_money) AS employee_su_money"). | 221 | + Column("su_money_transaction_records.employee, (su_money_transaction_records.employee->>'employeeName')::text,"). |
222 | + ColumnExpr("su_money_transaction_records.employee->>'uid' AS uid, su_money_transaction_records.employee->>'employeeName' AS employeeName, sum(su_money_transaction_records.su_money) AS employee_su_money"). | ||
214 | Where(`e.company_id = ?`, companyId). | 223 | Where(`e.company_id = ?`, companyId). |
215 | Where(`e.status = ?`, 1). | 224 | Where(`e.status = ?`, 1). |
216 | - Where(`su_money_transaction_record.record_type IN (?)`, pg.In([]int{2, 3})). | ||
217 | - Group("su_money_transaction_record.employee"). | 225 | + Where(`su_money_transaction_records.record_type IN (?)`, pg.In([]int{2, 3})). // 增加,任务奖励的 |
226 | + Where(`su_money_transaction_records.create_time > ?`, startTime). | ||
227 | + Where(`su_money_transaction_records.create_time < ?`, endTime). | ||
228 | + Group("su_money_transaction_records.employee"). | ||
218 | Order("employee_su_money DESC"). | 229 | Order("employee_su_money DESC"). |
219 | - Select(&res); err != nil { | 230 | + Select(&ret); err != nil { |
220 | return nil, err | 231 | return nil, err |
221 | } | 232 | } |
222 | return map[string]interface{}{ | 233 | return map[string]interface{}{ |
223 | - "employeesSuMoney": res, | 234 | + "employeesSuMoney": ret, |
224 | }, nil | 235 | }, nil |
225 | } | 236 | } |
226 | 237 | ||
227 | -func (dao *EmployeeDao) CalculateEmployeesContributions(companyId int) (map[string]interface{}, error) { | 238 | +// 员工贡献值统计 |
239 | +func (dao *EmployeeDao) CalculateEmployeesContributions(companyId int, startTime time.Time, endTime time.Time) (map[string]interface{}, error) { | ||
228 | tx := dao.transactionContext.PgTx | 240 | tx := dao.transactionContext.PgTx |
229 | - var ret []struct { | 241 | + var ret []struct { // 员工贡献值 |
242 | + Uid int | ||
243 | + EmployeeName string | ||
244 | + EmployeesContributions float64 | ||
245 | + //Employee domain.Employee | ||
246 | + } | ||
247 | + var retDecrease []struct { // 员工减少的贡献值 | ||
248 | + Uid int | ||
249 | + EmployeeName string | ||
230 | EmployeesContributions float64 | 250 | EmployeesContributions float64 |
231 | - Employee domain.Employee | 251 | + //Employee domain.Employee |
232 | } | 252 | } |
253 | + //var employeesContributionsIncrease []struct{} // 员工增加的贡献值列表 | ||
254 | + //var employeesContributionsDecrease []struct{} // | ||
255 | + //var employeesContributions []struct{} | ||
233 | suMoneyTransactionRecordModel := new(models.SuMoneyTransactionRecord) | 256 | suMoneyTransactionRecordModel := new(models.SuMoneyTransactionRecord) |
234 | - if err := tx.Model(suMoneyTransactionRecordModel).Join("JOIN employees AS e ON e.uid = (su_money_transaction_record.employee->>'uid')::bigint"). | ||
235 | - Column("su_money_transaction_record.employee"). | ||
236 | - ColumnExpr("sum(s.current_su_money) AS employees_contributions"). | 257 | + // 增加的贡献值 |
258 | + if err := tx.Model(suMoneyTransactionRecordModel).Join("JOIN employees AS e ON e.uid = (su_money_transaction_records.employee->>'uid')::bigint"). | ||
259 | + Column("su_money_transaction_records.employee"). | ||
260 | + ColumnExpr("su_money_transaction_records.employee->>'uid' AS uid, su_money_transaction_records.employee->>'employeeName' AS employeeName, sum(su_money_transaction_records.su_money) AS employees_contributions_increase"). | ||
237 | Where(`e.company_id = ?`, companyId). | 261 | Where(`e.company_id = ?`, companyId). |
238 | - Where(`su_money_transaction_record.record_type = ?`, 2). | 262 | + Where(`su_money_transaction_records.record_type IN (?)`, pg.In([]int{2, 3})). |
239 | Where(`e.status = ?`, 1). | 263 | Where(`e.status = ?`, 1). |
240 | - Group("su_money_transaction_record.employee"). | 264 | + Where(`su_money_transaction_records.create_time > ?`, startTime). |
265 | + Where(`su_money_transaction_records.create_time < ?`, endTime). | ||
266 | + Group("su_money_transaction_records.employee"). | ||
241 | Order("employees_contributions DESC"). | 267 | Order("employees_contributions DESC"). |
242 | Select(&ret); err != nil { | 268 | Select(&ret); err != nil { |
243 | return nil, err | 269 | return nil, err |
244 | } | 270 | } |
271 | + // 减少的贡献值 | ||
272 | + if err := tx.Model(suMoneyTransactionRecordModel).Join("JOIN employees AS e ON e.uid = (su_money_transaction_records.employee->>'uid')::bigint"). | ||
273 | + Column("su_money_transaction_records.employee"). | ||
274 | + ColumnExpr("sum(su_money_transaction_records.su_money) AS employees_contributions_decrease"). | ||
275 | + Where(`e.company_id = ?`, companyId). | ||
276 | + Where(`su_money_transaction_records.record_type = ?`, 4). | ||
277 | + Where(`e.status = ?`, 1). | ||
278 | + Where(`su_money_transaction_records.create_time > ?`, startTime). | ||
279 | + Where(`su_money_transaction_records.create_time < ?`, endTime). | ||
280 | + Group("su_money_transaction_records.employee"). | ||
281 | + Order("employees_contributions DESC"). | ||
282 | + Select(&retDecrease); err != nil { | ||
283 | + return nil, err | ||
284 | + } | ||
285 | + // merge两个贡献值 | ||
286 | + for i := 0; i < len(ret); i++ { | ||
287 | + for j := 0; j < len(retDecrease); j++ { | ||
288 | + if ret[i].Uid == retDecrease[j].Uid { | ||
289 | + ret[i].EmployeesContributions -= retDecrease[j].EmployeesContributions | ||
290 | + } | ||
291 | + } | ||
292 | + } | ||
245 | return map[string]interface{}{ | 293 | return map[string]interface{}{ |
246 | "employeesContributions": ret, | 294 | "employeesContributions": ret, |
247 | }, nil | 295 | }, nil |
@@ -57,14 +57,18 @@ func (service *OperationSuMoneyService) Operation(uid int64, operatorUid int64, | @@ -57,14 +57,18 @@ func (service *OperationSuMoneyService) Operation(uid int64, operatorUid int64, | ||
57 | } | 57 | } |
58 | var recordType int | 58 | var recordType int |
59 | var transferSuMoney float64 | 59 | var transferSuMoney float64 |
60 | - if operationType == 1 { | 60 | + if operationType == 1 { // 增加 |
61 | recordType = domain.SU_MONEY_TRANSACTION_RECORD_TYPE_INCREASE | 61 | recordType = domain.SU_MONEY_TRANSACTION_RECORD_TYPE_INCREASE |
62 | transferSuMoney = suMoney | 62 | transferSuMoney = suMoney |
63 | } | 63 | } |
64 | - if operationType == 2 { | 64 | + if operationType == 2 { // 扣除 |
65 | recordType = domain.SU_MONEY_TRANSACTION_RECORD_TYPE_DEDUCT | 65 | recordType = domain.SU_MONEY_TRANSACTION_RECORD_TYPE_DEDUCT |
66 | transferSuMoney = 0 - suMoney | 66 | transferSuMoney = 0 - suMoney |
67 | } | 67 | } |
68 | + if operationType == 3 { // 兑换现金 | ||
69 | + recordType = domain.SU_MONEY_TRANSACTION_RECORD_TYPE_EXCHANGE_CASH | ||
70 | + transferSuMoney = 0 - suMoney | ||
71 | + } | ||
68 | suMoneyTransactionRecord := &domain.SuMoneyTransactionRecord{ | 72 | suMoneyTransactionRecord := &domain.SuMoneyTransactionRecord{ |
69 | RecordType: recordType, | 73 | RecordType: recordType, |
70 | Employee: employee.EmployeeInfo, | 74 | Employee: employee.EmployeeInfo, |
@@ -29,6 +29,8 @@ type Task struct { | @@ -29,6 +29,8 @@ type Task struct { | ||
29 | TaskNature int | 29 | TaskNature int |
30 | // 奖励素币 | 30 | // 奖励素币 |
31 | SuMoney float64 | 31 | SuMoney float64 |
32 | + // 奖励素币参考值范围值 | ||
33 | + ReferenceSuMoney string | ||
32 | // 验收标准 | 34 | // 验收标准 |
33 | AcceptanceStandard string | 35 | AcceptanceStandard string |
34 | // 任务描述 | 36 | // 任务描述 |
@@ -71,6 +71,27 @@ func (repository *CashPoolRepository) Find(queryOptions map[string]interface{}) | @@ -71,6 +71,27 @@ func (repository *CashPoolRepository) Find(queryOptions map[string]interface{}) | ||
71 | } | 71 | } |
72 | } | 72 | } |
73 | 73 | ||
74 | +func (repository *CashPoolRepository) FindOne(queryOptions map[string]interface{}) (*domain.CashPool, error) { | ||
75 | + tx := repository.transactionContext.PgTx | ||
76 | + cashPoolModel := new(models.CashPool) | ||
77 | + query := tx.Model(cashPoolModel) | ||
78 | + if cashPoolId, ok := queryOptions["cashPoolId"]; ok { | ||
79 | + query = query.Where("cash_pool.id = ?", cashPoolId) | ||
80 | + } | ||
81 | + if err := query.First(); err != nil { | ||
82 | + if err.Error() == "pg: no rows in result set" { | ||
83 | + return nil, fmt.Errorf("没有此资源") | ||
84 | + } else { | ||
85 | + return nil, err | ||
86 | + } | ||
87 | + } | ||
88 | + if cashPoolModel.Id == 0 { | ||
89 | + return nil, nil | ||
90 | + } else { | ||
91 | + return repository.transformPgModelToDomainModel(cashPoolModel) | ||
92 | + } | ||
93 | +} | ||
94 | + | ||
74 | func (repository *CashPoolRepository) transformPgModelToDomainModel(cashPoolModel *models.CashPool) (*domain.CashPool, error) { | 95 | func (repository *CashPoolRepository) transformPgModelToDomainModel(cashPoolModel *models.CashPool) (*domain.CashPool, error) { |
75 | return &domain.CashPool{ | 96 | return &domain.CashPool{ |
76 | CashPoolId: cashPoolModel.Id, | 97 | CashPoolId: cashPoolModel.Id, |
@@ -63,6 +63,9 @@ func (repository *EmployeeRepository) FindOne(queryOptions map[string]interface{ | @@ -63,6 +63,9 @@ func (repository *EmployeeRepository) FindOne(queryOptions map[string]interface{ | ||
63 | if uid, ok := queryOptions["uid"]; ok { | 63 | if uid, ok := queryOptions["uid"]; ok { |
64 | query = query.Where("employee.uid = ?", uid) | 64 | query = query.Where("employee.uid = ?", uid) |
65 | } | 65 | } |
66 | + if account, ok := queryOptions["account"]; ok { | ||
67 | + query = query.Where("employee.employee_account = ?", account) | ||
68 | + } | ||
66 | if err := query.First(); err != nil { | 69 | if err := query.First(); err != nil { |
67 | if err.Error() == "pg: no rows in result set" { | 70 | if err.Error() == "pg: no rows in result set" { |
68 | return nil, fmt.Errorf("没有此员工") | 71 | return nil, fmt.Errorf("没有此员工") |
@@ -73,10 +73,8 @@ func (repository *SuMoneyTransactionRecordRepository) Find(queryOptions map[stri | @@ -73,10 +73,8 @@ func (repository *SuMoneyTransactionRecordRepository) Find(queryOptions map[stri | ||
73 | if uid, ok := queryOptions["uid"]; ok && (uid != int64(0)) { | 73 | if uid, ok := queryOptions["uid"]; ok && (uid != int64(0)) { |
74 | query = query.Where(`su_money_transaction_record.employee @> '{"uid":?}'`, uid) | 74 | query = query.Where(`su_money_transaction_record.employee @> '{"uid":?}'`, uid) |
75 | } | 75 | } |
76 | - // TODO 姓名模糊查询 | ||
77 | if employeeMatchName, ok := queryOptions["employeeMatchName"]; ok && (employeeMatchName != "") { | 76 | if employeeMatchName, ok := queryOptions["employeeMatchName"]; ok && (employeeMatchName != "") { |
78 | - //query = query.Where(`su_money_transaction_record.employee @> 'employeeName' LIKE ?`, fmt.Sprintf("%%%s%%", employeeMatchName.(string))) | ||
79 | - query = query.Where(`su_money_transaction_record.employee :json->> 'employeeName' LIKE ?`, fmt.Sprintf("%%%s%%", employeeMatchName.(string))) | 77 | + query = query.Where(`(su_money_transaction_record.employee->>'employeeName')::text LIKE ?`, fmt.Sprintf("%%%s%%", employeeMatchName.(string))) |
80 | } | 78 | } |
81 | if recordType, ok := queryOptions["recordType"]; ok && (recordType != 0) { | 79 | if recordType, ok := queryOptions["recordType"]; ok && (recordType != 0) { |
82 | query = query.Where(`su_money_transaction_record.record_type = ?`, recordType) | 80 | query = query.Where(`su_money_transaction_record.record_type = ?`, recordType) |
@@ -102,7 +102,7 @@ func (controller *EmployeeController) ListEmployee() { | @@ -102,7 +102,7 @@ func (controller *EmployeeController) ListEmployee() { | ||
102 | controller.ServeJSON() | 102 | controller.ServeJSON() |
103 | } | 103 | } |
104 | 104 | ||
105 | -// TODO 导出员工素币情况列表,选择导出(ids) | 105 | +// TODO 导出员工素币情况列表,选择导出(ids),增加导出失败信息 |
106 | func (controller *EmployeeController) ExportSuMoney() { | 106 | func (controller *EmployeeController) ExportSuMoney() { |
107 | 107 | ||
108 | } | 108 | } |
@@ -339,7 +339,7 @@ func (controller *SuMoneyController) ImportExchangeList () { | @@ -339,7 +339,7 @@ func (controller *SuMoneyController) ImportExchangeList () { | ||
339 | dataList := make([]interface{}, 0) | 339 | dataList := make([]interface{}, 0) |
340 | rows, _ := xlsx.GetRows("Sheet1") | 340 | rows, _ := xlsx.GetRows("Sheet1") |
341 | for i, row := range rows { | 341 | for i, row := range rows { |
342 | - if i > 0 { | 342 | + if i > 3 { |
343 | for _, _ = range row { | 343 | for _, _ = range row { |
344 | createExchangeCashPersonCommand.ExchangeCashActivityId = activityId | 344 | createExchangeCashPersonCommand.ExchangeCashActivityId = activityId |
345 | createExchangeCashPersonCommand.PersonName = row[0] | 345 | createExchangeCashPersonCommand.PersonName = row[0] |
@@ -364,12 +364,12 @@ func (controller *SuMoneyController) ImportExchangeList () { | @@ -364,12 +364,12 @@ func (controller *SuMoneyController) ImportExchangeList () { | ||
364 | controller.ServeJSON() | 364 | controller.ServeJSON() |
365 | } | 365 | } |
366 | 366 | ||
367 | -// TODO 导出素币兑换清单,选择导出(ids) | 367 | +// TODO 导出素币兑换清单,选择导出(ids),增加导出失败信息 |
368 | func (controller *SuMoneyController) ExportExchangeList() { | 368 | func (controller *SuMoneyController) ExportExchangeList() { |
369 | 369 | ||
370 | } | 370 | } |
371 | 371 | ||
372 | -// TODO 导出素币流水记录,选择导出(ids) | 372 | +// TODO 导出素币流水记录,选择导出(ids),增加导出失败信息 |
373 | func (controller *SuMoneyController) ExportSuMoneyTransactionRecord() { | 373 | func (controller *SuMoneyController) ExportSuMoneyTransactionRecord() { |
374 | 374 | ||
375 | } | 375 | } |
-
请 注册 或 登录 后发表评论