1
zj
2024-12-04 fe1859da132aa4eaf5c2149ca2068c608147e0e9
src/main/java/project/wallet/internal/WalletServiceImpl.java
@@ -21,6 +21,7 @@
import kernel.util.UUIDGenerator;
import kernel.web.ApplicationUtil;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import project.Constants;
import project.data.DataService;
import project.data.model.Realtime;
@@ -84,10 +85,22 @@
   @Override
   public void update(String partyId, double amount) {
      Object money = redisHandler.get("PARTY_ID_MONEY_" + partyId);
      Wallet wallet = (Wallet) redisHandler.get(WalletRedisKeys.WALLET_PARTY_ID + partyId.toString());
      if(!ObjectUtils.isEmpty(money)){
         wallet.setMoney(Double.parseDouble(money.toString()));
      }
      // 确保余额不会为负数
      double newBalance = Arith.add(wallet.getMoney(), amount);
      if (newBalance < 0) {
         amount = -wallet.getMoney();  // 如果会负余额,调整 amount 使余额为0
      }
      wallet.setMoney(Arith.add(wallet.getMoney(), amount));
      redisHandler.setSync(WalletRedisKeys.WALLET_PARTY_ID + wallet.getPartyId().toString(), wallet);
      redisHandler.pushAsyn(WalletRedisKeys.WALLET_QUEUE_UPDATE, new WalletMessage(partyId, amount));
      //用于计算合约亏损
      redisHandler.setSync("PARTY_ID_MONEY_"+partyId, wallet.getMoney());
   }
   @Override