正在显示
1 个修改的文件
包含
146 行增加
和
16 行删除
@@ -666,7 +666,7 @@ func (cashPoolService *CashPoolService) CreateExchangeCashPerson(createExchangeC | @@ -666,7 +666,7 @@ func (cashPoolService *CashPoolService) CreateExchangeCashPerson(createExchangeC | ||
666 | if activityUpdated == nil { | 666 | if activityUpdated == nil { |
667 | return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(createExchangeCashPersonCommand.ExchangeCashActivityId))) | 667 | return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(createExchangeCashPersonCommand.ExchangeCashActivityId))) |
668 | } | 668 | } |
669 | - // 判断清单中现金总额超过平台未兑换现金 | 669 | + // 获取兑换清单素币状况 |
670 | var cashPoolDao *dao.CashPoolDao | 670 | var cashPoolDao *dao.CashPoolDao |
671 | if value, err := factory.CreateCashPoolDao(map[string]interface{}{ | 671 | if value, err := factory.CreateCashPoolDao(map[string]interface{}{ |
672 | "transactionContext": transactionContext, | 672 | "transactionContext": transactionContext, |
@@ -683,7 +683,7 @@ func (cashPoolService *CashPoolService) CreateExchangeCashPerson(createExchangeC | @@ -683,7 +683,7 @@ func (cashPoolService *CashPoolService) CreateExchangeCashPerson(createExchangeC | ||
683 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的企业") | 683 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的企业") |
684 | } | 684 | } |
685 | activitySuMoney := activitySuMoneyStatistics["activityExchangedSuMoney"].(float64) | 685 | activitySuMoney := activitySuMoneyStatistics["activityExchangedSuMoney"].(float64) |
686 | - | 686 | + // 现金池操作 |
687 | var employeeDao *dao.EmployeeDao | 687 | var employeeDao *dao.EmployeeDao |
688 | if value, err := factory.CreateEmployeeDao(map[string]interface{}{ | 688 | if value, err := factory.CreateEmployeeDao(map[string]interface{}{ |
689 | "transactionContext": transactionContext, | 689 | "transactionContext": transactionContext, |
@@ -692,6 +692,7 @@ func (cashPoolService *CashPoolService) CreateExchangeCashPerson(createExchangeC | @@ -692,6 +692,7 @@ func (cashPoolService *CashPoolService) CreateExchangeCashPerson(createExchangeC | ||
692 | } else { | 692 | } else { |
693 | employeeDao = value | 693 | employeeDao = value |
694 | } | 694 | } |
695 | + // 获取平台现金状况 | ||
695 | systemCashStatistics, err := employeeDao.CalculateSystemCash(activityFound.CompanyId) | 696 | systemCashStatistics, err := employeeDao.CalculateSystemCash(activityFound.CompanyId) |
696 | if err != nil { | 697 | if err != nil { |
697 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 698 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
@@ -701,9 +702,11 @@ func (cashPoolService *CashPoolService) CreateExchangeCashPerson(createExchangeC | @@ -701,9 +702,11 @@ func (cashPoolService *CashPoolService) CreateExchangeCashPerson(createExchangeC | ||
701 | } | 702 | } |
702 | systemExchangedCash := systemCashStatistics["systemExchangedCash"].(float64) | 703 | systemExchangedCash := systemCashStatistics["systemExchangedCash"].(float64) |
703 | systemUnExchangeCash := systemCashStatistics["systemUnExchangeCash"].(float64) | 704 | systemUnExchangeCash := systemCashStatistics["systemUnExchangeCash"].(float64) |
705 | + // 判断兑换的现金是否超过现金池未兑换现金 | ||
704 | if activitySuMoney * updateExchangeCashActivityCommand.ExchangeRate > systemCashStatistics["systemUnExchangeCash"].(float64) { | 706 | if activitySuMoney * updateExchangeCashActivityCommand.ExchangeRate > systemCashStatistics["systemUnExchangeCash"].(float64) { |
705 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "已超过投入现金池的未兑换现金") | 707 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "已超过投入现金池的未兑换现金") |
706 | } | 708 | } |
709 | + // 获取平台素币状况 | ||
707 | systemSuMoneyStatistics, err := employeeDao.CalculateSystemSuMoney(activity.CompanyId) | 710 | systemSuMoneyStatistics, err := employeeDao.CalculateSystemSuMoney(activity.CompanyId) |
708 | if err != nil { | 711 | if err != nil { |
709 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 712 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
@@ -731,7 +734,7 @@ func (cashPoolService *CashPoolService) CreateExchangeCashPerson(createExchangeC | @@ -731,7 +734,7 @@ func (cashPoolService *CashPoolService) CreateExchangeCashPerson(createExchangeC | ||
731 | if cashPools == nil { | 734 | if cashPools == nil { |
732 | return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(activity.CompanyId))) | 735 | return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(activity.CompanyId))) |
733 | } | 736 | } |
734 | - // 平均兑换汇率 | 737 | + // 计算平均兑换汇率 |
735 | var newRate float64 | 738 | var newRate float64 |
736 | if systemExchangedSuMoney == 0 { | 739 | if systemExchangedSuMoney == 0 { |
737 | newRate = 0 | 740 | newRate = 0 |
@@ -869,7 +872,7 @@ func (cashPoolService *CashPoolService) RemoveExchangeCashPerson(removeExchangeC | @@ -869,7 +872,7 @@ func (cashPoolService *CashPoolService) RemoveExchangeCashPerson(removeExchangeC | ||
869 | if err != nil { | 872 | if err != nil { |
870 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 873 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
871 | } | 874 | } |
872 | - // 生成素币流水,还原个人素币值 | 875 | + // 还原个人素币值,生成素币流水 |
873 | var operationSuMoneyService service.OperationSuMoneyService | 876 | var operationSuMoneyService service.OperationSuMoneyService |
874 | if value, err := factory.CreateOperationSuMoneyService(map[string]interface{}{ | 877 | if value, err := factory.CreateOperationSuMoneyService(map[string]interface{}{ |
875 | "transactionContext": transactionContext, | 878 | "transactionContext": transactionContext, |
@@ -923,10 +926,77 @@ func (cashPoolService *CashPoolService) RemoveExchangeCashPerson(removeExchangeC | @@ -923,10 +926,77 @@ func (cashPoolService *CashPoolService) RemoveExchangeCashPerson(removeExchangeC | ||
923 | if activityUpdated == nil { | 926 | if activityUpdated == nil { |
924 | return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(updateExchangeCashActivityCommand.ExchangeCashActivityId))) | 927 | return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(updateExchangeCashActivityCommand.ExchangeCashActivityId))) |
925 | } | 928 | } |
926 | - | ||
927 | - // TODO 更新现金池 | ||
928 | - | ||
929 | - | 929 | + // 更新现金池 |
930 | + var employeeDao *dao.EmployeeDao | ||
931 | + if value, err := factory.CreateEmployeeDao(map[string]interface{}{ | ||
932 | + "transactionContext": transactionContext, | ||
933 | + }); err != nil { | ||
934 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
935 | + } else { | ||
936 | + employeeDao = value | ||
937 | + } | ||
938 | + // 获取平台现金状况 | ||
939 | + systemCashStatistics, err := employeeDao.CalculateSystemCash(activityFound.CompanyId) | ||
940 | + if err != nil { | ||
941 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
942 | + } | ||
943 | + if systemCashStatistics == nil { | ||
944 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的公司") | ||
945 | + } | ||
946 | + systemExchangedCash := systemCashStatistics["systemExchangedCash"].(float64) | ||
947 | + systemUnExchangeCash := systemCashStatistics["systemUnExchangeCash"].(float64) | ||
948 | + // 获取平台素币状况 | ||
949 | + systemSuMoneyStatistics, err := employeeDao.CalculateSystemSuMoney(activityFound.CompanyId) | ||
950 | + if err != nil { | ||
951 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
952 | + } | ||
953 | + if systemSuMoneyStatistics == nil { | ||
954 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的公司") | ||
955 | + } | ||
956 | + systemExchangedSuMoney := systemSuMoneyStatistics["systemExchangedSuMoney"].(float64) | ||
957 | + // 更新现金池 | ||
958 | + var cashPoolRepository domain.CashPoolRepository | ||
959 | + if value, err := factory.CreateCashPoolRepository(map[string] interface{} { | ||
960 | + "transactionContext": transactionContext, | ||
961 | + }); err != nil { | ||
962 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
963 | + } else { | ||
964 | + cashPoolRepository = value | ||
965 | + } | ||
966 | + // 获取现金池 | ||
967 | + _, cashPools, err := cashPoolRepository.Find(map[string]interface{}{ | ||
968 | + "companyId": activityFound.CompanyId, | ||
969 | + }) | ||
970 | + if err != nil { | ||
971 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
972 | + } | ||
973 | + if cashPools == nil { | ||
974 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(activityFound.CompanyId))) | ||
975 | + } | ||
976 | + // 计算平均兑换汇率 | ||
977 | + var newRate float64 | ||
978 | + if systemExchangedSuMoney == 0 { | ||
979 | + newRate = 0 | ||
980 | + } else { | ||
981 | + newRate, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", systemExchangedCash / systemExchangedSuMoney), 64) | ||
982 | + } | ||
983 | + // 更新现金池 | ||
984 | + updateCashPoolCommand := &command.UpdateCashPoolCommand{ | ||
985 | + CashPoolId: cashPools[0].CashPoolId, | ||
986 | + ExchangedCash: systemUnExchangeCash, | ||
987 | + UnExchangeCash: systemUnExchangeCash, | ||
988 | + Rate: newRate, | ||
989 | + } | ||
990 | + if err := cashPools[0].Update(tool_funs.SimpleStructToMap(updateCashPoolCommand)); err != nil { | ||
991 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
992 | + } | ||
993 | + cashPoolUpdated, err := cashPoolRepository.Save(cashPools[0]) | ||
994 | + if err != nil { | ||
995 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
996 | + } | ||
997 | + if cashPoolUpdated == nil { | ||
998 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
999 | + } | ||
930 | if err := transactionContext.CommitTransaction(); err != nil { | 1000 | if err := transactionContext.CommitTransaction(); err != nil { |
931 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 1001 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
932 | } | 1002 | } |
@@ -1035,10 +1105,7 @@ func (cashPoolService *CashPoolService) UpdateExchangeCashPerson(updateExchangeC | @@ -1035,10 +1105,7 @@ func (cashPoolService *CashPoolService) UpdateExchangeCashPerson(updateExchangeC | ||
1035 | if activitySuMoney * updateExchangeCashActivityCommand.ExchangeRate > systemCashStatistics["systemUnExchangeCash"].(float64) { | 1105 | if activitySuMoney * updateExchangeCashActivityCommand.ExchangeRate > systemCashStatistics["systemUnExchangeCash"].(float64) { |
1036 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "已超过投入现金池的未兑换现金") | 1106 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "已超过投入现金池的未兑换现金") |
1037 | } | 1107 | } |
1038 | - | ||
1039 | - // TODO 更新现金池 | ||
1040 | - | ||
1041 | - // 生成素币兑换流水记录,更新员工素币 | 1108 | + // 更新员工素币,生成素币兑换流水记录 |
1042 | operationSuMoneyCommand := &command.OperationSuMoneyCommand{ | 1109 | operationSuMoneyCommand := &command.OperationSuMoneyCommand{ |
1043 | Uid: person.EmployeeInfo.Uid, | 1110 | Uid: person.EmployeeInfo.Uid, |
1044 | Operator: updateExchangeCashPersonCommand.Operator, | 1111 | Operator: updateExchangeCashPersonCommand.Operator, |
@@ -1060,14 +1127,77 @@ func (cashPoolService *CashPoolService) UpdateExchangeCashPerson(updateExchangeC | @@ -1060,14 +1127,77 @@ func (cashPoolService *CashPoolService) UpdateExchangeCashPerson(updateExchangeC | ||
1060 | if task == nil { | 1127 | if task == nil { |
1061 | return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(operationSuMoneyCommand.Uid))) | 1128 | return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(operationSuMoneyCommand.Uid))) |
1062 | } | 1129 | } |
1063 | - personUpdated, err := exchangeCashPersonListRepository.Save(person) | 1130 | + // 更新现金池 |
1131 | + // 获取平台现金状况 | ||
1132 | + newSystemCashStatistics, err := employeeDao.CalculateSystemCash(activityFound.CompanyId) | ||
1064 | if err != nil { | 1133 | if err != nil { |
1065 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 1134 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
1066 | } | 1135 | } |
1067 | - if err := transactionContext.CommitTransaction(); err != nil { | ||
1068 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 1136 | + if systemCashStatistics == nil { |
1137 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的公司") | ||
1138 | + } | ||
1139 | + systemExchangedCash := newSystemCashStatistics["systemExchangedCash"].(float64) | ||
1140 | + systemUnExchangeCash := newSystemCashStatistics["systemUnExchangeCash"].(float64) | ||
1141 | + // 获取平台素币状况 | ||
1142 | + systemSuMoneyStatistics, err := employeeDao.CalculateSystemSuMoney(activityFound.CompanyId) | ||
1143 | + if err != nil { | ||
1144 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
1145 | + } | ||
1146 | + if systemSuMoneyStatistics == nil { | ||
1147 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的公司") | ||
1148 | + } | ||
1149 | + systemExchangedSuMoney := systemSuMoneyStatistics["systemExchangedSuMoney"].(float64) | ||
1150 | + // 更新现金池 | ||
1151 | + var cashPoolRepository domain.CashPoolRepository | ||
1152 | + if value, err := factory.CreateCashPoolRepository(map[string] interface{} { | ||
1153 | + "transactionContext": transactionContext, | ||
1154 | + }); err != nil { | ||
1155 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
1156 | + } else { | ||
1157 | + cashPoolRepository = value | ||
1158 | + } | ||
1159 | + // 获取现金池 | ||
1160 | + _, cashPools, err := cashPoolRepository.Find(map[string]interface{}{ | ||
1161 | + "companyId": activityFound.CompanyId, | ||
1162 | + }) | ||
1163 | + if err != nil { | ||
1164 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
1165 | + } | ||
1166 | + if cashPools == nil { | ||
1167 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(activityFound.CompanyId))) | ||
1168 | + } | ||
1169 | + // 计算平均兑换汇率 | ||
1170 | + var newRate float64 | ||
1171 | + if systemExchangedSuMoney == 0 { | ||
1172 | + newRate = 0 | ||
1173 | + } else { | ||
1174 | + newRate, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", systemExchangedCash / systemExchangedSuMoney), 64) | ||
1175 | + } | ||
1176 | + // 更新现金池 | ||
1177 | + updateCashPoolCommand := &command.UpdateCashPoolCommand{ | ||
1178 | + CashPoolId: cashPools[0].CashPoolId, | ||
1179 | + ExchangedCash: systemUnExchangeCash, | ||
1180 | + UnExchangeCash: systemUnExchangeCash, | ||
1181 | + Rate: newRate, | ||
1182 | + } | ||
1183 | + if err := cashPools[0].Update(tool_funs.SimpleStructToMap(updateCashPoolCommand)); err != nil { | ||
1184 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
1185 | + } | ||
1186 | + cashPoolUpdated, err := cashPoolRepository.Save(cashPools[0]) | ||
1187 | + if err != nil { | ||
1188 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
1189 | + } | ||
1190 | + if cashPoolUpdated == nil { | ||
1191 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
1192 | + } | ||
1193 | + if personUpdated, err := exchangeCashPersonListRepository.Save(person);err != nil { | ||
1194 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
1195 | + } else { | ||
1196 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
1197 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
1198 | + } | ||
1199 | + return personUpdated, nil | ||
1069 | } | 1200 | } |
1070 | - return personUpdated, nil | ||
1071 | } | 1201 | } |
1072 | 1202 | ||
1073 | func NewCashPoolService(options map[string]interface{}) *CashPoolService { | 1203 | func NewCashPoolService(options map[string]interface{}) *CashPoolService { |
-
请 注册 或 登录 后发表评论