mitao
2024-07-29 f9562fc61410d6c66e6973cb63a659557059d114
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java
@@ -52,7 +52,6 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@@ -104,28 +103,25 @@
            goodsSeckill.setStartStatus(StartStatusEnum.NOT_STARTED);
        }
        // 查询该时间范围内,是否已经存在该秒杀商品
        List<Long> skuIds = goodsSeckills.stream().map(GoodsSeckill::getGoodsSkuId)
                .collect(Collectors.toList());
        List<GoodsSeckill> list = this.lambdaQuery()
                .ne(GoodsSeckill::getStartStatus, StartStatusEnum.ENDED)
                .eq(GoodsSeckill::getListingStatus, ListingStatusEnum.ON_SHELVES)
                .le(GoodsSeckill::getStartTime, dto.getStartTime())
                .ge(GoodsSeckill::getEndTime, dto.getStartTime()).list();
                .in(GoodsSeckill::getGoodsSkuId, skuIds).list();
        Set<Long> existGoodsSkuIdSet = list.stream().map(GoodsSeckill::getGoodsSkuId)
                .collect(Collectors.toSet());
        if (!existGoodsSkuIdSet.isEmpty()) {
            List<GoodsSku> goodsSkuList = goodsSkuService.listByIds(existGoodsSkuIdSet);
            Map<Long, String> goodsSkuMap = goodsSkuList.stream()
                    .collect(Collectors.toMap(GoodsSku::getId, GoodsSku::getSkuName));
            List<GoodsSeckill> collect = goodsSeckills.stream()
            Optional<GoodsSeckill> first = goodsSeckills.stream()
                    .filter(goodsSeckill -> existGoodsSkuIdSet.contains(
                            goodsSeckill.getGoodsSkuId()))
                    .collect(Collectors.toList());
            if (!collect.isEmpty()) {
                String goodsSkuNames = collect.stream().map(item -> {
                            return goodsSkuMap.get(item.getGoodsSkuId());
                        }).filter(Objects::nonNull)
                        .collect(Collectors.joining(","));
                    .findFirst();
            if (first.isPresent()) {
                String skuName = goodsSkuMap.get(first.get().getGoodsSkuId());
                throw new ServiceException(
                        String.format("添加失败,商品%s在该时间段内有其他秒杀活动", goodsSkuNames));
                        String.format("添加失败,商品%s在该时间段内有其他秒杀活动", skuName));
            }
        }
        this.saveBatch(goodsSeckills);
@@ -187,12 +183,13 @@
        }
        GoodsSeckill goodsSeckillUpd = BeanUtils.copyBean(upd, GoodsSeckill.class);
        goodsSeckillUpd.setListingStatus(ListingStatusEnum.ON_SHELVES);
        goodsSeckillUpd.setStartStatus(StartStatusEnum.NOT_STARTED);
        this.updateById(goodsSeckillUpd);
        GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
        goodsStockUpdDTO.setAuctionStock(upd.getSeckillStock() * -1);
        goodsStockUpdDTO.setGoodsSkuId(goodsSeckill.getGoodsSkuId());
        goodsSkuService.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO));
        asyncMethodService.seckillScheduleTask(Lists.newArrayList(goodsSeckill));
        asyncMethodService.seckillScheduleTask(Lists.newArrayList(goodsSeckillUpd));
    }
    /**