diff --git a/src/main/java/com/m2pool/lease/mq/MessageReceiver.java b/src/main/java/com/m2pool/lease/mq/MessageReceiver.java index a3f9eb7..3db7284 100644 --- a/src/main/java/com/m2pool/lease/mq/MessageReceiver.java +++ b/src/main/java/com/m2pool/lease/mq/MessageReceiver.java @@ -355,10 +355,17 @@ public class MessageReceiver { .status(payWithdrawReturnMessage.getStatus()) .build(); if (payWithdrawReturnMessage.getStatus() == 1){ + // 使用乐观锁防止并发修改 + BigDecimal initBalance = leaseShopConfig.getBalance(); leaseShopConfig.setBalance(leaseShopConfig.getBalance() .subtract(payWithdrawReturnMessage.getAmount()) .subtract(payWithdrawReturnMessage.getFee())); - leaseShopConfigMapper.updateById(leaseShopConfig); + int update = leaseShopConfigMapper.update(leaseShopConfig, new LambdaUpdateWrapper() + .eq(LeaseShopConfig::getId, leaseShopConfig.getId()) + .eq(LeaseShopConfig::getBalance, initBalance)); + if (update < 1){ + throw new PayRechargeException("商家提现失败,余额已被修改,消息重试"); + } build.setTxHash(payWithdrawReturnMessage.getTx_hash()); build.setBlockHeight(payWithdrawReturnMessage.getBlock_height()); } diff --git a/src/main/java/com/m2pool/lease/service/impl/LeaseOrderInfoServiceImpl.java b/src/main/java/com/m2pool/lease/service/impl/LeaseOrderInfoServiceImpl.java index 5d19591..36c957a 100644 --- a/src/main/java/com/m2pool/lease/service/impl/LeaseOrderInfoServiceImpl.java +++ b/src/main/java/com/m2pool/lease/service/impl/LeaseOrderInfoServiceImpl.java @@ -292,8 +292,15 @@ public class LeaseOrderInfoServiceImpl extends ServiceImpl() + .eq(LeaseUserWalletData::getId, leaseUserWalletData.getId()) + .eq(LeaseUserWalletData::getBlockedBalance, initBlockedBalance)); + if (update < 1){ + throw new OrderException("下单失败,钱包余额已被修改,请重试"); + } }); }