|
@@ -134,17 +134,19 @@ public class GoldCoinProductMessageConsumer {
|
|
|
|
|
|
// 计算旧速率的金币产出
|
|
|
long oldRateDuration = Math.min(rateUpdateTimestamp - lastTimestamp, timeDifference);
|
|
|
- BigDecimal oldRate = new BigDecimal(goldCoinProdState.getDurableRate());
|
|
|
+ BigDecimal oldRate = new BigDecimal(goldCoinProdState.getCurrentRate());
|
|
|
newValue = currentValue.add(oldRate.multiply(BigDecimal.valueOf(oldRateDuration)));
|
|
|
|
|
|
// 计算新速率的金币产出
|
|
|
long newRateDuration = timeDifference - oldRateDuration;
|
|
|
+ String newRateStr = upgradesState.getCurrentRate();
|
|
|
+ //时间差大于0,再计算新速率的值
|
|
|
if (newRateDuration > 0) {
|
|
|
- String newRateStr = upgradesState.getCurrentRate();
|
|
|
BigDecimal newRate = new BigDecimal(newRateStr != null ? newRateStr : "0");
|
|
|
newValue = newValue.add(newRate.multiply(BigDecimal.valueOf(newRateDuration)));
|
|
|
- goldCoinProdState.setCurrentRate(newRateStr);
|
|
|
}
|
|
|
+ // 处理速率升级的状态
|
|
|
+ goldCoinProdState.setCurrentRate(newRateStr);
|
|
|
goldCoinProdState.setDurableRate(upgradesState.getDurableRate());
|
|
|
goldCoinProdState.setTemporaryRate(upgradesState.getTemporaryRate());
|
|
|
upgradesState.setRateUpdateFlag(2);
|