From b092906a662b0f7b81d1676499fe28a375057aa3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=97=B4=E8=B4=A7?= <252048765@qq.com> Date: Sat, 14 Sep 2024 19:52:31 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90BUG=E3=80=91=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=A7=92=E6=9D=80=E6=A0=B9=E6=8D=AE=E6=97=B6=E9=97=B4=E6=AE=B5?= =?UTF-8?q?=E5=BC=80=E5=88=A4=E6=96=AD=E6=98=AF=E5=90=A6=E5=BC=80=E5=90=AF?= =?UTF-8?q?=E6=B4=BB=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../seckillactivity/SeckillActivityMapper.java | 3 ++- .../seckill/seckillconfig/SeckillConfigMapper.java | 13 +++++++++++++ .../service/seckill/SeckillActivityServiceImpl.java | 11 +++++++++-- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/seckill/seckillactivity/SeckillActivityMapper.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/seckill/seckillactivity/SeckillActivityMapper.java index c1ab8cc30f..09e143c0ff 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/seckill/seckillactivity/SeckillActivityMapper.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/seckill/seckillactivity/SeckillActivityMapper.java @@ -98,9 +98,10 @@ public interface SeckillActivityMapper extends BaseMapperX { * @param dateTime 指定日期 * @return 活动列表 */ - default List selectListByIdsAndDateTimeLt(Collection ids, LocalDateTime dateTime) { + default List selectListByIdsAndDateTimeLt(Collection ids, List confidIds, LocalDateTime dateTime) { return selectList(new LambdaQueryWrapperX() .in(SeckillActivityDO::getId, ids) + .in(SeckillActivityDO::getConfigIds,confidIds) .lt(SeckillActivityDO::getStartTime, dateTime) .gt(SeckillActivityDO::getEndTime, dateTime)// 开始时间 < 指定时间 < 结束时间,也就是说获取指定时间段的活动 .orderByDesc(SeckillActivityDO::getCreateTime)); diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/seckill/seckillconfig/SeckillConfigMapper.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/seckill/seckillconfig/SeckillConfigMapper.java index f1dcaca322..456cf2c3f7 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/seckill/seckillconfig/SeckillConfigMapper.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/seckill/seckillconfig/SeckillConfigMapper.java @@ -1,12 +1,16 @@ package cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillconfig; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigPageReqVO; import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillConfigDO; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.apache.ibatis.annotations.Mapper; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.List; @Mapper @@ -23,4 +27,13 @@ public interface SeckillConfigMapper extends BaseMapperX { return selectList(SeckillConfigDO::getStatus, status); } + default List selectListByIdsAndDateTimeLt(LocalDateTime dateTime){ + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss"); + String format = formatter.format(dateTime); + return selectList(new LambdaQueryWrapper() + .eq(SeckillConfigDO::getStatus, CommonStatusEnum.ENABLE.getStatus()) + .lt(SeckillConfigDO::getStartTime, format) + .gt(SeckillConfigDO::getEndTime, format)); + } + } diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/seckill/SeckillActivityServiceImpl.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/seckill/SeckillActivityServiceImpl.java index dff4d7c7be..41b6195996 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/seckill/SeckillActivityServiceImpl.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/seckill/SeckillActivityServiceImpl.java @@ -23,6 +23,7 @@ import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillConfigDO; import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillProductDO; import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillactivity.SeckillActivityMapper; import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillactivity.SeckillProductMapper; +import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillconfig.SeckillConfigMapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -33,6 +34,7 @@ import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import static cn.hutool.core.collection.CollUtil.isNotEmpty; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -57,6 +59,8 @@ public class SeckillActivityServiceImpl implements SeckillActivityService { @Resource private SeckillProductMapper seckillProductMapper; @Resource + private SeckillConfigMapper seckillConfigMapper; + @Resource private SeckillConfigService seckillConfigService; @Resource private ProductSpuApi productSpuApi; @@ -331,9 +335,12 @@ public class SeckillActivityServiceImpl implements SeckillActivityService { if (CollUtil.isEmpty(spuIdAndActivityIdMaps)) { return Collections.emptyList(); } - // 2.查询活动详情 + // 2.查询当前时间属于哪个时间段 + List seckillConfigList= seckillConfigMapper.selectListByIdsAndDateTimeLt(dateTime); + List confidIds = seckillConfigList.stream().map(SeckillConfigDO::getId).collect(Collectors.toList()); + // 3.查询活动详情 return seckillActivityMapper.selectListByIdsAndDateTimeLt( - convertSet(spuIdAndActivityIdMaps, map -> MapUtil.getLong(map, "activityId")), dateTime); + convertSet(spuIdAndActivityIdMaps, map -> MapUtil.getLong(map, "activityId")), confidIds, dateTime); } }