Commit b092906a662b0f7b81d1676499fe28a375057aa3
1 parent
7873f140
【BUG】修改秒杀根据时间段开判断是否开启活动
Showing
3 changed files
with
24 additions
and
3 deletions
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<SeckillActivityDO> { | @@ -98,9 +98,10 @@ public interface SeckillActivityMapper extends BaseMapperX<SeckillActivityDO> { | ||
| 98 | * @param dateTime 指定日期 | 98 | * @param dateTime 指定日期 |
| 99 | * @return 活动列表 | 99 | * @return 活动列表 |
| 100 | */ | 100 | */ |
| 101 | - default List<SeckillActivityDO> selectListByIdsAndDateTimeLt(Collection<Long> ids, LocalDateTime dateTime) { | 101 | + default List<SeckillActivityDO> selectListByIdsAndDateTimeLt(Collection<Long> ids, List<Long> confidIds, LocalDateTime dateTime) { |
| 102 | return selectList(new LambdaQueryWrapperX<SeckillActivityDO>() | 102 | return selectList(new LambdaQueryWrapperX<SeckillActivityDO>() |
| 103 | .in(SeckillActivityDO::getId, ids) | 103 | .in(SeckillActivityDO::getId, ids) |
| 104 | + .in(SeckillActivityDO::getConfigIds,confidIds) | ||
| 104 | .lt(SeckillActivityDO::getStartTime, dateTime) | 105 | .lt(SeckillActivityDO::getStartTime, dateTime) |
| 105 | .gt(SeckillActivityDO::getEndTime, dateTime)// 开始时间 < 指定时间 < 结束时间,也就是说获取指定时间段的活动 | 106 | .gt(SeckillActivityDO::getEndTime, dateTime)// 开始时间 < 指定时间 < 结束时间,也就是说获取指定时间段的活动 |
| 106 | .orderByDesc(SeckillActivityDO::getCreateTime)); | 107 | .orderByDesc(SeckillActivityDO::getCreateTime)); |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/seckill/seckillconfig/SeckillConfigMapper.java
| 1 | package cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillconfig; | 1 | package cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillconfig; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 5 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | 6 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 6 | import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigPageReqVO; | 7 | import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigPageReqVO; |
| 7 | import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillConfigDO; | 8 | import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillConfigDO; |
| 9 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||
| 8 | import org.apache.ibatis.annotations.Mapper; | 10 | import org.apache.ibatis.annotations.Mapper; |
| 9 | 11 | ||
| 12 | +import java.time.LocalDateTime; | ||
| 13 | +import java.time.format.DateTimeFormatter; | ||
| 10 | import java.util.List; | 14 | import java.util.List; |
| 11 | 15 | ||
| 12 | @Mapper | 16 | @Mapper |
| @@ -23,4 +27,13 @@ public interface SeckillConfigMapper extends BaseMapperX<SeckillConfigDO> { | @@ -23,4 +27,13 @@ public interface SeckillConfigMapper extends BaseMapperX<SeckillConfigDO> { | ||
| 23 | return selectList(SeckillConfigDO::getStatus, status); | 27 | return selectList(SeckillConfigDO::getStatus, status); |
| 24 | } | 28 | } |
| 25 | 29 | ||
| 30 | + default List<SeckillConfigDO> selectListByIdsAndDateTimeLt(LocalDateTime dateTime){ | ||
| 31 | + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss"); | ||
| 32 | + String format = formatter.format(dateTime); | ||
| 33 | + return selectList(new LambdaQueryWrapper<SeckillConfigDO>() | ||
| 34 | + .eq(SeckillConfigDO::getStatus, CommonStatusEnum.ENABLE.getStatus()) | ||
| 35 | + .lt(SeckillConfigDO::getStartTime, format) | ||
| 36 | + .gt(SeckillConfigDO::getEndTime, format)); | ||
| 37 | + } | ||
| 38 | + | ||
| 26 | } | 39 | } |
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; | @@ -23,6 +23,7 @@ import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillConfigDO; | ||
| 23 | import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillProductDO; | 23 | import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillProductDO; |
| 24 | import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillactivity.SeckillActivityMapper; | 24 | import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillactivity.SeckillActivityMapper; |
| 25 | import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillactivity.SeckillProductMapper; | 25 | import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillactivity.SeckillProductMapper; |
| 26 | +import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillconfig.SeckillConfigMapper; | ||
| 26 | import org.springframework.stereotype.Service; | 27 | import org.springframework.stereotype.Service; |
| 27 | import org.springframework.transaction.annotation.Transactional; | 28 | import org.springframework.transaction.annotation.Transactional; |
| 28 | import org.springframework.validation.annotation.Validated; | 29 | import org.springframework.validation.annotation.Validated; |
| @@ -33,6 +34,7 @@ import java.util.Collection; | @@ -33,6 +34,7 @@ import java.util.Collection; | ||
| 33 | import java.util.Collections; | 34 | import java.util.Collections; |
| 34 | import java.util.List; | 35 | import java.util.List; |
| 35 | import java.util.Map; | 36 | import java.util.Map; |
| 37 | +import java.util.stream.Collectors; | ||
| 36 | 38 | ||
| 37 | import static cn.hutool.core.collection.CollUtil.isNotEmpty; | 39 | import static cn.hutool.core.collection.CollUtil.isNotEmpty; |
| 38 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 40 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| @@ -57,6 +59,8 @@ public class SeckillActivityServiceImpl implements SeckillActivityService { | @@ -57,6 +59,8 @@ public class SeckillActivityServiceImpl implements SeckillActivityService { | ||
| 57 | @Resource | 59 | @Resource |
| 58 | private SeckillProductMapper seckillProductMapper; | 60 | private SeckillProductMapper seckillProductMapper; |
| 59 | @Resource | 61 | @Resource |
| 62 | + private SeckillConfigMapper seckillConfigMapper; | ||
| 63 | + @Resource | ||
| 60 | private SeckillConfigService seckillConfigService; | 64 | private SeckillConfigService seckillConfigService; |
| 61 | @Resource | 65 | @Resource |
| 62 | private ProductSpuApi productSpuApi; | 66 | private ProductSpuApi productSpuApi; |
| @@ -331,9 +335,12 @@ public class SeckillActivityServiceImpl implements SeckillActivityService { | @@ -331,9 +335,12 @@ public class SeckillActivityServiceImpl implements SeckillActivityService { | ||
| 331 | if (CollUtil.isEmpty(spuIdAndActivityIdMaps)) { | 335 | if (CollUtil.isEmpty(spuIdAndActivityIdMaps)) { |
| 332 | return Collections.emptyList(); | 336 | return Collections.emptyList(); |
| 333 | } | 337 | } |
| 334 | - // 2.查询活动详情 | 338 | + // 2.查询当前时间属于哪个时间段 |
| 339 | + List<SeckillConfigDO> seckillConfigList= seckillConfigMapper.selectListByIdsAndDateTimeLt(dateTime); | ||
| 340 | + List<Long> confidIds = seckillConfigList.stream().map(SeckillConfigDO::getId).collect(Collectors.toList()); | ||
| 341 | + // 3.查询活动详情 | ||
| 335 | return seckillActivityMapper.selectListByIdsAndDateTimeLt( | 342 | return seckillActivityMapper.selectListByIdsAndDateTimeLt( |
| 336 | - convertSet(spuIdAndActivityIdMaps, map -> MapUtil.getLong(map, "activityId")), dateTime); | 343 | + convertSet(spuIdAndActivityIdMaps, map -> MapUtil.getLong(map, "activityId")), confidIds, dateTime); |
| 337 | } | 344 | } |
| 338 | 345 | ||
| 339 | } | 346 | } |