From 150b2b7c9a8d54b300414420abd42db3d649af02 Mon Sep 17 00:00:00 2001 From: 18650502300 <18650502300@163.com> Date: Tue, 24 Dec 2024 08:44:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=9E=E8=B0=83=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/redis/enums/RedisLockKey.java | 3 ++- .../service/impl/CallbackServiceImpl.java | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/electripper-common/src/main/java/com/ruoyi/common/core/redis/enums/RedisLockKey.java b/electripper-common/src/main/java/com/ruoyi/common/core/redis/enums/RedisLockKey.java index 9ff1b5c..6af2bc6 100644 --- a/electripper-common/src/main/java/com/ruoyi/common/core/redis/enums/RedisLockKey.java +++ b/electripper-common/src/main/java/com/ruoyi/common/core/redis/enums/RedisLockKey.java @@ -12,7 +12,8 @@ import lombok.Getter; public enum RedisLockKey { DEDUCTION("deduction", "押金抵扣"), - EDITPRICE("editPrice", "改价"); + EDITPRICE("editPrice", "改价"), + PAYCALLBACK("payCallback", "支付回调"); private final String key; private final String name; diff --git a/electripper-system/src/main/java/com/ruoyi/system/service/impl/CallbackServiceImpl.java b/electripper-system/src/main/java/com/ruoyi/system/service/impl/CallbackServiceImpl.java index d48eaf8..1cd865a 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/service/impl/CallbackServiceImpl.java +++ b/electripper-system/src/main/java/com/ruoyi/system/service/impl/CallbackServiceImpl.java @@ -13,6 +13,8 @@ import com.ruoyi.common.core.domain.entity.AsUser; import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.common.core.redis.RedisLock; +import com.ruoyi.common.core.redis.enums.RedisLockKey; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.pay.wx.domain.NotifyEventType; import com.ruoyi.common.utils.*; @@ -141,10 +143,12 @@ public class CallbackServiceImpl implements CallbackService { @Value("${aliyun.templateCode2}") private String templateCode2; - @Resource private EtMsgLogMapper etMsgLogMapper; + @Autowired + private RedisLock redisLock; + /** * 微信支付回调 @@ -183,9 +187,21 @@ public class CallbackServiceImpl implements CallbackService { public void businessHandle(String outTradeNo,AttachVo attachVo,String payType) { // 充值成功后的业务处理 EtOrder order = orderService.selectEtOrderByOutTradeNo(outTradeNo); + String orderNo = order.getOrderNo(); if(order.getPaid().equals(ServiceConstants.ORDER_PAY_STATUS_PAID)){ return; } + // 加锁 + ServiceUtil.assertion(!redisLock.lock(RedisLockKey.PAYCALLBACK, orderNo), "当前订单正在支付,请稍后再试!"); + try { + busHandle(order, attachVo, payType); + } finally { + // 解锁 + redisLock.unlock(RedisLockKey.PAYCALLBACK, orderNo); + } + } + + private void busHandle(EtOrder order, AttachVo attachVo, String payType) { EtOrder order1 = new EtOrder(); order1.setOrderId(order.getOrderId()); logger.info("【支付回调】订单信息 : {}", JSON.toJSONString(order));