From 8388ccb0c39b3dc1ecccd36756dff129f1283b05 Mon Sep 17 00:00:00 2001 From: yyb <1416014977@qq.com> Date: Mon, 26 Jan 2026 11:28:39 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BF=AE=E5=A4=8D=E9=83=A8=E5=88=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=87=91=E9=A2=9D=E7=9A=84=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E5=86=85=E6=9C=AA=E4=BD=BF=E7=94=A8=E4=B9=90=E8=A7=82=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/m2pool/lease/mq/MessageReceiver.java | 9 ++++++++- .../lease/service/impl/LeaseOrderInfoServiceImpl.java | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) 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("下单失败,钱包余额已被修改,请重试"); + } }); }