in online_bontique_demo/currencyService/src/main/java/org/apache/dubbo/shop/currency/CurrencyServiceImpl.java [60:76]
public Money convert(CurrencyConversionRequest request) {
Map<String, Double> currencies = loadCurrencyData();
Double fromCurrencyRate = currencies.get(request.getFrom().getCurrencyCode());
Double toCurrencyRate = currencies.get(request.getToCode());
if (fromCurrencyRate == null || toCurrencyRate == null) {
throw new RuntimeException("Unsupported currency code");
}
Long totalNanos = request.getFrom().getUnits() * 1_000_000_000 + request.getFrom().getNanos();
double convertedNanos = totalNanos * toCurrencyRate / fromCurrencyRate;
Money response = new Money();
response.setCurrencyCode(request.getToCode());
response.setUnits((long) (convertedNanos / 1_000_000_000L));
response.setNanos((int) (convertedNanos % 1_000_000_000L));
return response;
}