作者 陈志颖

fix:增加验收任务时更新现金池

@@ -1358,45 +1358,6 @@ func (cashPoolService *CashPoolService) CreateExchangeCashPerson(createExchangeC @@ -1358,45 +1358,6 @@ func (cashPoolService *CashPoolService) CreateExchangeCashPerson(createExchangeC
1358 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "当前兑换素币超过本人持有的素币值") 1358 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "当前兑换素币超过本人持有的素币值")
1359 } 1359 }
1360 1360
1361 - //// 判断当前员工是否已经在素币兑换清单中,区分excel导入新增和页面添加新增  
1362 - //if !createFlag { // 页面新增  
1363 - // count, _, err := exchangeCashPersonListRepository.Find(map[string]interface{}{  
1364 - // "uid": employeeFound.EmployeeInfo.Uid,  
1365 - // "exchangeCashActivityId": activityFound.ActivityId,  
1366 - // })  
1367 - // if err != nil {  
1368 - // return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
1369 - // }  
1370 - // if count > 0 { // 已存在兑换素币清单  
1371 - // return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "当前员工已经在素币兑换清单中")  
1372 - // }  
1373 - // if count == 0 { // 未存在,新增兑换素币清单  
1374 - //  
1375 - // }  
1376 - //} else { // 导入新增  
1377 - // count, peopleFound, err := exchangeCashPersonListRepository.Find(map[string]interface{}{  
1378 - // "employeeAccount": employeeFound.EmployeeInfo.EmployeeAccount,  
1379 - // "exchangeCashActivityId": activityFound.ActivityId,  
1380 - // "offset": 0,  
1381 - // "limit": 1,  
1382 - // })  
1383 - // if err != nil {  
1384 - // return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
1385 - // }  
1386 - // if count > 0 { // 追加素币兑换或撤回素币兑换  
1387 - // if createExchangeCashPersonCommand.ExchangedSuMoney < peopleFound[0].ExchangedSuMoney { // 当前兑换的素币小于已兑换素币,撤回兑换素币  
1388 - // suMoneyDecrement := peopleFound[0].ExchangedSuMoney - createExchangeCashPersonCommand.ExchangedSuMoney // 减量  
1389 - //  
1390 - // } else if createExchangeCashPersonCommand.ExchangedSuMoney > peopleFound[0].ExchangedSuMoney { // 当前兑换素币大于已兑换素币,追加兑换素币  
1391 - // suMoneyIncrement := createExchangeCashPersonCommand.ExchangedSuMoney - peopleFound[0].ExchangedSuMoney // 增量  
1392 - //  
1393 - // }  
1394 - // }  
1395 - // if count == 0 { // 新增  
1396 - //  
1397 - // }  
1398 - //}  
1399 -  
1400 // 新增兑换清单命令 1361 // 新增兑换清单命令
1401 newPersonExchangedCash, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", createExchangeCashPersonCommand.ExchangedSuMoney * activityFound.Rate), 64) 1362 newPersonExchangedCash, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", createExchangeCashPersonCommand.ExchangedSuMoney * activityFound.Rate), 64)
1402 1363
@@ -153,39 +153,41 @@ func (suMoneyService *SuMoneyService) SearchSuMoneyTransactionRecord(searchSuMon @@ -153,39 +153,41 @@ func (suMoneyService *SuMoneyService) SearchSuMoneyTransactionRecord(searchSuMon
153 if err := transactionContext.CommitTransaction(); err != nil { 153 if err := transactionContext.CommitTransaction(); err != nil {
154 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 154 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
155 } 155 }
156 - //for _, suMoneyTransactionRecord := range suMoneyTransactionRecords {  
157 - // contributions := []int{2,3,4}  
158 - // suMoney := []int{1,2,3,4,5}  
159 - // // 查询贡献值时规范描述  
160 - // if utils.StringSliceEqualBCE(searchSuMoneyTransactionRecordCommand.RecordTypes, contributions) {  
161 - // switch suMoneyTransactionRecord.RecordType {  
162 - // case 2: // 任务奖励  
163 - // suMoneyTransactionRecord.RecordDescription = suMoneyTransactionRecord.RecordDescription + "奖励"  
164 - // case 3: // 增加  
165 - // suMoneyTransactionRecord.RecordDescription = "增加贡献"  
166 - // case 4: // 扣除  
167 - // suMoneyTransactionRecord.RecordDescription = "扣除贡献"  
168 - // }  
169 - // }  
170 - // // 查询素币值时规范描述  
171 - // if utils.StringSliceEqualBCE(searchSuMoneyTransactionRecordCommand.RecordTypes, suMoney) {  
172 - // switch suMoneyTransactionRecord.RecordType {  
173 - // case 1: // 兑换物资  
174 - // suMoneyTransactionRecord.RecordDescription = "兑换物资"  
175 - // case 2: // 任务奖励  
176 - // suMoneyTransactionRecord.RecordDescription = suMoneyTransactionRecord.RecordDescription + "奖励"  
177 - // case 3: // 增加  
178 - // suMoneyTransactionRecord.RecordDescription = "增加素币"  
179 - // case 4: // 扣除  
180 - // suMoneyTransactionRecord.RecordDescription = "扣除素币"  
181 - // case 5: // 兑换现金  
182 - // suMoneyTransactionRecord.RecordDescription = "素币兑换现金"  
183 - // }  
184 - // }  
185 - //} 156 + var suMoneyTransactionRecordsFormat []interface{}
  157 + //loc, _ := time.LoadLocation("Local")
  158 + for _, suMoneyTransactionRecord := range suMoneyTransactionRecords {
  159 + //dt, _ := ("2006-01-02 15:04:05", suMoneyTransactionRecord.CreateTime, loc)
  160 + suMoneyTransactionRecordFormat := map[string]interface{} {
  161 + "suMoneyTransactionRecordId": suMoneyTransactionRecord.SuMoneyTransactionRecordId,
  162 + "recordType": suMoneyTransactionRecord.RecordType,
  163 + "employee": map[string]interface{} {
  164 + "uid": suMoneyTransactionRecord.Employee.Uid,
  165 + "employeeName": suMoneyTransactionRecord.Employee.EmployeeName,
  166 + "employeeAccount": suMoneyTransactionRecord.Employee.EmployeeAccount,
  167 + "employeeAvatarUrl": suMoneyTransactionRecord.Employee.EmployeeAvatarUrl,
  168 + "isPrincipal": suMoneyTransactionRecord.Employee.IsPrincipal,
  169 + },
  170 + "suMoneyBeforeTransaction": suMoneyTransactionRecord.SuMoneyBeforeTransaction,
  171 + "currentSuMoney": suMoneyTransactionRecord.CurrentSuMoney,
  172 + "suMoney": suMoneyTransactionRecord.SuMoney,
  173 + "cashBeforeTransaction": suMoneyTransactionRecord.CashBeforeTransaction,
  174 + "currentCash": suMoneyTransactionRecord.CurrentCash,
  175 + "cash": suMoneyTransactionRecord.Cash,
  176 + "operator": map[string]interface{} {
  177 + "uid": suMoneyTransactionRecord.Operator.Uid,
  178 + "employeeName": suMoneyTransactionRecord.Operator.EmployeeName,
  179 + "employeeAccount": suMoneyTransactionRecord.Operator.EmployeeAccount,
  180 + "employeeAvatarUrl": suMoneyTransactionRecord.Operator.EmployeeAvatarUrl,
  181 + "isPrincipal": suMoneyTransactionRecord.Operator.IsPrincipal,
  182 + },
  183 + "recordDescription": suMoneyTransactionRecord.RecordDescription,
  184 + "createTime": suMoneyTransactionRecord.CreateTime.Location(),
  185 + }
  186 + suMoneyTransactionRecordsFormat = append(suMoneyTransactionRecordsFormat, suMoneyTransactionRecordFormat)
  187 + }
186 return map[string]interface{}{ 188 return map[string]interface{}{
187 "count": count, 189 "count": count,
188 - "suMoneyTransactionRecords": suMoneyTransactionRecords, 190 + "suMoneyTransactionRecords": suMoneyTransactionRecordsFormat,
189 }, nil 191 }, nil
190 } 192 }
191 } 193 }
@@ -2,6 +2,7 @@ package domain_service @@ -2,6 +2,7 @@ package domain_service
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
  5 + "github.com/linmadan/egglib-go/core/application"
