From c36b79ea63fe43aa77ab74508505b727e4976a01 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期一, 06 十一月 2023 16:01:04 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java
index 9c4bc5a..6574ab5 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java
@@ -14,6 +14,7 @@
 import com.google.gson.GsonBuilder;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.order.domain.dto.WechatPaymentRefundDto;
 import com.ruoyi.order.domain.dto.WeixinPaymentNotifyDto;
 import com.ruoyi.order.domain.pojo.account.OrderRefund;
@@ -45,6 +46,7 @@
 import java.util.Enumeration;
 import java.util.Map;
 import java.util.Objects;
+import java.util.concurrent.TimeUnit;
 
 /**
  * @program: ruoyi
@@ -75,6 +77,9 @@
 
     @Resource
     private OrderRefundService orderRefundService;
+
+    @Resource
+    private RedisService redisService;
 
     @PostMapping(value = "/payNotify")
     @ApiOperation(value = "微信支付/退款通知")
@@ -240,6 +245,14 @@
             if("S".equals(transStat)){
                 PartnerTransactionsResult transaction = new PartnerTransactionsResult();
                 transaction.setOutTradeNo(data.getReqSeqId());
+
+                //防止回调频繁导致时间处理异常
+                Object cacheObject = redisService.getCacheObject(data.getReqSeqId());
+                if(null == cacheObject){
+                    redisService.setCacheObject(data.getReqSeqId(), "", 10L, TimeUnit.SECONDS);
+                }else{
+                    return;
+                }
                 //开始处理业务数据
                 orderService.payBack(transaction, data.getFeeFlag() == 1 ? BigDecimal.ZERO : new BigDecimal(data.getFeeAmount()));
 

--
Gitblit v1.7.1