rentaiming
2024-07-31 fa5620dba592d030e7fd9197ce01eacee26426a8
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java
@@ -31,14 +31,12 @@
import com.ruoyi.goods.service.IGoodsSkuService;
import com.ruoyi.goods.service.IMemberGoodsCollectionService;
import com.ruoyi.goods.service.async.AsyncMethodService;
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.OrderDTO;
@@ -49,6 +47,7 @@
import com.ruoyi.system.api.domain.vo.WdGoodsGroupPurchaseVO;
import com.ruoyi.system.api.feignClient.OrderClient;
import com.ruoyi.system.api.feignClient.SysUserClient;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -108,10 +107,7 @@
            }
            LambdaQueryWrapper<GoodsGroupPurchase> queryWrapper = Wrappers.lambdaQuery();
            queryWrapper.eq(GoodsGroupPurchase::getGoodsSkuId, dto.getGoodsSkuId());
            queryWrapper.eq(GoodsGroupPurchase::getListingStatus,
                    ListingStatusEnum.ON_SHELVES.getCode());
            queryWrapper.le(GoodsGroupPurchase::getStartTime, dto.getStartTime());
            queryWrapper.ge(GoodsGroupPurchase::getEndTime, dto.getStartTime());
            queryWrapper.ne(GoodsGroupPurchase::getStartStatus, StartStatusEnum.ENDED);
            long count = this.count(queryWrapper);
            if (count > 0) {
                throw new ServiceException("添加失败,当前商品在该时间段内有其他团购活动");
@@ -149,7 +145,11 @@
                        goodsSku.getSkuName()));
            }
        }
        if (goodsGroupPurchase.getListingStatus().equals(ListingStatusEnum.ON_SHELVES)) {
        if (goodsGroupPurchase.getEndTime().isBefore(LocalDateTime.now())) {
            goodsGroupPurchase.setStartStatus(StartStatusEnum.ENDED);
            goodsGroupPurchase.setGroupStatus(GroupStatusEnum.GROUP_FAILURE);
            this.updateById(goodsGroupPurchase);
        } else {
            asyncMethodService.groupPurchaseScheduleTask(Lists.newArrayList(goodsGroupPurchase));
        }
    }
@@ -197,28 +197,19 @@
            if (groupPurchase.getStartStatus().equals(StartStatusEnum.STARTED)) {
                throw new ServiceException("该商品已开始团购,不能下架");
            }
            //移除该团购商品延时任务
            redisService.deleteObject(DelayTaskEnum.GROUP_PURCHASES_START_TASK.getCode() + "-"
                    + groupPurchase.getId());
            redisService.deleteObject(
                    DelayTaskEnum.GROUP_PURCHASES_END_TASK.getCode() + "-" + groupPurchase.getId());
            // 退回剩余库存
            GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
            goodsStockUpdDTO.setAuctionStock(
                    groupPurchase.getLimitNumber() * groupPurchase.getGroupSize());
            goodsStockUpdDTO.setGoodsSkuId(groupPurchase.getGoodsSkuId());
            goodsSkuService.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO));
        }
        //修改状态
        groupPurchase.setListingStatus(dto.getListingStatus());
        groupPurchase.setStartStatus(StartStatusEnum.ENDED);
        if (!groupPurchase.getGroupStatus().equals(GroupStatusEnum.FORMED_INTO_A_GROUP)) {
        List<GoodsGroupPurchaseInfo> groupPurchaseInfoList = goodsGroupPurchaseInfoService.lambdaQuery()
                .eq(GoodsGroupPurchaseInfo::getGroupPurchaseId, dto.getId()).list();
        long count = groupPurchaseInfoList.stream().filter(info -> info.getGroupStatus() == 1)
                .count();
        if (count > 0) {
            groupPurchase.setGroupStatus(GroupStatusEnum.FORMED_INTO_A_GROUP);
        } else {
            groupPurchase.setGroupStatus(GroupStatusEnum.GROUP_FAILURE);
        }
        this.updateById(groupPurchase);
        if (dto.getListingStatus().equals(ListingStatusEnum.ON_SHELVES)) {
            asyncMethodService.groupPurchaseScheduleTask(Lists.newArrayList(groupPurchase));
        }
    }
    /**