From dc11990acb945329cdcb28dae7a0aa353a3c18c7 Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Fri, 18 Jul 2025 10:38:35 +0800
Subject: [PATCH] 货币转换优化
---
src/main/java/com/nq/service/impl/UserAssetsServices.java | 38 +++++++++++++++-----------------------
1 files changed, 15 insertions(+), 23 deletions(-)
diff --git a/src/main/java/com/nq/service/impl/UserAssetsServices.java b/src/main/java/com/nq/service/impl/UserAssetsServices.java
index 45143b5..46dd379 100644
--- a/src/main/java/com/nq/service/impl/UserAssetsServices.java
+++ b/src/main/java/com/nq/service/impl/UserAssetsServices.java
@@ -182,16 +182,7 @@
UserAssets userAssets = assetsByTypeAndUserId(EStockType.MX.getCode(), userId);
//如果不是墨西哥币需要转换金额
if (!accetType.equals(EStockType.MX.getCode())) {
- EStockType stockType = EStockType.getEStockTypeByCode(accetType);
- ExchangeRate exchangeRate = exchangeRateRepository.findExchangeRateByCurrencyAndConversionCurrency(
- stockType.getSymbol(), EStockType.MX.getSymbol()).orElse(null);
- if (exchangeRate != null) {
- //转换为墨西哥币
- amount = exchangeAmountByRate(amount, exchangeRate.getRata());
- } else {
- log.error("availablebalanceChange ExchangeRate is null:{}>>{}", stockType.getSymbol(), EStockType.MX.getSymbol());
- throw new Exception("货币转换汇率未设置");
- }
+ amount = exchangeAmountByRate(accetType, amount);
}
UserPosition userPosition = userPositionMapper.selectOne(new LambdaQueryWrapper<UserPosition>().gt(UserPosition::getAmountToBeCovered, BigDecimal.ZERO).eq(UserPosition::getUserId,userAssets.getUserId()));
String type = eUserAssets.getDesc();
@@ -318,16 +309,7 @@
UserAssets userAssets = assetsByTypeAndUserId(EStockType.MX.getCode(), userId);
//如果不是墨西哥币需要转换金额
if (!accetType.equals(EStockType.MX.getCode())) {
- EStockType stockType = EStockType.getEStockTypeByCode(accetType);
- ExchangeRate exchangeRate = exchangeRateRepository.findExchangeRateByCurrencyAndConversionCurrency(
- stockType.getSymbol(), EStockType.MX.getSymbol()).orElse(null);
- if (exchangeRate != null) {
- //转换为墨西哥币
- amount = exchangeAmountByRate(amount, exchangeRate.getRata());
- } else {
- log.error("ExchangeRate is null:{}>>{}", stockType.getSymbol(), EStockType.MX.getSymbol());
- throw new Exception("货币转换汇率未设置");
- }
+ amount = exchangeAmountByRate(accetType, amount);
}
String before = userAssets.getAvailableBalance().toString();
if (eUserAssets.getCode().equals(EUserAssets.BUY_AI.getCode())) {
@@ -375,8 +357,18 @@
}
@Override
- public BigDecimal exchangeAmountByRate(BigDecimal amount, BigDecimal rate) {
- //保留5位小数
- return amount.multiply(rate).setScale(5, RoundingMode.HALF_UP);
+ public BigDecimal exchangeAmountByRate(String accetType, BigDecimal amount) throws Exception {
+ EStockType stockType = EStockType.getEStockTypeByCode(accetType);
+ ExchangeRate exchangeRate = exchangeRateRepository.findExchangeRateByCurrencyAndConversionCurrency(
+ stockType.getSymbol(), EStockType.MX.getSymbol()).orElse(null);
+ if (exchangeRate != null) {
+ //转换为墨西哥币 保留5位小数
+ return amount.multiply(exchangeRate.getRata()).setScale(5, RoundingMode.HALF_UP);
+ } else {
+ log.error("exchangeAmountByRate is null:{}>>{}", stockType.getSymbol(), EStockType.MX.getSymbol());
+ throw new Exception("货币转换汇率未设置");
+ }
+
+
}
}
--
Gitblit v1.9.3