From 83c48e429783f463eba87670bb68ca6aa65692ae Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期三, 17 七月 2024 23:20:16 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java |  114 +++++++++++++++++++++++++++++++++------------------------
 1 files changed, 66 insertions(+), 48 deletions(-)

diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java
index 60dacaf..f544f53 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java
@@ -17,12 +17,12 @@
 import com.ruoyi.common.core.utils.DateUtils;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.page.BeanUtils;
+import com.ruoyi.common.core.utils.page.CollUtils;
 import com.ruoyi.common.core.utils.page.PageDTO;
 import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.goods.controller.management.dto.GoodsGroupPurchaseDTO;
 import com.ruoyi.goods.controller.management.dto.GoodsGroupPurchaseQuery;
 import com.ruoyi.goods.controller.management.vo.GoodsGroupPurchaseVO;
-import com.ruoyi.system.api.domain.GoodsGroupPurchaseInfo;
 import com.ruoyi.goods.domain.MemberGoodsCollection;
 import com.ruoyi.goods.mapper.GoodsGroupPurchaseMapper;
 import com.ruoyi.goods.service.IGoodsGroupPurchaseService;
@@ -32,9 +32,11 @@
 import com.ruoyi.system.api.constants.DelayTaskEnum;
 import com.ruoyi.system.api.constants.NotificationTypeConstant;
 import com.ruoyi.system.api.domain.GoodsGroupPurchase;
+import com.ruoyi.system.api.domain.GoodsGroupPurchaseInfo;
 import com.ruoyi.system.api.domain.GoodsSku;
 import com.ruoyi.system.api.domain.Order;
 import com.ruoyi.system.api.domain.WebsocketMessageDTO;
+import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO;
 import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO;
 import com.ruoyi.system.api.domain.dto.ListStatusDTO;
 import com.ruoyi.system.api.domain.dto.OrderUpdDTO;
