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/resources/mapper/order/OrderMapper.xml                              |    4 ++--
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java       |   13 +++++++++++++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java                  |    3 +--
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java |    8 +++++---
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsTotalServiceImpl.java  |    6 +++---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java       |   16 ++++------------
 6 files changed, 28 insertions(+), 22 deletions(-)

diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
index 53f0dd5..b484715 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
@@ -337,12 +337,14 @@
     @Override
     public void deleteMgtActivity(String activityId){
         Activity activity = this.getById(activityId);
-        if (activity.getActivityStatus() != 0) {
-            throw new ServiceException(AppErrorConstant.ACTIVITY_ING_DELETE);
-        }
+//        if (activity.getActivityStatus() != 0) {
+//            throw new ServiceException(AppErrorConstant.ACTIVITY_ING_DELETE);
+//        }
         activity.setDelFlag(1);
         activity.setActivityStatus(-1);
         this.saveOrUpdate(activity);
+        //活动结束
+        endActivity(activityId);
     }
 
     /**
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsTotalServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsTotalServiceImpl.java
index 383d497..2a8e315 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsTotalServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsTotalServiceImpl.java
@@ -32,7 +32,7 @@
      */
     @Override
     public void changeGoodsTotal(List<GoodsTotalChangeDto> goodsTotalChangeDtoList){
-        log.debug("商品统计变动"+goodsTotalChangeDtoList.toString());
+        log.error("商品统计变动"+goodsTotalChangeDtoList.toString());
         if (goodsTotalChangeDtoList != null && !goodsTotalChangeDtoList.isEmpty()) {
             // 创建一个空的GoodsTotal对象
             GoodsTotal goodsTotal;
@@ -49,13 +49,13 @@
                         // 更新GoodsTotal对象的相关属性
                         goodsTotal.setBuyCount(goodsTotal.getBuyCount() + 1);
                         goodsTotal.setBuyNumCount(goodsTotal.getBuyNumCount() + goodsTotalChangeDto.getChangeNum());
-                        goodsTotal.setBuyUserCount(goodsTotal.getBuyUserCount() + goodsTotalChangeDto.getPersonNum());
+                        goodsTotal.setBuyUserCount(goodsTotalChangeDto.getPersonNum());
                         goodsTotal.setBuyMoneyTotal(goodsTotal.getBuyMoneyTotal().add(goodsTotalChangeDto.getMoney()));
                     } else {
                         // 更新GoodsTotal对象的相关属性
                         goodsTotal.setBuyCount(goodsTotal.getBuyCount() - 1);
                         goodsTotal.setBuyNumCount(goodsTotal.getBuyNumCount() - goodsTotalChangeDto.getChangeNum());
-                        goodsTotal.setBuyUserCount(goodsTotal.getBuyUserCount() - goodsTotalChangeDto.getPersonNum());
+                        goodsTotal.setBuyUserCount(goodsTotalChangeDto.getPersonNum());
                         goodsTotal.setBuyMoneyTotal(goodsTotal.getBuyMoneyTotal().subtract(goodsTotalChangeDto.getMoney()));
                     }
                     // 将更新后的GoodsTotal对象添加到列表中
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()));
 
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
index 2d2bddd..c80d343 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
@@ -662,11 +662,10 @@
      * @description  获取用户商品购买数量
      * @author  jqs
      * @date    2023/7/23 18:17
-     * @param userId
      * @param goodsId
      * @return  Integer
      */
-    Integer countUserBuyGoodsNum(@Param("userId")Long userId, @Param("goodsId")String goodsId);
+    Integer countUserBuyGoodsNum(@Param("goodsId")String goodsId);
 
 
     /**
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
index 6bc5a49..c107a78 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -5181,12 +5181,8 @@
             goodsTotalChangeDto.setChangeType(1);
             goodsTotalChangeDto.setChangeNum(orderGoods.getBuyNum());
             goodsTotalChangeDto.setMoney(orderGoods.getGoodsReceivableMoney());
-            Integer bugGoodsNum = orderMapper.countUserBuyGoodsNum(order.getUserId(), orderGoods.getGoodsId());
-            if (bugGoodsNum == null || bugGoodsNum < 1) {
-                goodsTotalChangeDto.setPersonNum(1);
-            }else{
-                goodsTotalChangeDto.setPersonNum(0);
-            }
+            Integer bugGoodsNum = orderMapper.countUserBuyGoodsNum(orderGoods.getGoodsId());
+            goodsTotalChangeDto.setPersonNum(bugGoodsNum);
             goodsTotalChangeDtoList.add(goodsTotalChangeDto);
         }
         //更新商品统计
@@ -5392,12 +5388,8 @@
                 goodsTotalChangeDto.setChangeType(2);
                 goodsTotalChangeDto.setChangeNum(orderGoods.getBuyNum());
                 goodsTotalChangeDto.setMoney(orderGoods.getGoodsReceivableMoney());
-                Integer bugGoodsNum = orderMapper.countUserBuyGoodsNum(order.getUserId(), orderGoods.getGoodsId());
-                if (bugGoodsNum == null || bugGoodsNum <= orderGoods.getBuyNum()) {
-                    goodsTotalChangeDto.setPersonNum(1);
-                }else{
-                    goodsTotalChangeDto.setPersonNum(0);
-                }
+                Integer bugGoodsNum = orderMapper.countUserBuyGoodsNum(orderGoods.getGoodsId());
+                goodsTotalChangeDto.setPersonNum(bugGoodsNum);
                 goodsTotalChangeDtoList.add(goodsTotalChangeDto);
             }
             remoteGoodsService.changeGoodsTotal(goodsTotalChangeDtoList);
diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
index cb57a11..106b804 100644
--- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
+++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -2037,10 +2037,10 @@
     </select>
 
     <select id="countUserBuyGoodsNum" resultType="java.lang.Integer">
-        SELECT SUM(tog.buy_num)
+        select count(1) from (SELECT toc.user_id
         FROM t_order toc
         INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
-        WHERE toc.del_flag = 0 AND toc.order_status &gt; 1 AND toc.user_id = #{userId} AND tog.goods_id = #{goodsId}
+        WHERE toc.del_flag = 0 AND toc.order_status &gt; 1 AND tog.goods_id = #{goodsId} group by toc.user_id) as aa
     </select>
 
     <select id="getMgtShopAllOrderTotal" resultType="com.ruoyi.order.domain.vo.MgtShopAllOrderTotal">

--
Gitblit v1.7.1