5 coreDomain "github.com/linmadan/egglib-go/core/domain" 6 coreDomain "github.com/linmadan/egglib-go/core/domain"
6 pgTransaction "github.com/linmadan/egglib-go/transaction/pg" 7 pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
7 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" 8 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain"
@@ -20,6 +21,8 @@ func (service *AcceptanceTaskService) Acceptance(taskId int64, operatorUid int64 @@ -20,6 +21,8 @@ func (service *AcceptanceTaskService) Acceptance(taskId int64, operatorUid int64
20 var employeeRepository domain.EmployeeRepository 21 var employeeRepository domain.EmployeeRepository
21 var taskRepository domain.TaskRepository 22 var taskRepository domain.TaskRepository
22 var suMoneyTransactionRecordRepository domain.SuMoneyTransactionRecordRepository 23 var suMoneyTransactionRecordRepository domain.SuMoneyTransactionRecordRepository
  24 + var cashPoolRepository domain.CashPoolRepository
  25 +
23 var employeeDao *dao.EmployeeDao 26 var employeeDao *dao.EmployeeDao
24 if repository, err := repository.NewEmployeeRepository(service.transactionContext); err != nil { 27 if repository, err := repository.NewEmployeeRepository(service.transactionContext); err != nil {
25 return nil, err 28 return nil, err
@@ -36,11 +39,17 @@ func (service *AcceptanceTaskService) Acceptance(taskId int64, operatorUid int64 @@ -36,11 +39,17 @@ func (service *AcceptanceTaskService) Acceptance(taskId int64, operatorUid int64
36 } else { 39 } else {
37 suMoneyTransactionRecordRepository = repository 40 suMoneyTransactionRecordRepository = repository
38 } 41 }
  42 + if repository, err := repository.NewCashPoolRepository(service.transactionContext); err != nil {
  43 + return nil, err
  44 + } else {
  45 + cashPoolRepository = repository
  46 + }
39 if dao, err := dao.NewEmployeeDao(service.transactionContext); err != nil { 47 if dao, err := dao.NewEmployeeDao(service.transactionContext); err != nil {
40 return nil, err 48 return nil, err
41 } else { 49 } else {
42 employeeDao = dao 50 employeeDao = dao
43 } 51 }
  52 +
44 operator, err := employeeRepository.FindOne(map[string]interface{}{ 53 operator, err := employeeRepository.FindOne(map[string]interface{}{
45 "uid": operatorUid, 54 "uid": operatorUid,
46 }) 55 })
@@ -53,6 +62,7 @@ func (service *AcceptanceTaskService) Acceptance(taskId int64, operatorUid int64 @@ -53,6 +62,7 @@ func (service *AcceptanceTaskService) Acceptance(taskId int64, operatorUid int64
53 task, err := taskRepository.FindOne(map[string]interface{}{ 62 task, err := taskRepository.FindOne(map[string]interface{}{
54 "taskId": taskId, 63 "taskId": taskId,
55 }) 64 })
  65 +
56 if err != nil { 66 if err != nil {
57 return nil, err 67 return nil, err
58 } 68 }
@@ -124,6 +134,41 @@ func (service *AcceptanceTaskService) Acceptance(taskId int64, operatorUid int64 @@ -124,6 +134,41 @@ func (service *AcceptanceTaskService) Acceptance(taskId int64, operatorUid int64
124 if err := employeeDao.TransferSuMoney(taskPercentageItem.Contributor.Uid, taskPercentageItem.SuMoney); err != nil { 134 if err := employeeDao.TransferSuMoney(taskPercentageItem.Contributor.Uid, taskPercentageItem.SuMoney); err != nil {
125 return nil, err 135 return nil, err
126 } 136 }
  137 +
  138 + // 更新现金池未兑换素币
  139 + _, cashPoolFound, err := cashPoolRepository.Find(map[string]interface{}{
  140 + "companyId": task.CompanyId,
  141 + })
  142 + if err != nil {
  143 + return nil, err
  144 + }
  145 + if len(cashPoolFound) > 0 {
  146 + // 获取平台素币兑换情况
  147 + systemSuMoneyStatistics, err := employeeDao.CalculateSystemSuMoney(task.CompanyId)
  148 + if err != nil {
  149 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  150 + }
  151 + if systemSuMoneyStatistics == nil {
  152 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的公司")
  153 + }
  154 + systemUnExchangeSuMoney := systemSuMoneyStatistics["systemUnExchangeSuMoney"].(float64)
  155 +
  156 + cashPool := &domain.CashPool{
  157 + CashPoolId: cashPoolFound[0].CashPoolId,
  158 + Cash: cashPoolFound[0].Cash,
  159 + CompanyId: cashPoolFound[0].CompanyId,
  160 + ExchangedCash: cashPoolFound[0].ExchangedCash,
  161 + UnExchangeCash: cashPoolFound[0].UnExchangeCash,
  162 + ExchangedSuMoney: cashPoolFound[0].ExchangedSuMoney,
  163 + UnExchangeSuMoney: systemUnExchangeSuMoney,
  164 + Rate: cashPoolFound[0].Rate,
  165 + LastRate: cashPoolFound[0].LastRate,
  166 + CreateTime: time.Now(),
  167 + }
  168 + if _, err := cashPoolRepository.Save(cashPool); err != nil {
  169 + return nil, err
  170 + }
  171 + }
127 } 172 }
128 if task, err := taskRepository.Save(task); err != nil { 173 if task, err := taskRepository.Save(task); err != nil {
129 return nil, err 174 return nil, err
@@ -73,7 +73,7 @@ func (repository *SuMoneyTransactionRecordRepository) FindById(queryOptions map[ @@ -73,7 +73,7 @@ func (repository *SuMoneyTransactionRecordRepository) FindById(queryOptions map[
73 //if iDs, ok := queryOptions["iDs"]; ok && len(iDs.([]int)) != 0 { 73 //if iDs, ok := queryOptions["iDs"]; ok && len(iDs.([]int)) != 0 {
74 // query = query.Where(`su_money_transaction_record.id IN (?)`, pg.In(iDs.([]int))) 74 // query = query.Where(`su_money_transaction_record.id IN (?)`, pg.In(iDs.([]int)))
75 //} 75 //}
76 - if iDs, ok := queryOptions["iDs"]; ok { 76 + if iDs, ok := queryOptions["ids"]; ok {
77 query = query.Where(`su_money_transaction_record.id IN (?)`, pg.In(iDs.([]int))) 77 query = query.Where(`su_money_transaction_record.id IN (?)`, pg.In(iDs.([]int)))
78 } 78 }
79 if count, err := query.Order("id DESC").SelectAndCount(); err != nil { 79 if count, err := query.Order("id DESC").SelectAndCount(); err != nil {
@@ -693,7 +693,7 @@ func (controller *SuMoneyController) ExportSuMoneyTransactionRecord() { @@ -693,7 +693,7 @@ func (controller *SuMoneyController) ExportSuMoneyTransactionRecord() {
693 var data []map[string]interface{} 693 var data []map[string]interface{}
694 records, err := suMoneyService.ListSuMoneyTransactionRecordById(exportTransactionRecordCommand) 694 records, err := suMoneyService.ListSuMoneyTransactionRecordById(exportTransactionRecordCommand)
695 for _, record := range records { 695 for _, record := range records {
696 - timString := record.CreateTime.Format("2006/01/02 15:04:05") 696 + timString := record.CreateTime.UTC().Format("2006/01/02 15:04:05")
697 697
698 p := map[string]interface{} { 698 p := map[string]interface{} {
699 "name": record.Employee.EmployeeName, 699 "name": record.Employee.EmployeeName,