@@ -49,11 +51,10 @@
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
+import javax.annotation.Resource;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
 
 /**
  * <p>
@@ -108,10 +109,10 @@
             queryWrapper.eq(GoodsGroupPurchase::getGoodsSkuId, dto.getGoodsSkuId());
             queryWrapper.eq(GoodsGroupPurchase::getListingStatus,
                     ListingStatusEnum.ON_SHELVES.getCode());
-            queryWrapper.between(GoodsGroupPurchase::getStartTime, dto.getStartTime(),
-                    dto.getEndTime());
-            List<GoodsGroupPurchase> list = this.list(queryWrapper);
-            if (StringUtils.isNotEmpty(list)) {
+            queryWrapper.le(GoodsGroupPurchase::getStartTime, dto.getStartTime());
+            queryWrapper.ge(GoodsGroupPurchase::getEndTime, dto.getEndTime());
+            long count = this.count(queryWrapper);
+            if (count > 0) {
                 throw new ServiceException("添加失败,当前商品在该时间段内有其他团购活动");
             }
             this.save(goodsGroupPurchase);
@@ -120,10 +121,14 @@
                 throw new ServiceException("商品不存在");
             }
             int groupPurchaseStock = dto.getLimitNumber() * dto.getGroupSize();
-            goodsSkuService.lambdaUpdate()
-                    .set(GoodsSku::getStock, goodsSku.getStock() - groupPurchaseStock)
-                    .ge(GoodsSku::getStock, groupPurchaseStock)
-                    .eq(GoodsSku::getId, goodsSku.getId());
+            if (goodsSku.getStock() < groupPurchaseStock) {
+                throw new ServiceException(String.format("团购商品【%s】剩余库存不足,请修改团购库存",
+                        goodsSku.getSkuName()));
+            }
+            GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
+            goodsStockUpdDTO.setAuctionStock(groupPurchaseStock * -1);
+            goodsStockUpdDTO.setGoodsSkuId(goodsSku.getId());
+            goodsSkuService.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO));
         } else {
             GoodsGroupPurchase groupPurchase = this.getById(dto.getId());
             if (StringUtils.isNull(groupPurchase)) {
@@ -142,12 +147,17 @@
             }
             int groupPurchaseStock = dto.getLimitNumber() * dto.getGroupSize();
             int latestStock = originGroupStock - groupPurchaseStock;
-            goodsSkuService.lambdaUpdate()
-                    .set(GoodsSku::getStock,
-                            goodsSku.getStock() + latestStock)
-                    .ge(GoodsSku::getStock, latestStock)
-                    .eq(GoodsSku::getId, goodsSku.getId());
+            if (goodsSku.getStock() < latestStock) {
+                throw new ServiceException(String.format("团购商品%s剩余库存不足,请修改团购库存",
+                        goodsSku.getSkuName()));
+            }
+            GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
+            goodsStockUpdDTO.setAuctionStock(latestStock);
+            goodsStockUpdDTO.setGoodsSkuId(goodsSku.getId());
+            goodsSkuService.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO));
             this.updateById(goodsGroupPurchase);
+        }
+        if (goodsGroupPurchase.getListingStatus().equals(ListingStatusEnum.ON_SHELVES)) {
             asyncMethodService.groupPurchaseScheduleTask(Lists.newArrayList(goodsGroupPurchase));
         }
     }
@@ -197,7 +207,14 @@
         }
         //修改状态
         groupPurchase.setListingStatus(dto.getListingStatus());
+        groupPurchase.setStartStatus(StartStatusEnum.ENDED);
+        if (!groupPurchase.getGroupStatus().equals(GroupStatusEnum.FORMED_INTO_A_GROUP)) {
+            groupPurchase.setGroupStatus(GroupStatusEnum.GROUP_FAILURE);
+        }
         this.updateById(groupPurchase);
+        if (dto.getListingStatus().equals(ListingStatusEnum.ON_SHELVES)) {
+            asyncMethodService.groupPurchaseScheduleTask(Lists.newArrayList(groupPurchase));
+        }
     }
 
     /**
@@ -268,42 +285,43 @@
             //查询关联订单
             List<Order> orderList = orderClient.getOrderByGroupPurchaseId(id,
                     SecurityConstants.INNER).getData();
+            if (CollUtils.isNotEmpty(orderList)) {
 
-            List<RefundDTO> refundDTOList = orderList.stream().map(order -> {
-                RefundDTO refundDTO = new RefundDTO();
-                refundDTO.setOrderNo(order.getOrderNo());
-                refundDTO.setAmount(order.getTotalAmount());
-                return refundDTO;
-            }).collect(Collectors.toList());
-            Map<String, Object> data = orderClient.refund(refundDTOList,
-                    SecurityConstants.INNER).getData();
-            if (StringUtils.isNotEmpty(data)) {
-                // 处理退款返回结果
-                List<String> successfulOrders = new ArrayList<>();
-                List<String> failedOrders = new ArrayList<>();
+                List<RefundDTO> refundDTOList = orderList.stream().map(order -> {
+                    RefundDTO refundDTO = new RefundDTO();
+                    refundDTO.setOrderNo(order.getOrderNo());
+                    refundDTO.setAmount(order.getTotalAmount());
+                    return refundDTO;
+                }).collect(Collectors.toList());
+                Map<String, Object> data = orderClient.refund(refundDTOList,
+                        SecurityConstants.INNER).getData();
+                if (StringUtils.isNotEmpty(data)) {
+                    // 处理退款返回结果
+                    List<String> successfulOrders = new ArrayList<>();
+                    List<String> failedOrders = new ArrayList<>();
 
-                data.forEach((key, value) -> {
-                    if ((boolean) value) {
-                        successfulOrders.add(key);
-                    } else {
-                        failedOrders.add(key);
-                    }
-                });
-                // 处理退款结果
-                List<Order> updateOrderList = orderList.stream()
-                        .filter(order -> successfulOrders.contains(order.getOrderNo()))
-                        .peek(order -> {
-                            order.setOrderStatus(OrderStatusEnum.CANCELED);
-                        }).collect(Collectors.toList());
-                List<OrderUpdDTO> orderUpdDTOS = BeanUtils.copyList(updateOrderList,
-                        OrderUpdDTO.class);
-                orderClient.updateOrderList(orderUpdDTOS, SecurityConstants.INNER);
+                    data.forEach((key, value) -> {
+                        if ((boolean) value) {
+                            successfulOrders.add(key);
+                        } else {
+                            failedOrders.add(key);
+                        }
+                    });
+                    // 处理退款结果
+                    List<Order> updateOrderList = orderList.stream()
+                            .filter(order -> successfulOrders.contains(order.getOrderNo()))
+                            .peek(order -> {
+                                order.setOrderStatus(OrderStatusEnum.CANCELED);
+                            }).collect(Collectors.toList());
+                    List<OrderUpdDTO> orderUpdDTOS = BeanUtils.copyList(updateOrderList,
+                            OrderUpdDTO.class);
+                    orderClient.updateOrderList(orderUpdDTOS, SecurityConstants.INNER);
+                }
             }
-        } else {
-            this.lambdaUpdate()
-                    .set(GoodsGroupPurchase::getStartStatus, StartStatusEnum.ENDED)
-                    .eq(GoodsGroupPurchase::getId, id).update();
+            groupPurchase.setGroupStatus(GroupStatusEnum.GROUP_FAILURE);
         }
+        groupPurchase.setStartStatus(StartStatusEnum.ENDED);
+        this.updateById(groupPurchase);
     }
 
     @Override

--
Gitblit v1.7.1