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 | 280 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 228 insertions(+), 52 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 553a71f..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 @@ -13,19 +13,24 @@ import com.ruoyi.common.core.enums.ListingStatusEnum; import com.ruoyi.common.core.enums.StartStatusEnum; import com.ruoyi.common.core.exception.ServiceException; +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; import com.ruoyi.goods.controller.management.dto.GoodsSeckillQuery; import com.ruoyi.goods.controller.management.dto.GoodsSeckillUpd; import com.ruoyi.goods.controller.management.vo.GoodsSeckillVO; +import com.ruoyi.goods.domain.GoodsSeckillAppointment; +import com.ruoyi.goods.domain.MemberGoodsCollection; import com.ruoyi.goods.mapper.GoodsSeckillMapper; +import com.ruoyi.goods.service.IGoodsSeckillAppointmentService; import com.ruoyi.goods.service.IGoodsSeckillService; 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.GoodsBrand; import com.ruoyi.system.api.domain.GoodsCategory; @@ -33,6 +38,8 @@ import com.ruoyi.system.api.domain.GoodsSeckill; import com.ruoyi.system.api.domain.GoodsSeries; import com.ruoyi.system.api.domain.GoodsSku; +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.vo.HomeGoodsSeckillInfoVO; @@ -40,7 +47,7 @@ import com.ruoyi.system.api.feignClient.GoodsSkuClient; import com.ruoyi.system.api.feignClient.OrderClient; import com.ruoyi.system.api.feignClient.SysUserClient; -import com.ruoyi.system.api.util.WebSocketUsers; +import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; @@ -50,6 +57,7 @@ import java.util.Set; 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; @@ -76,6 +84,13 @@ private final AsyncMethodService asyncMethodService; // 创建一个静态共享的ObjectMapper实例以重用 private static final ObjectMapper objectMapper = new ObjectMapper(); + + @Resource + private IMemberGoodsCollectionService iMemberGoodsCollectionService; + + @Resource + private IGoodsSeckillAppointmentService iGoodsSeckillAppointmentService; + @Override @Transactional(rollbackFor = Exception.class) public void addGoodsSeckill(GoodsSeckillDTO dto) { @@ -88,6 +103,28 @@ goodsSeckill.setEndTime(dto.getEndTime()); 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) + .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)); + Optional<GoodsSeckill> first = goodsSeckills.stream() + .filter(goodsSeckill -> existGoodsSkuIdSet.contains( + goodsSeckill.getGoodsSkuId())) + .findFirst(); + if (first.isPresent()) { + String skuName = goodsSkuMap.get(first.get().getGoodsSkuId()); + throw new ServiceException( + String.format("添加失败,商品%s在该时间段内有其他秒杀活动", skuName)); + } + } this.saveBatch(goodsSeckills); for (GoodsSeckill goodsSeckill : goodsSeckills) { @@ -95,12 +132,23 @@ if (StringUtils.isNull(goodsSku)) { throw new ServiceException("商品不存在"); } + Integer seckillStock = goodsSeckill.getSeckillStock(); - goodsSkuService.lambdaUpdate() - .set(GoodsSku::getStock, goodsSku.getStock() - seckillStock) - .ge(GoodsSku::getStock, seckillStock) - .eq(GoodsSku::getId, goodsSku.getId()); - asyncMethodService.seckillScheduleTask(Lists.newArrayList(goodsSeckill)); + if (goodsSku.getStock() < seckillStock) { + throw new ServiceException( + String.format("秒杀商品%s剩余库存不足,请修改秒杀库存", + goodsSku.getSkuName())); + } + GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); + goodsStockUpdDTO.setAuctionStock(seckillStock * -1); + goodsStockUpdDTO.setGoodsSkuId(goodsSku.getId()); + goodsSkuService.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO)); + if (goodsSeckill.getEndTime().isBefore(LocalDateTime.now())) { + goodsSeckill.setStartStatus(StartStatusEnum.ENDED); + this.updateById(goodsSeckill); + } else { + asyncMethodService.seckillScheduleTask(Lists.newArrayList(goodsSeckill)); + } } } @@ -131,12 +179,37 @@ if (StringUtils.isNull(goodsSeckill)) { throw new ServiceException("秒杀商品不存在"); } - if (goodsSeckill.getStartStatus().equals(StartStatusEnum.STARTED)) { + if (goodsSeckill.getStartStatus().equals(StartStatusEnum.STARTED) + && goodsSeckill.getListingStatus().equals(ListingStatusEnum.ON_SHELVES)) { throw new ServiceException("秒杀商品已开始秒杀,不能修改"); } + GoodsSku goodsSku = goodsSkuService.getById(goodsSeckill.getGoodsSkuId()); + 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); - asyncMethodService.seckillScheduleTask(Lists.newArrayList(goodsSeckill)); + + 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)); + } } /** @@ -150,17 +223,16 @@ if (StringUtils.isNull(goodsSeckill)) { throw new ServiceException("秒杀商品不存在"); } - this.lambdaUpdate() - .eq(GoodsSeckill::getId, dto.getId()) - .set(GoodsSeckill::getListingStatus, dto.getListingStatus()) - .update(); - if (dto.getListingStatus().equals(ListingStatusEnum.REMOVED_FROM_THE_SHELF)) { - //移除该秒杀商品的延时任务 - redisService.deleteObject( - DelayTaskEnum.SECKILL_START_TASK.getCode() + "-" + goodsSeckill.getId()); - redisService.deleteObject( - DelayTaskEnum.SECKILL_END_TASK.getCode() + "-" + goodsSeckill.getId()); + goodsSeckill.setListingStatus(dto.getListingStatus()); + if (dto.getListingStatus().equals(ListingStatusEnum.REMOVED_FROM_THE_SHELF) + && !goodsSeckill.getStartStatus().equals(StartStatusEnum.ENDED)) { + // 退回剩余库存 + GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); + goodsStockUpdDTO.setAuctionStock(goodsSeckill.getSeckillStock()); + goodsStockUpdDTO.setGoodsSkuId(goodsSeckill.getGoodsSkuId()); + goodsSkuService.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO)); } + this.updateById(goodsSeckill); } /** @@ -177,10 +249,13 @@ } GoodsSeckillVO vo = BeanUtils.copyBean(goodsSeckill, GoodsSeckillVO.class); GoodsSku goods = goodsSkuService.getById(goodsSeckill.getGoodsSkuId()); - Optional.of(goods).ifPresent(goodsSku -> vo.setGoodsSkuName(goodsSku.getSkuName())); - Integer num = orderClient.getSeckillMembers(goodsSeckill.getGoodsSkuId(), + Optional.of(goods).ifPresent(goodsSku -> { + vo.setGoodsSkuName(goodsSku.getSkuName()); + vo.setGoodsSkuStock(goodsSku.getStock()); + }); + Integer num = orderClient.getSeckillMembers(goodsSeckill.getId(), SecurityConstants.INNER).getData(); - vo.setNumberOfPurchasedMembers(num); + vo.setNumberOfPurchasedMembers(StringUtils.isNull(num) ? 0 : num); return vo; } @@ -195,9 +270,7 @@ GoodsSeckill goodsSeckill = this.getById(seckillId); // 秒杀商品不能为空且上架状态为上架中 状态为未开始 if (StringUtils.isNotNull(goodsSeckill) - && goodsSeckill.getStartStatus().equals(StartStatusEnum.NOT_STARTED) && - goodsSeckill.getListingStatus() - .equals(ListingStatusEnum.ON_SHELVES)) { + && goodsSeckill.getStartStatus().equals(StartStatusEnum.NOT_STARTED)) { //开始秒杀 this.lambdaUpdate().set(GoodsSeckill::getStartStatus, StartStatusEnum.STARTED) .eq(GoodsSeckill::getId, seckillId).update(); @@ -209,11 +282,12 @@ //推送秒杀开始消息 Map<String, Object> map = new ConcurrentHashMap<>(); map.put("notification_type", NotificationTypeConstant.SECKILL); - map.put("notification_time", LocalDateTime.now()); + map.put("notification_time", DateUtils.dateTimeNow("yyyy-MM-dd HH:mm:ss")); map.put("target_id", seckillId); map.put("message_type", "start"); String msg = objectMapper.writeValueAsString(map); - WebSocketUsers.sendMessageToUsersByType(ClientTypeEnum.MEMBER.getCode(), msg); + sysUserClient.pushByClientType(WebsocketMessageDTO.builder().message(msg) + .clientType(ClientTypeEnum.MEMBER).build(), SecurityConstants.INNER); log.info("===================>发送websocket通知,消息体{}", msg); } @@ -227,20 +301,26 @@ 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); - map.put("notification_time", LocalDateTime.now()); + map.put("notification_time", DateUtils.dateTimeNow("yyyy-MM-dd HH:mm:ss")); map.put("target_id", seckillId); map.put("message_type", "end"); String msg = objectMapper.writeValueAsString(map); - WebSocketUsers.sendMessageToUsersByType(ClientTypeEnum.MEMBER.getCode(), msg); + sysUserClient.pushByClientType(WebsocketMessageDTO.builder().message(msg) + .clientType(ClientTypeEnum.MEMBER).build(), SecurityConstants.INNER); log.info("===================>发送websocket通知,消息体{}", msg); } @@ -248,13 +328,21 @@ public PageDTO<HomeGoodsSeckillVO> getHomeGoodsSeckillVOList(HomeGoodsSkuDTO homeGoodsSkuDTO) { LambdaQueryWrapper<GoodsSku> wrapper3= Wrappers.lambdaQuery(); wrapper3.eq(GoodsSku::getDelFlag,0); - wrapper3.eq(GoodsSku::getListingStatus,0); - wrapper3.like(GoodsSku::getSkuName,homeGoodsSkuDTO.getSkuName()); - wrapper3.eq(GoodsSku::getSkuName,homeGoodsSkuDTO.getSkuName()); - wrapper3.eq(GoodsSku::getBrandId,homeGoodsSkuDTO.getBrandId()); - wrapper3.eq(GoodsSku::getCategoryId,homeGoodsSkuDTO.getCategoryId()); - wrapper3.eq(GoodsSku::getSeriesId,homeGoodsSkuDTO.getSeriesId()); - wrapper3.eq(GoodsSku::getFlavorTypeId,homeGoodsSkuDTO.getFlavorTypeId()); + if (homeGoodsSkuDTO.getSkuName()!=null && homeGoodsSkuDTO.getSkuName()!=""){ + wrapper3.like(GoodsSku::getSkuName,homeGoodsSkuDTO.getSkuName()); + } + if (homeGoodsSkuDTO.getBrandId()!=null){ + wrapper3.eq(GoodsSku::getBrandId,homeGoodsSkuDTO.getBrandId()); + } + if (homeGoodsSkuDTO.getCategoryId()!=null){ + wrapper3.eq(GoodsSku::getCategoryId,homeGoodsSkuDTO.getCategoryId()); + } + if (homeGoodsSkuDTO.getSeriesId()!=null){ + wrapper3.eq(GoodsSku::getSeriesId,homeGoodsSkuDTO.getSeriesId()); + } + if (homeGoodsSkuDTO.getFlavorTypeId()!=null){ + wrapper3.eq(GoodsSku::getFlavorTypeId,homeGoodsSkuDTO.getFlavorTypeId()); + } if (homeGoodsSkuDTO.getSort()==2){ wrapper3.orderByAsc(GoodsSku::getPrice); } @@ -272,42 +360,59 @@ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDateTime newTime7 = now.minusYears(30); String formattedDate7 = newTime7.format(formatter); - LocalDateTime parseTime7 = LocalDateTime.parse(formattedDate7, formatter); - wrapper3.gt(GoodsSku::getYears,parseTime7); + LocalDateTime parseTime7 = LocalDate.parse(formattedDate7).atStartOfDay(); + wrapper3.le(GoodsSku::getYears,parseTime7); } if(homeGoodsSkuDTO.getYear()==3){ LocalDateTime now = LocalDateTime.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDateTime newTime7 = now.minusYears(30); String formattedDate7 = newTime7.format(formatter); - LocalDateTime parseTime7 = LocalDateTime.parse(formattedDate7, formatter); + LocalDateTime parseTime7 = LocalDate.parse(formattedDate7).atStartOfDay(); LocalDateTime newTime15 = now.minusYears(15); String formattedDate15 = newTime15.format(formatter); - LocalDateTime parseTime15= LocalDateTime.parse(formattedDate15, formatter); - wrapper3.gt(GoodsSku::getYears, parseTime15) - .le(GoodsSku::getYears, parseTime7); + LocalDateTime parseTime15= LocalDate.parse(formattedDate15).atStartOfDay(); + wrapper3.le(GoodsSku::getYears, parseTime15) + .gt(GoodsSku::getYears, parseTime7); } - if(homeGoodsSkuDTO.getYear()==3){ + if(homeGoodsSkuDTO.getYear()==4){ LocalDateTime now = LocalDateTime.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDateTime newTime7 = now.minusYears(5); String formattedDate7 = newTime7.format(formatter); - LocalDateTime parseTime7 = LocalDateTime.parse(formattedDate7, formatter); + LocalDateTime parseTime7 = LocalDate.parse(formattedDate7).atStartOfDay(); LocalDateTime newTime15 = now.minusYears(15); String formattedDate15 = newTime15.format(formatter); - LocalDateTime parseTime15= LocalDateTime.parse(formattedDate15, formatter); - wrapper3.ge(GoodsSku::getYears, parseTime7) - .le(GoodsSku::getYears, parseTime15); + LocalDateTime parseTime15= LocalDate.parse(formattedDate15).atStartOfDay(); + wrapper3.le(GoodsSku::getYears, parseTime7) + .gt(GoodsSku::getYears, parseTime15); } + + if(homeGoodsSkuDTO.getYear()==5){ + LocalDateTime now = LocalDateTime.now(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + LocalDateTime newTime7 = now.minusYears(1); + String formattedDate7 = newTime7.format(formatter); + LocalDateTime parseTime7 = LocalDate.parse(formattedDate7).atStartOfDay(); + + LocalDateTime newTime15 = now.minusYears(5); + String formattedDate15 = newTime15.format(formatter); + LocalDateTime parseTime15= LocalDate.parse(formattedDate15).atStartOfDay(); + wrapper3.le(GoodsSku::getYears, parseTime7) + .ge(GoodsSku::getYears, parseTime15); + } + List<GoodsSku> page1 = goodsSkuService.list(wrapper3); 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()); @@ -319,8 +424,11 @@ in.add(0); in.add(1); wrapper4.in(GoodsSeckill::getStartStatus,in); - wrapper4.in(GoodsSeckill::getGoodsSkuId,goodsSkuIdList); - wrapper4.orderByAsc(GoodsSeckill::getSortNum); + if(goodsSkuIdList.size()>0){ + wrapper4.in(GoodsSeckill::getGoodsSkuId,goodsSkuIdList); + } + + wrapper4.orderByDesc(GoodsSeckill::getSortNum); Page<GoodsSeckill> page2 = this.page(page, wrapper4); PageDTO<HomeGoodsSeckillVO> HomeGoodsSeckillVOPageDTO = PageDTO.of(page2, HomeGoodsSeckillVO.class); @@ -347,17 +455,37 @@ GoodsCategory data1 = goodsSkuClient.getCategoryOne(data6.getCategoryId(), SecurityConstants.INNER).getData(); GoodsSeries data2 = goodsSkuClient.getSeriesOne(data6.getSeriesId(), SecurityConstants.INNER).getData(); GoodsFlavorType data3 = goodsSkuClient.getFlavorTypeOne(data6.getFlavorTypeId(), SecurityConstants.INNER).getData(); - homeGoodsSeckillInfoVO.setBrand(data.getBrandName()); + if(data!=null){ + homeGoodsSeckillInfoVO.setBrand(data.getBrandName()); + } + if(data1!=null){ homeGoodsSeckillInfoVO.setCategory(data1.getCategoryName()); + } + if(data2!=null){ homeGoodsSeckillInfoVO.setSeries(data2.getSeriesName()); + } + if(data3!=null){ homeGoodsSeckillInfoVO.setFlavorType(data3.getFlavorTypeName()); + } + 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()); @@ -366,6 +494,54 @@ homeGoodsSeckillInfoVO.setStartTime(byId.getStartTime()); homeGoodsSeckillInfoVO.setEndTime(byId.getEndTime()); homeGoodsSeckillInfoVO.setStartStatus(byId.getStartStatus()); + homeGoodsSeckillInfoVO.setSeckillStock(byId.getSeckillStock()); + + + LambdaQueryWrapper<MemberGoodsCollection> wrapper3= Wrappers.lambdaQuery(); + wrapper3.eq(MemberGoodsCollection::getDelFlag,0); + wrapper3.eq(MemberGoodsCollection::getMemberId,homeGoodsSkuDTO.getMemberId()); + wrapper3.eq(MemberGoodsCollection::getTargetId,homeGoodsSkuDTO.getGoodsSkuId()); + wrapper3.eq(MemberGoodsCollection::getType,3); + List<MemberGoodsCollection> list = iMemberGoodsCollectionService.list(wrapper3); + if (list.size()>0){ + homeGoodsSeckillInfoVO.setIsCollection(2); + }else{ + homeGoodsSeckillInfoVO.setIsCollection(1); + } + + LambdaQueryWrapper<GoodsSeckillAppointment> wrapper4= Wrappers.lambdaQuery(); + wrapper4.eq(GoodsSeckillAppointment::getDelFlag,0); + wrapper4.eq(GoodsSeckillAppointment::getMemberId,homeGoodsSkuDTO.getMemberId()); + wrapper4.eq(GoodsSeckillAppointment::getGoodsSeckillId,homeGoodsSkuDTO.getGoodsSkuId()); + List<GoodsSeckillAppointment> list2 = iGoodsSeckillAppointmentService.list(wrapper4); + if (list2.size()>0){ + homeGoodsSeckillInfoVO.setIsAppointment(2); + }else{ + homeGoodsSeckillInfoVO.setIsAppointment(1); + } + 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