From 01d6fa48a0de7a21988e89f71721b6b85e53b517 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期四, 06 三月 2025 16:33:53 +0800 Subject: [PATCH] 去掉资讯图片必填限制 --- ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java | 79 +++++++++++++++++++++++++++++++++++---- 1 files changed, 70 insertions(+), 9 deletions(-) diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java index c4b9f54..0e526c9 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java @@ -16,6 +16,7 @@ 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.GoodsSeckillDTO; @@ -142,7 +143,12 @@ goodsStockUpdDTO.setAuctionStock(seckillStock * -1); goodsStockUpdDTO.setGoodsSkuId(goodsSku.getId()); goodsSkuService.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO)); - asyncMethodService.seckillScheduleTask(Lists.newArrayList(goodsSeckill)); + if (goodsSeckill.getEndTime().isBefore(LocalDateTime.now())) { + goodsSeckill.setStartStatus(StartStatusEnum.ENDED); + this.updateById(goodsSeckill); + } else { + asyncMethodService.seckillScheduleTask(Lists.newArrayList(goodsSeckill)); + } } } @@ -181,15 +187,29 @@ if (goodsSku.getStock() < upd.getSeckillStock()) { throw new ServiceException("编辑失败,商品库存不足"); } + Optional<GoodsSeckill> seckillOpt = this.lambdaQuery() + .ne(GoodsSeckill::getStartStatus, StartStatusEnum.ENDED) + .ne(GoodsSeckill::getId, goodsSeckill.getId()) + .eq(GoodsSeckill::getGoodsSkuId, goodsSeckill.getGoodsSkuId()).oneOpt(); + if (seckillOpt.isPresent()) { + throw new ServiceException("编辑失败,商品在该时间段内有其他秒杀活动"); + } 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(goodsSeckillUpd)); + + if (goodsSeckillUpd.getEndTime().isBefore(LocalDateTime.now())) { + goodsSeckillUpd.setStartStatus(StartStatusEnum.ENDED); + this.updateById(goodsSeckillUpd); + } else { + // 修改库存 + GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); + goodsStockUpdDTO.setAuctionStock(upd.getSeckillStock() * -1); + goodsStockUpdDTO.setGoodsSkuId(goodsSeckill.getGoodsSkuId()); + goodsSkuService.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO)); + asyncMethodService.seckillScheduleTask(Lists.newArrayList(goodsSeckillUpd)); + } } /** @@ -204,7 +224,8 @@ throw new ServiceException("秒杀商品不存在"); } goodsSeckill.setListingStatus(dto.getListingStatus()); - if (dto.getListingStatus().equals(ListingStatusEnum.REMOVED_FROM_THE_SHELF)) { + if (dto.getListingStatus().equals(ListingStatusEnum.REMOVED_FROM_THE_SHELF) + && !goodsSeckill.getStartStatus().equals(StartStatusEnum.ENDED)) { // 退回剩余库存 GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); goodsStockUpdDTO.setAuctionStock(goodsSeckill.getSeckillStock()); @@ -280,12 +301,17 @@ log.info(">>>>>>>>>>>>>>>>>>>>{}秒杀结束<<<<<<<<<<<<<<<<<<<<", seckillId); GoodsSeckill goodsSeckill = this.getById(seckillId); if (StringUtils.isNotNull(goodsSeckill) - && goodsSeckill.getStartStatus().equals(StartStatusEnum.STARTED)) { + && !goodsSeckill.getStartStatus().equals(StartStatusEnum.ENDED)) { //结束秒杀 this.lambdaUpdate().set(GoodsSeckill::getStartStatus, StartStatusEnum.ENDED) .eq(GoodsSeckill::getId, seckillId).update(); // 将秒杀商品从缓存中移除 redisService.deleteObject(CacheConstants.SECKILL_GOODS + goodsSeckill.getId()); + // 退回剩余库存 + GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); + goodsStockUpdDTO.setAuctionStock(goodsSeckill.getSeckillStock()); + goodsStockUpdDTO.setGoodsSkuId(goodsSeckill.getGoodsSkuId()); + goodsSkuService.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO)); } Map<String, Object> map = new ConcurrentHashMap<>(); map.put("notification_type", NotificationTypeConstant.SECKILL); @@ -384,7 +410,9 @@ Set<Long> goodsSkuIdList = null; goodsSkuIdList = page1.stream().map(GoodsSku::getId) .collect(Collectors.toSet()); - + if (CollUtils.isEmpty(goodsSkuIdList)) { + return PageDTO.empty(0L, 0L); + } Page<GoodsSeckill> page = new Page<>(); page.setSize(homeGoodsSkuDTO.getPageSize()); page.setCurrent(homeGoodsSkuDTO.getPageCurr()); @@ -443,10 +471,21 @@ homeGoodsSeckillInfoVO.setPrice(data6.getPrice()); homeGoodsSeckillInfoVO.setSoldQuantity(byId.getSoldQuantity()); homeGoodsSeckillInfoVO.setUnit(data6.getUnit()); + homeGoodsSeckillInfoVO.setSpec(data6.getSpec()); homeGoodsSeckillInfoVO.setSpecUnit(data6.getSpecUnit()); homeGoodsSeckillInfoVO.setCoverPic(data6.getCoverPic()); homeGoodsSeckillInfoVO.setAlbum(data6.getAlbum()); homeGoodsSeckillInfoVO.setShareTitle(byId.getShareTitle()); + if (StringUtils.isNotBlank(byId.getShareTitle())) { + homeGoodsSeckillInfoVO.setShareTitle(byId.getShareTitle()); + } else { + homeGoodsSeckillInfoVO.setShareTitle(data6.getSkuName()); + } + if (StringUtils.isNotBlank(byId.getSharePic())) { + homeGoodsSeckillInfoVO.setSharePic(byId.getSharePic()); + } else { + homeGoodsSeckillInfoVO.setSharePic(data6.getCoverPic()); + } homeGoodsSeckillInfoVO.setSeckillPrice(byId.getSeckillPrice()); homeGoodsSeckillInfoVO.setDescription(data6.getDescription()); homeGoodsSeckillInfoVO.setDetail(data6.getDetail()); @@ -483,4 +522,26 @@ return homeGoodsSeckillInfoVO; } + + /** + * 结束异常的秒杀 + */ + @Override + public void updSeckillStatus() { + baseMapper.updSeckillStatus(); + } + + /** + * 根据秒杀id集合查询商品sku信息 + * + * @param seckillIdSet + * @return + */ + @Override + public List<GoodsSku> getGoodsSkuBySeckillIdSet(Set<Long> seckillIdSet) { + List<GoodsSeckill> goodsSeckills = this.listByIds(seckillIdSet); + List<Long> goodsSkuIdList = goodsSeckills.stream().map(GoodsSeckill::getGoodsSkuId) + .collect(Collectors.toList()); + return goodsSkuService.listByIds(goodsSkuIdList); + } } -- Gitblit v1.7.1