Commit 65c6184450de989e5705cc571c3a37259bd36315
1 parent
cb995ba0
【代码优化】商城:优化 /promotion/activity/list-by-spu-id 的逻辑
Showing
12 changed files
with
81 additions
and
308 deletions
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/activity/AppActivityController.java
| 1 | 1 | package cn.iocoder.yudao.module.promotion.controller.app.activity; |
| 2 | 2 | |
| 3 | -import cn.hutool.core.collection.CollUtil; | |
| 4 | -import cn.hutool.core.map.MapUtil; | |
| 5 | -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | |
| 6 | 3 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 7 | -import cn.iocoder.yudao.module.product.api.spu.ProductSpuApi; | |
| 8 | 4 | import cn.iocoder.yudao.module.promotion.controller.app.activity.vo.AppActivityRespVO; |
| 9 | 5 | import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainActivityDO; |
| 10 | 6 | import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationActivityDO; |
| 11 | -import cn.iocoder.yudao.module.promotion.dal.dataobject.discount.DiscountActivityDO; | |
| 12 | -import cn.iocoder.yudao.module.promotion.dal.dataobject.discount.DiscountProductDO; | |
| 13 | -import cn.iocoder.yudao.module.promotion.dal.dataobject.reward.RewardActivityDO; | |
| 14 | 7 | import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillActivityDO; |
| 15 | -import cn.iocoder.yudao.module.promotion.enums.common.PromotionProductScopeEnum; | |
| 16 | 8 | import cn.iocoder.yudao.module.promotion.enums.common.PromotionTypeEnum; |
| 17 | 9 | import cn.iocoder.yudao.module.promotion.service.bargain.BargainActivityService; |
| 18 | 10 | import cn.iocoder.yudao.module.promotion.service.combination.CombinationActivityService; |
| 19 | -import cn.iocoder.yudao.module.promotion.service.discount.DiscountActivityService; | |
| 20 | -import cn.iocoder.yudao.module.promotion.service.reward.RewardActivityService; | |
| 21 | 11 | import cn.iocoder.yudao.module.promotion.service.seckill.SeckillActivityService; |
| 22 | 12 | import io.swagger.v3.oas.annotations.Operation; |
| 23 | 13 | import io.swagger.v3.oas.annotations.Parameter; |
| ... | ... | @@ -29,12 +19,10 @@ import org.springframework.web.bind.annotation.RequestMapping; |
| 29 | 19 | import org.springframework.web.bind.annotation.RequestParam; |
| 30 | 20 | import org.springframework.web.bind.annotation.RestController; |
| 31 | 21 | |
| 32 | -import java.time.LocalDateTime; | |
| 33 | -import java.util.*; | |
| 34 | -import java.util.stream.Collectors; | |
| 22 | +import java.util.ArrayList; | |
| 23 | +import java.util.List; | |
| 35 | 24 | |
| 36 | 25 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 37 | -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; | |
| 38 | 26 | |
| 39 | 27 | @Tag(name = "用户 APP - 营销活动") // 用于提供跨多个活动的 HTTP 接口 |
| 40 | 28 | @RestController |
| ... | ... | @@ -48,125 +36,31 @@ public class AppActivityController { |
| 48 | 36 | private SeckillActivityService seckillActivityService; |
| 49 | 37 | @Resource |
| 50 | 38 | private BargainActivityService bargainActivityService; |
| 51 | - @Resource | |
| 52 | - private DiscountActivityService discountActivityService; | |
| 53 | - @Resource | |
| 54 | - private RewardActivityService rewardActivityService; | |
| 55 | - | |
| 56 | - @Resource | |
| 57 | - private ProductSpuApi productSpuApi; | |
| 58 | 39 | |
| 59 | 40 | @GetMapping("/list-by-spu-id") |
| 60 | - @Operation(summary = "获得单个商品,近期参与的每个活动") | |
| 41 | + @Operation(summary = "获得单个商品,进行中的拼团、秒杀、砍价活动信息", description = "每种活动,只返回一个") | |
| 61 | 42 | @Parameter(name = "spuId", description = "商品编号", required = true) |
| 62 | 43 | public CommonResult<List<AppActivityRespVO>> getActivityListBySpuId(@RequestParam("spuId") Long spuId) { |
| 63 | - // 每种活动,只返回一个 | |
| 64 | - return success(getAppActivityList(Collections.singletonList(spuId))); | |
| 65 | - } | |
| 66 | - | |
| 67 | - @GetMapping("/list-by-spu-ids") | |
| 68 | - @Operation(summary = "获得多个商品,近期参与的每个活动") | |
| 69 | - @Parameter(name = "spuIds", description = "商品编号数组", required = true) | |
| 70 | - public CommonResult<Map<Long, List<AppActivityRespVO>>> getActivityListBySpuIds(@RequestParam("spuIds") List<Long> spuIds) { | |
| 71 | - if (CollUtil.isEmpty(spuIds)) { | |
| 72 | - return success(MapUtil.empty()); | |
| 73 | - } | |
| 74 | - // 每种活动,只返回一个;key 为 SPU 编号 | |
| 75 | - return success(convertMultiMap(getAppActivityList(spuIds), AppActivityRespVO::getSpuId)); | |
| 76 | - } | |
| 77 | - | |
| 78 | - private List<AppActivityRespVO> getAppActivityList(Collection<Long> spuIds) { | |
| 79 | - if (CollUtil.isEmpty(spuIds)) { | |
| 80 | - return new ArrayList<>(); | |
| 81 | - } | |
| 82 | - // 获取开启的且开始的且没有结束的活动 | |
| 83 | - List<AppActivityRespVO> activityList = new ArrayList<>(); | |
| 84 | - LocalDateTime now = LocalDateTime.now(); | |
| 44 | + List<AppActivityRespVO> activityVOList = new ArrayList<>(); | |
| 85 | 45 | // 1. 拼团活动 |
| 86 | - getCombinationActivities(spuIds, now, activityList); | |
| 87 | - // 2. 秒杀活动 | |
| 88 | - getSeckillActivities(spuIds, now, activityList); | |
| 89 | - // 3. 砍价活动 | |
| 90 | - getBargainActivities(spuIds, now, activityList); | |
| 91 | - // 4. 限时折扣活动 | |
| 92 | - getDiscountActivities(spuIds, now, activityList); | |
| 93 | - // 5. 满减送活动 | |
| 94 | - getRewardActivityList(spuIds, now, activityList); | |
| 95 | - return activityList; | |
| 96 | - } | |
| 97 | - | |
| 98 | - private void getCombinationActivities(Collection<Long> spuIds, LocalDateTime now, List<AppActivityRespVO> activityList) { | |
| 99 | - List<CombinationActivityDO> combinationActivities = combinationActivityService.getCombinationActivityBySpuIdsAndStatusAndDateTimeLt( | |
| 100 | - spuIds, CommonStatusEnum.ENABLE.getStatus(), now); | |
| 101 | - if (CollUtil.isEmpty(combinationActivities)) { | |
| 102 | - return; | |
| 103 | - } | |
| 104 | - | |
| 105 | - combinationActivities.forEach(item -> { | |
| 106 | - activityList.add(new AppActivityRespVO(item.getId(), PromotionTypeEnum.COMBINATION_ACTIVITY.getType(), | |
| 107 | - item.getName(), item.getSpuId(), item.getStartTime(), item.getEndTime())); | |
| 108 | - }); | |
| 109 | - } | |
| 110 | - | |
| 111 | - private void getSeckillActivities(Collection<Long> spuIds, LocalDateTime now, List<AppActivityRespVO> activityList) { | |
| 112 | - List<SeckillActivityDO> seckillActivities = seckillActivityService.getSeckillActivityBySpuIdsAndStatusAndDateTimeLt( | |
| 113 | - spuIds, CommonStatusEnum.ENABLE.getStatus(), now); | |
| 114 | - if (CollUtil.isEmpty(seckillActivities)) { | |
| 115 | - return; | |
| 116 | - } | |
| 117 | - | |
| 118 | - seckillActivities.forEach(item -> { | |
| 119 | - activityList.add(new AppActivityRespVO(item.getId(), PromotionTypeEnum.SECKILL_ACTIVITY.getType(), | |
| 120 | - item.getName(), item.getSpuId(), item.getStartTime(), item.getEndTime())); | |
| 121 | - }); | |
| 122 | - } | |
| 123 | - | |
| 124 | - private void getBargainActivities(Collection<Long> spuIds, LocalDateTime now, List<AppActivityRespVO> activityList) { | |
| 125 | - List<BargainActivityDO> bargainActivities = bargainActivityService.getBargainActivityBySpuIdsAndStatusAndDateTimeLt( | |
| 126 | - spuIds, CommonStatusEnum.ENABLE.getStatus(), now); | |
| 127 | - if (CollUtil.isNotEmpty(bargainActivities)) { | |
| 128 | - return; | |
| 129 | - } | |
| 130 | - | |
| 131 | - bargainActivities.forEach(item -> { | |
| 132 | - activityList.add(new AppActivityRespVO(item.getId(), PromotionTypeEnum.BARGAIN_ACTIVITY.getType(), | |
| 133 | - item.getName(), item.getSpuId(), item.getStartTime(), item.getEndTime())); | |
| 134 | - }); | |
| 135 | - } | |
| 136 | - | |
| 137 | - private void getDiscountActivities(Collection<Long> spuIds, LocalDateTime now, List<AppActivityRespVO> activityList) { | |
| 138 | - List<DiscountActivityDO> discountActivities = discountActivityService.getDiscountActivityBySpuIdsAndStatusAndDateTimeLt( | |
| 139 | - spuIds, CommonStatusEnum.ENABLE.getStatus(), now); | |
| 140 | - if (CollUtil.isEmpty(discountActivities)) { | |
| 141 | - return; | |
| 46 | + CombinationActivityDO combinationActivity = combinationActivityService.getMatchCombinationActivityBySpuId(spuId); | |
| 47 | + if (combinationActivity != null) { | |
| 48 | + activityVOList.add(new AppActivityRespVO(combinationActivity.getId(), PromotionTypeEnum.COMBINATION_ACTIVITY.getType(), | |
| 49 | + combinationActivity.getName(), combinationActivity.getSpuId(), combinationActivity.getStartTime(), combinationActivity.getEndTime())); | |
| 142 | 50 | } |
| 143 | - | |
| 144 | - List<DiscountProductDO> products = discountActivityService.getDiscountProductsByActivityId( | |
| 145 | - convertSet(discountActivities, DiscountActivityDO::getId)); | |
| 146 | - Map<Long, Long> productMap = convertMap(products, DiscountProductDO::getActivityId, DiscountProductDO::getSpuId); | |
| 147 | - discountActivities.forEach(item -> activityList.add(new AppActivityRespVO(item.getId(), PromotionTypeEnum.DISCOUNT_ACTIVITY.getType(), | |
| 148 | - item.getName(), productMap.get(item.getId()), item.getStartTime(), item.getEndTime()))); | |
| 149 | - } | |
| 150 | - | |
| 151 | - private void getRewardActivityList(Collection<Long> spuIds, LocalDateTime now, List<AppActivityRespVO> activityList) { | |
| 152 | - List<RewardActivityDO> rewardActivities = rewardActivityService.getRewardActivityBySpuIdsAndStatusAndDateTimeLt( | |
| 153 | - spuIds, CommonStatusEnum.ENABLE.getStatus(), now); | |
| 154 | - if (CollUtil.isEmpty(rewardActivities)) { | |
| 155 | - return; | |
| 51 | + // 2. 秒杀活动 | |
| 52 | + SeckillActivityDO seckillActivity = seckillActivityService.getMatchSeckillActivityBySpuId(spuId); | |
| 53 | + if (seckillActivity != null) { | |
| 54 | + activityVOList.add(new AppActivityRespVO(seckillActivity.getId(), PromotionTypeEnum.SECKILL_ACTIVITY.getType(), | |
| 55 | + seckillActivity.getName(), seckillActivity.getSpuId(), seckillActivity.getStartTime(), seckillActivity.getEndTime())); | |
| 156 | 56 | } |
| 157 | - | |
| 158 | - Map<Long, Optional<RewardActivityDO>> spuIdAndActivityMap = spuIds.stream().collect(Collectors.toMap(spuId -> spuId, spuId -> rewardActivities.stream() | |
| 159 | - .filter(activity -> PromotionProductScopeEnum.isAll(activity.getProductScope()) | |
| 160 | - || PromotionProductScopeEnum.isSpu(activity.getProductScope()) // 商品范围 | |
| 161 | - && CollUtil.contains(activity.getProductScopeValues(), spuId) | |
| 162 | - || PromotionProductScopeEnum.isCategory(activity.getProductScope()) // 分类范围 | |
| 163 | - && CollUtil.contains(activity.getProductScopeValues(), productSpuApi.getSpu(spuId).getCategoryId())) | |
| 164 | - .max(Comparator.comparing(RewardActivityDO::getCreateTime)))); | |
| 165 | - for (Long supId : spuIdAndActivityMap.keySet()) { | |
| 166 | - spuIdAndActivityMap.get(supId).ifPresent(rewardActivity -> activityList.add( | |
| 167 | - new AppActivityRespVO(rewardActivity.getId(), PromotionTypeEnum.REWARD_ACTIVITY.getType(), | |
| 168 | - rewardActivity.getName(), supId, rewardActivity.getStartTime(), rewardActivity.getEndTime()))); | |
| 57 | + // 3. 砍价活动 | |
| 58 | + BargainActivityDO bargainActivity = bargainActivityService.getMatchBargainActivityBySpuId(spuId); | |
| 59 | + if (bargainActivity != null) { | |
| 60 | + activityVOList.add(new AppActivityRespVO(bargainActivity.getId(), PromotionTypeEnum.BARGAIN_ACTIVITY.getType(), | |
| 61 | + bargainActivity.getName(), bargainActivity.getSpuId(), bargainActivity.getStartTime(), bargainActivity.getEndTime())); | |
| 169 | 62 | } |
| 63 | + return success(activityVOList); | |
| 170 | 64 | } |
| 171 | 65 | |
| 172 | 66 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/bargain/BargainActivityMapper.java
| ... | ... | @@ -6,14 +6,11 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 6 | 6 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 7 | 7 | import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.activity.BargainActivityPageReqVO; |
| 8 | 8 | import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainActivityDO; |
| 9 | -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |
| 10 | 9 | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| 11 | 10 | import org.apache.ibatis.annotations.Mapper; |
| 12 | 11 | |
| 13 | 12 | import java.time.LocalDateTime; |
| 14 | -import java.util.Collection; | |
| 15 | 13 | import java.util.List; |
| 16 | -import java.util.Map; | |
| 17 | 14 | |
| 18 | 15 | /** |
| 19 | 16 | * 砍价活动 Mapper |
| ... | ... | @@ -86,35 +83,13 @@ public interface BargainActivityMapper extends BaseMapperX<BargainActivityDO> { |
| 86 | 83 | .last("LIMIT " + count)); |
| 87 | 84 | } |
| 88 | 85 | |
| 89 | - /** | |
| 90 | - * 查询出指定 spuId 的 spu 参加的活动最接近现在的一条记录。多个的话,一个 spuId 对应一个最近的活动编号 | |
| 91 | - * | |
| 92 | - * @param spuIds spu 编号 | |
| 93 | - * @param status 状态 | |
| 94 | - * @return 包含 spuId 和 activityId 的 map 对象列表 | |
| 95 | - */ | |
| 96 | - default List<Map<String, Object>> selectSpuIdAndActivityIdMapsBySpuIdsAndStatus(Collection<Long> spuIds, Integer status) { | |
| 97 | - return selectMaps(new QueryWrapper<BargainActivityDO>() | |
| 98 | - .select("spu_id AS spuId, MAX(DISTINCT(id)) AS activityId") // 时间越大 id 也越大 直接用 id | |
| 99 | - .in("spu_id", spuIds) | |
| 100 | - .eq("status", status) | |
| 101 | - .groupBy("spu_id")); | |
| 102 | - } | |
| 103 | - | |
| 104 | - /** | |
| 105 | - * 获取指定活动编号的活动列表且 | |
| 106 | - * 开始时间和结束时间小于给定时间 dateTime 的活动列表 | |
| 107 | - * | |
| 108 | - * @param ids 活动编号 | |
| 109 | - * @param dateTime 指定日期 | |
| 110 | - * @return 活动列表 | |
| 111 | - */ | |
| 112 | - default List<BargainActivityDO> selectListByIdsAndDateTimeLt(Collection<Long> ids, LocalDateTime dateTime) { | |
| 113 | - return selectList(new LambdaQueryWrapperX<BargainActivityDO>() | |
| 114 | - .in(BargainActivityDO::getId, ids) | |
| 115 | - .lt(BargainActivityDO::getStartTime, dateTime) | |
| 116 | - .gt(BargainActivityDO::getEndTime, dateTime)// 开始时间 < 指定时间 < 结束时间,也就是说获取指定时间段的活动 | |
| 117 | - .orderByDesc(BargainActivityDO::getCreateTime)); | |
| 86 | + default BargainActivityDO selectBySpuIdAndStatusAndNow(Long spuId, Integer status) { | |
| 87 | + LocalDateTime now = LocalDateTime.now(); | |
| 88 | + return selectOne(new LambdaQueryWrapperX<BargainActivityDO>() | |
| 89 | + .eq(BargainActivityDO::getSpuId, spuId) | |
| 90 | + .eq(BargainActivityDO::getStatus, status) | |
| 91 | + .lt(BargainActivityDO::getStartTime, now) | |
| 92 | + .gt(BargainActivityDO::getEndTime, now)); // 开始时间 < now < 结束时间,也就是说获取指定时间段的活动 | |
| 118 | 93 | } |
| 119 | 94 | |
| 120 | 95 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/combination/CombinationActivityMapper.java
| ... | ... | @@ -6,14 +6,10 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 6 | 6 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 7 | 7 | import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.activity.CombinationActivityPageReqVO; |
| 8 | 8 | import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationActivityDO; |
| 9 | -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |
| 10 | 9 | import org.apache.ibatis.annotations.Mapper; |
| 11 | -import org.apache.ibatis.annotations.Param; | |
| 12 | 10 | |
| 13 | 11 | import java.time.LocalDateTime; |
| 14 | -import java.util.Collection; | |
| 15 | 12 | import java.util.List; |
| 16 | -import java.util.Map; | |
| 17 | 13 | |
| 18 | 14 | /** |
| 19 | 15 | * 拼团活动 Mapper |
| ... | ... | @@ -39,40 +35,13 @@ public interface CombinationActivityMapper extends BaseMapperX<CombinationActivi |
| 39 | 35 | .eq(CombinationActivityDO::getStatus, status)); |
| 40 | 36 | } |
| 41 | 37 | |
| 42 | - default List<CombinationActivityDO> selectListByStatus(Integer status, Integer count) { | |
| 43 | - return selectList(new LambdaQueryWrapperX<CombinationActivityDO>() | |
| 38 | + default CombinationActivityDO selectBySpuIdAndStatusAndNow(Long spuId, Integer status) { | |
| 39 | + LocalDateTime now = LocalDateTime.now(); | |
| 40 | + return selectOne(new LambdaQueryWrapperX<CombinationActivityDO>() | |
| 41 | + .eq(CombinationActivityDO::getSpuId, spuId) | |
| 44 | 42 | .eq(CombinationActivityDO::getStatus, status) |
| 45 | - .last("LIMIT " + count)); | |
| 43 | + .lt(CombinationActivityDO::getStartTime, now) | |
| 44 | + .gt(CombinationActivityDO::getEndTime, now)); // 开始时间 < now < 结束时间,也就是说获取指定时间段的活动 | |
| 46 | 45 | } |
| 47 | 46 | |
| 48 | - /** | |
| 49 | - * 查询出指定 spuId 的 spu 参加的活动最接近现在的一条记录。多个的话,一个 spuId 对应一个最近的活动编号 | |
| 50 | - * @param spuIds spu 编号 | |
| 51 | - * @param status 状态 | |
| 52 | - * @return 包含 spuId 和 activityId 的 map 对象列表 | |
| 53 | - */ | |
| 54 | - default List<Map<String, Object>> selectSpuIdAndActivityIdMapsBySpuIdsAndStatus(@Param("spuIds") Collection<Long> spuIds, @Param("status") Integer status) { | |
| 55 | - return selectMaps(new QueryWrapper<CombinationActivityDO>() | |
| 56 | - .select("spu_id AS spuId, MAX(DISTINCT(id)) AS activityId") // 时间越大 id 也越大 直接用 id | |
| 57 | - .in("spu_id", spuIds) | |
| 58 | - .eq("status", status) | |
| 59 | - .groupBy("spu_id")); | |
| 60 | - } | |
| 61 | - | |
| 62 | - /** | |
| 63 | - * 获取指定活动编号的活动列表且 | |
| 64 | - * 开始时间和结束时间小于给定时间 dateTime 的活动列表 | |
| 65 | - * | |
| 66 | - * @param ids 活动编号 | |
| 67 | - * @param dateTime 指定日期 | |
| 68 | - * @return 活动列表 | |
| 69 | - */ | |
| 70 | - default List<CombinationActivityDO> selectListByIdsAndDateTimeLt(Collection<Long> ids, LocalDateTime dateTime) { | |
| 71 | - return selectList(new LambdaQueryWrapperX<CombinationActivityDO>() | |
| 72 | - .in(CombinationActivityDO::getId, ids) | |
| 73 | - .lt(CombinationActivityDO::getStartTime, dateTime) | |
| 74 | - .gt(CombinationActivityDO::getEndTime, dateTime)// 开始时间 < 指定时间 < 结束时间,也就是说获取指定时间段的活动 | |
| 75 | - .orderByDesc(CombinationActivityDO::getCreateTime)); | |
| 76 | - } | |
| 77 | - | |
| 78 | -} | |
| 47 | +} | |
| 79 | 48 | \ No newline at end of file | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/seckill/seckillactivity/SeckillActivityMapper.java
| ... | ... | @@ -8,15 +8,11 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 8 | 8 | import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.SeckillActivityPageReqVO; |
| 9 | 9 | import cn.iocoder.yudao.module.promotion.controller.app.seckill.vo.activity.AppSeckillActivityPageReqVO; |
| 10 | 10 | import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillActivityDO; |
| 11 | -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |
| 12 | 11 | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| 13 | 12 | import org.apache.ibatis.annotations.Mapper; |
| 14 | -import org.apache.ibatis.annotations.Param; | |
| 15 | 13 | |
| 16 | 14 | import java.time.LocalDateTime; |
| 17 | -import java.util.Collection; | |
| 18 | 15 | import java.util.List; |
| 19 | -import java.util.Map; | |
| 20 | 16 | |
| 21 | 17 | /** |
| 22 | 18 | * 秒杀活动 Mapper |
| ... | ... | @@ -77,35 +73,13 @@ public interface SeckillActivityMapper extends BaseMapperX<SeckillActivityDO> { |
| 77 | 73 | .apply(ObjectUtil.isNotNull(pageReqVO.getConfigId()), "FIND_IN_SET(" + pageReqVO.getConfigId() + ",config_ids) > 0")); |
| 78 | 74 | } |
| 79 | 75 | |
| 80 | - /** | |
| 81 | - * 查询出指定 spuId 的 spu 参加的活动最接近现在的一条记录。多个的话,一个 spuId 对应一个最近的活动编号 | |
| 82 | - * | |
| 83 | - * @param spuIds spu 编号 | |
| 84 | - * @param status 状态 | |
| 85 | - * @return 包含 spuId 和 activityId 的 map 对象列表 | |
| 86 | - */ | |
| 87 | - default List<Map<String, Object>> selectSpuIdAndActivityIdMapsBySpuIdsAndStatus(@Param("spuIds") Collection<Long> spuIds, @Param("status") Integer status) { | |
| 88 | - return selectMaps(new QueryWrapper<SeckillActivityDO>() | |
| 89 | - .select("spu_id AS spuId, MAX(DISTINCT(id)) AS activityId") // 时间越大 id 也越大 直接用 id | |
| 90 | - .in("spu_id", spuIds) | |
| 91 | - .eq("status", status) | |
| 92 | - .groupBy("spu_id")); | |
| 93 | - } | |
| 94 | - | |
| 95 | - /** | |
| 96 | - * 获取指定活动编号的活动列表且 | |
| 97 | - * 开始时间和结束时间小于给定时间 dateTime 的活动列表 | |
| 98 | - * | |
| 99 | - * @param ids 活动编号 | |
| 100 | - * @param dateTime 指定日期 | |
| 101 | - * @return 活动列表 | |
| 102 | - */ | |
| 103 | - default List<SeckillActivityDO> selectListByIdsAndDateTimeLt(Collection<Long> ids, LocalDateTime dateTime) { | |
| 104 | - return selectList(new LambdaQueryWrapperX<SeckillActivityDO>() | |
| 105 | - .in(SeckillActivityDO::getId, ids) | |
| 106 | - .lt(SeckillActivityDO::getStartTime, dateTime) | |
| 107 | - .gt(SeckillActivityDO::getEndTime, dateTime)// 开始时间 < 指定时间 < 结束时间,也就是说获取指定时间段的活动 | |
| 108 | - .orderByDesc(SeckillActivityDO::getCreateTime)); | |
| 76 | + default SeckillActivityDO selectBySpuIdAndStatusAndNow(Long spuId, Integer status) { | |
| 77 | + LocalDateTime now = LocalDateTime.now(); | |
| 78 | + return selectOne(new LambdaQueryWrapperX<SeckillActivityDO>() | |
| 79 | + .eq(SeckillActivityDO::getSpuId, spuId) | |
| 80 | + .eq(SeckillActivityDO::getStatus, status) | |
| 81 | + .lt(SeckillActivityDO::getStartTime, now) | |
| 82 | + .gt(SeckillActivityDO::getEndTime, now)); // 开始时间 < now < 结束时间,也就是说获取指定时间段的活动 | |
| 109 | 83 | } |
| 110 | 84 | |
| 111 | 85 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/bargain/BargainActivityService.java
| ... | ... | @@ -6,10 +6,8 @@ import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.activity.Ba |
| 6 | 6 | import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.activity.BargainActivityPageReqVO; |
| 7 | 7 | import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.activity.BargainActivityUpdateReqVO; |
| 8 | 8 | import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainActivityDO; |
| 9 | - | |
| 10 | 9 | import jakarta.validation.Valid; |
| 11 | -import java.time.LocalDateTime; | |
| 12 | -import java.util.Collection; | |
| 10 | + | |
| 13 | 11 | import java.util.List; |
| 14 | 12 | import java.util.Set; |
| 15 | 13 | |
| ... | ... | @@ -108,13 +106,11 @@ public interface BargainActivityService { |
| 108 | 106 | List<BargainActivityDO> getBargainActivityListByCount(Integer count); |
| 109 | 107 | |
| 110 | 108 | /** |
| 111 | - * 获取指定 spu 编号最近参加的活动,每个 spuId 只返回一条记录 | |
| 109 | + * 获得 SPU 进行中的砍价活动 | |
| 112 | 110 | * |
| 113 | - * @param spuIds spu 编号 | |
| 114 | - * @param status 状态 | |
| 115 | - * @param dateTime 日期时间 | |
| 116 | - * @return 砍价活动列表 | |
| 111 | + * @param spuId SPU 编号数组 | |
| 112 | + * @return 砍价活动 | |
| 117 | 113 | */ |
| 118 | - List<BargainActivityDO> getBargainActivityBySpuIdsAndStatusAndDateTimeLt(Collection<Long> spuIds, Integer status, LocalDateTime dateTime); | |
| 114 | + BargainActivityDO getMatchBargainActivityBySpuId(Long spuId); | |
| 119 | 115 | |
| 120 | 116 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/bargain/BargainActivityServiceImpl.java
| 1 | 1 | package cn.iocoder.yudao.module.promotion.service.bargain; |
| 2 | 2 | |
| 3 | -import cn.hutool.core.collection.CollUtil; | |
| 4 | -import cn.hutool.core.map.MapUtil; | |
| 5 | 3 | import cn.hutool.core.util.ObjectUtil; |
| 6 | 4 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 7 | 5 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| ... | ... | @@ -15,17 +13,17 @@ import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.activity.Ba |
| 15 | 13 | import cn.iocoder.yudao.module.promotion.convert.bargain.BargainActivityConvert; |
| 16 | 14 | import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainActivityDO; |
| 17 | 15 | import cn.iocoder.yudao.module.promotion.dal.mysql.bargain.BargainActivityMapper; |
| 16 | +import jakarta.annotation.Resource; | |
| 18 | 17 | import org.springframework.stereotype.Service; |
| 19 | 18 | import org.springframework.transaction.annotation.Transactional; |
| 20 | 19 | import org.springframework.validation.annotation.Validated; |
| 21 | 20 | |
| 22 | -import jakarta.annotation.Resource; | |
| 23 | 21 | import java.time.LocalDateTime; |
| 24 | -import java.util.*; | |
| 22 | +import java.util.List; | |
| 23 | +import java.util.Set; | |
| 25 | 24 | |
| 26 | 25 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 27 | 26 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.anyMatch; |
| 28 | -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; | |
| 29 | 27 | import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.SKU_NOT_EXISTS; |
| 30 | 28 | import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.*; |
| 31 | 29 | |
| ... | ... | @@ -194,15 +192,8 @@ public class BargainActivityServiceImpl implements BargainActivityService { |
| 194 | 192 | } |
| 195 | 193 | |
| 196 | 194 | @Override |
| 197 | - public List<BargainActivityDO> getBargainActivityBySpuIdsAndStatusAndDateTimeLt(Collection<Long> spuIds, Integer status, LocalDateTime dateTime) { | |
| 198 | - // 1. 查询出指定 spuId 的 spu 参加的活动最接近现在的一条记录。多个的话,一个 spuId 对应一个最近的活动编号 | |
| 199 | - List<Map<String, Object>> spuIdAndActivityIdMaps = bargainActivityMapper.selectSpuIdAndActivityIdMapsBySpuIdsAndStatus(spuIds, status); | |
| 200 | - if (CollUtil.isEmpty(spuIdAndActivityIdMaps)) { | |
| 201 | - return Collections.emptyList(); | |
| 202 | - } | |
| 203 | - // 2. 查询活动详情 | |
| 204 | - return bargainActivityMapper.selectListByIdsAndDateTimeLt( | |
| 205 | - convertSet(spuIdAndActivityIdMaps, map -> MapUtil.getLong(map, "activityId")), dateTime); | |
| 195 | + public BargainActivityDO getMatchBargainActivityBySpuId(Long spuId) { | |
| 196 | + return bargainActivityMapper.selectBySpuIdAndStatusAndNow(spuId, CommonStatusEnum.ENABLE.getStatus()); | |
| 206 | 197 | } |
| 207 | 198 | |
| 208 | 199 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationActivityService.java
| ... | ... | @@ -7,9 +7,8 @@ import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.activit |
| 7 | 7 | import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.activity.CombinationActivityUpdateReqVO; |
| 8 | 8 | import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationActivityDO; |
| 9 | 9 | import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationProductDO; |
| 10 | - | |
| 11 | 10 | import jakarta.validation.Valid; |
| 12 | -import java.time.LocalDateTime; | |
| 11 | + | |
| 13 | 12 | import java.util.Collection; |
| 14 | 13 | import java.util.Collections; |
| 15 | 14 | import java.util.List; |
| ... | ... | @@ -109,22 +108,20 @@ public interface CombinationActivityService { |
| 109 | 108 | PageResult<CombinationActivityDO> getCombinationActivityPage(PageParam pageParam); |
| 110 | 109 | |
| 111 | 110 | /** |
| 112 | - * 获取指定活动、指定 sku 编号的商品 | |
| 111 | + * 获取指定活动、指定 SKU 编号的商品 | |
| 113 | 112 | * |
| 114 | 113 | * @param activityId 活动编号 |
| 115 | - * @param skuId sku 编号 | |
| 114 | + * @param skuId SKU 编号 | |
| 116 | 115 | * @return 活动商品信息 |
| 117 | 116 | */ |
| 118 | 117 | CombinationProductDO selectByActivityIdAndSkuId(Long activityId, Long skuId); |
| 119 | 118 | |
| 120 | 119 | /** |
| 121 | - * 获取指定 spu 编号最近参加的活动,每个 spuId 只返回一条记录 | |
| 120 | + * 获得 SPU 进行中的拼团活动 | |
| 122 | 121 | * |
| 123 | - * @param spuIds spu 编号 | |
| 124 | - * @param status 状态 | |
| 125 | - * @param dateTime 日期时间 | |
| 126 | - * @return 拼团活动列表 | |
| 122 | + * @param spuId SPU 编号数组 | |
| 123 | + * @return 拼团活动 | |
| 127 | 124 | */ |
| 128 | - List<CombinationActivityDO> getCombinationActivityBySpuIdsAndStatusAndDateTimeLt(Collection<Long> spuIds, Integer status, LocalDateTime dateTime); | |
| 125 | + CombinationActivityDO getMatchCombinationActivityBySpuId(Long spuId); | |
| 129 | 126 | |
| 130 | 127 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationActivityServiceImpl.java
| 1 | 1 | package cn.iocoder.yudao.module.promotion.service.combination; |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | -import cn.hutool.core.map.MapUtil; | |
| 5 | 4 | import cn.hutool.core.util.ObjectUtil; |
| 6 | 5 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 7 | 6 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| ... | ... | @@ -20,19 +19,18 @@ import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationA |
| 20 | 19 | import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationProductDO; |
| 21 | 20 | import cn.iocoder.yudao.module.promotion.dal.mysql.combination.CombinationActivityMapper; |
| 22 | 21 | import cn.iocoder.yudao.module.promotion.dal.mysql.combination.CombinationProductMapper; |
| 22 | +import jakarta.annotation.Resource; | |
| 23 | 23 | import org.springframework.stereotype.Service; |
| 24 | 24 | import org.springframework.transaction.annotation.Transactional; |
| 25 | 25 | import org.springframework.validation.annotation.Validated; |
| 26 | 26 | |
| 27 | -import jakarta.annotation.Resource; | |
| 28 | -import java.time.LocalDateTime; | |
| 29 | 27 | import java.util.Collection; |
| 30 | -import java.util.Collections; | |
| 31 | 28 | import java.util.List; |
| 32 | 29 | import java.util.Map; |
| 33 | 30 | |
| 34 | 31 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 35 | -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; | |
| 32 | +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; | |
| 33 | +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.filterList; | |
| 36 | 34 | import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.SKU_NOT_EXISTS; |
| 37 | 35 | import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.SPU_NOT_EXISTS; |
| 38 | 36 | import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.*; |
| ... | ... | @@ -178,7 +176,7 @@ public class CombinationActivityServiceImpl implements CombinationActivityServic |
| 178 | 176 | combinationProductMapper.updateBatch(diffList.get(1)); |
| 179 | 177 | } |
| 180 | 178 | if (CollUtil.isNotEmpty(diffList.get(2))) { |
| 181 | - combinationProductMapper.deleteBatchIds(CollectionUtils.convertList(diffList.get(2), CombinationProductDO::getId)); | |
| 179 | + combinationProductMapper.deleteByIds(CollectionUtils.convertList(diffList.get(2), CombinationProductDO::getId)); | |
| 182 | 180 | } |
| 183 | 181 | } |
| 184 | 182 | |
| ... | ... | @@ -238,15 +236,8 @@ public class CombinationActivityServiceImpl implements CombinationActivityServic |
| 238 | 236 | } |
| 239 | 237 | |
| 240 | 238 | @Override |
| 241 | - public List<CombinationActivityDO> getCombinationActivityBySpuIdsAndStatusAndDateTimeLt(Collection<Long> spuIds, Integer status, LocalDateTime dateTime) { | |
| 242 | - // 1.查询出指定 spuId 的 spu 参加的活动最接近现在的一条记录。多个的话,一个 spuId 对应一个最近的活动编号 | |
| 243 | - List<Map<String, Object>> spuIdAndActivityIdMaps = combinationActivityMapper.selectSpuIdAndActivityIdMapsBySpuIdsAndStatus(spuIds, status); | |
| 244 | - if (CollUtil.isEmpty(spuIdAndActivityIdMaps)) { | |
| 245 | - return Collections.emptyList(); | |
| 246 | - } | |
| 247 | - // 2.查询活动详情 | |
| 248 | - return combinationActivityMapper.selectListByIdsAndDateTimeLt( | |
| 249 | - convertSet(spuIdAndActivityIdMaps, map -> MapUtil.getLong(map, "activityId")), dateTime); | |
| 239 | + public CombinationActivityDO getMatchCombinationActivityBySpuId(Long spuId) { | |
| 240 | + return combinationActivityMapper.selectBySpuIdAndStatusAndNow(spuId, CommonStatusEnum.ENABLE.getStatus()); | |
| 250 | 241 | } |
| 251 | 242 | |
| 252 | 243 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/discount/DiscountActivityService.java
| ... | ... | @@ -8,7 +8,6 @@ import cn.iocoder.yudao.module.promotion.dal.dataobject.discount.DiscountActivit |
| 8 | 8 | import cn.iocoder.yudao.module.promotion.dal.dataobject.discount.DiscountProductDO; |
| 9 | 9 | import jakarta.validation.Valid; |
| 10 | 10 | |
| 11 | -import java.time.LocalDateTime; | |
| 12 | 11 | import java.util.Collection; |
| 13 | 12 | import java.util.List; |
| 14 | 13 | |
| ... | ... | @@ -91,14 +90,11 @@ public interface DiscountActivityService { |
| 91 | 90 | List<DiscountProductDO> getDiscountProductsByActivityId(Collection<Long> activityIds); |
| 92 | 91 | |
| 93 | 92 | /** |
| 94 | - * 获取指定 spu 编号最近参加的活动,每个 spuId 只返回一条记录 | |
| 93 | + * 获取指定 SPU 编号最近参加的活动,每个 spuId 只返回一条记录 | |
| 95 | 94 | * |
| 96 | - * @param spuIds spu 编号 | |
| 97 | - * @param status 状态 | |
| 98 | - * @param dateTime 当前日期时间 | |
| 95 | + * @param spuIds SPU 编号数组 | |
| 99 | 96 | * @return 折扣活动列表 |
| 100 | 97 | */ |
| 101 | - List<DiscountActivityDO> getDiscountActivityBySpuIdsAndStatusAndDateTimeLt( | |
| 102 | - Collection<Long> spuIds, Integer status, LocalDateTime dateTime); | |
| 98 | + List<DiscountActivityDO> getDiscountActivityListBySpuIds(Collection<Long> spuIds); | |
| 103 | 99 | |
| 104 | 100 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/discount/DiscountActivityServiceImpl.java
| ... | ... | @@ -189,16 +189,17 @@ public class DiscountActivityServiceImpl implements DiscountActivityService { |
| 189 | 189 | } |
| 190 | 190 | |
| 191 | 191 | @Override |
| 192 | - public List<DiscountActivityDO> getDiscountActivityBySpuIdsAndStatusAndDateTimeLt(Collection<Long> spuIds, Integer status, LocalDateTime dateTime) { | |
| 192 | + public List<DiscountActivityDO> getDiscountActivityListBySpuIds(Collection<Long> spuIds) { | |
| 193 | 193 | // 1. 查询出指定 spuId 的 spu 参加的活动最接近现在的一条记录。多个的话,一个 spuId 对应一个最近的活动编号 |
| 194 | - List<Map<String, Object>> spuIdAndActivityIdMaps = discountProductMapper.selectSpuIdAndActivityIdMapsBySpuIdsAndStatus(spuIds, status); | |
| 194 | + List<Map<String, Object>> spuIdAndActivityIdMaps = discountProductMapper.selectSpuIdAndActivityIdMapsBySpuIdsAndStatus( | |
| 195 | + spuIds, CommonStatusEnum.ENABLE.getStatus()); | |
| 195 | 196 | if (CollUtil.isEmpty(spuIdAndActivityIdMaps)) { |
| 196 | 197 | return Collections.emptyList(); |
| 197 | 198 | } |
| 198 | 199 | |
| 199 | 200 | // 2. 查询活动详情 |
| 200 | 201 | return discountActivityMapper.selectListByIdsAndDateTimeLt( |
| 201 | - convertSet(spuIdAndActivityIdMaps, map -> MapUtil.getLong(map, "activityId")), dateTime); | |
| 202 | + convertSet(spuIdAndActivityIdMaps, map -> MapUtil.getLong(map, "activityId")), LocalDateTime.now()); | |
| 202 | 203 | } |
| 203 | 204 | |
| 204 | 205 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/seckill/SeckillActivityService.java
| ... | ... | @@ -10,7 +10,6 @@ import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillActivityD |
| 10 | 10 | import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillProductDO; |
| 11 | 11 | import jakarta.validation.Valid; |
| 12 | 12 | |
| 13 | -import java.time.LocalDateTime; | |
| 14 | 13 | import java.util.Collection; |
| 15 | 14 | import java.util.List; |
| 16 | 15 | |
| ... | ... | @@ -130,14 +129,12 @@ public interface SeckillActivityService { |
| 130 | 129 | SeckillValidateJoinRespDTO validateJoinSeckill(Long activityId, Long skuId, Integer count); |
| 131 | 130 | |
| 132 | 131 | /** |
| 133 | - * 获取指定 spu 编号最近参加的活动,每个 spuId 只返回一条记录 | |
| 132 | + * 获得 SPU 进行中的秒杀活动 | |
| 134 | 133 | * |
| 135 | - * @param spuIds spu 编号 | |
| 136 | - * @param status 状态 | |
| 137 | - * @param dateTime 日期时间 | |
| 138 | - * @return 秒杀活动列表 | |
| 134 | + * @param spuId SPU 编号数组 | |
| 135 | + * @return 秒杀活动 | |
| 139 | 136 | */ |
| 140 | - List<SeckillActivityDO> getSeckillActivityBySpuIdsAndStatusAndDateTimeLt(Collection<Long> spuIds, Integer status, LocalDateTime dateTime); | |
| 137 | + SeckillActivityDO getMatchSeckillActivityBySpuId(Long spuId); | |
| 141 | 138 | |
| 142 | 139 | /** |
| 143 | 140 | * 获得拼团活动列表 | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/seckill/SeckillActivityServiceImpl.java
| 1 | 1 | package cn.iocoder.yudao.module.promotion.service.seckill; |
| 2 | 2 | |
| 3 | -import cn.hutool.core.collection.CollUtil; | |
| 4 | 3 | import cn.hutool.core.collection.CollectionUtil; |
| 5 | -import cn.hutool.core.map.MapUtil; | |
| 6 | 4 | import cn.hutool.core.util.ObjectUtil; |
| 7 | 5 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 8 | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| ... | ... | @@ -30,7 +28,6 @@ import org.springframework.validation.annotation.Validated; |
| 30 | 28 | |
| 31 | 29 | import java.time.LocalDateTime; |
| 32 | 30 | import java.util.Collection; |
| 33 | -import java.util.Collections; | |
| 34 | 31 | import java.util.List; |
| 35 | 32 | import java.util.Map; |
| 36 | 33 | |
| ... | ... | @@ -56,8 +53,10 @@ public class SeckillActivityServiceImpl implements SeckillActivityService { |
| 56 | 53 | private SeckillActivityMapper seckillActivityMapper; |
| 57 | 54 | @Resource |
| 58 | 55 | private SeckillProductMapper seckillProductMapper; |
| 56 | + | |
| 59 | 57 | @Resource |
| 60 | 58 | private SeckillConfigService seckillConfigService; |
| 59 | + | |
| 61 | 60 | @Resource |
| 62 | 61 | private ProductSpuApi productSpuApi; |
| 63 | 62 | @Resource |
| ... | ... | @@ -219,7 +218,7 @@ public class SeckillActivityServiceImpl implements SeckillActivityService { |
| 219 | 218 | seckillProductMapper.updateBatch(diffList.get(1)); |
| 220 | 219 | } |
| 221 | 220 | if (isNotEmpty(diffList.get(2))) { |
| 222 | - seckillProductMapper.deleteBatchIds(convertList(diffList.get(2), SeckillProductDO::getId)); | |
| 221 | + seckillProductMapper.deleteByIds(convertList(diffList.get(2), SeckillProductDO::getId)); | |
| 223 | 222 | } |
| 224 | 223 | } |
| 225 | 224 | |
| ... | ... | @@ -249,7 +248,7 @@ public class SeckillActivityServiceImpl implements SeckillActivityService { |
| 249 | 248 | seckillActivityMapper.deleteById(id); |
| 250 | 249 | // 删除活动商品 |
| 251 | 250 | List<SeckillProductDO> products = seckillProductMapper.selectListByActivityId(id); |
| 252 | - seckillProductMapper.deleteBatchIds(convertSet(products, SeckillProductDO::getId)); | |
| 251 | + seckillProductMapper.deleteByIds(convertSet(products, SeckillProductDO::getId)); | |
| 253 | 252 | } |
| 254 | 253 | |
| 255 | 254 | private SeckillActivityDO validateSeckillActivityExists(Long id) { |
| ... | ... | @@ -325,20 +324,13 @@ public class SeckillActivityServiceImpl implements SeckillActivityService { |
| 325 | 324 | } |
| 326 | 325 | |
| 327 | 326 | @Override |
| 328 | - public List<SeckillActivityDO> getSeckillActivityBySpuIdsAndStatusAndDateTimeLt(Collection<Long> spuIds, Integer status, LocalDateTime dateTime) { | |
| 329 | - // 1.查询出指定 spuId 的 spu 参加的活动最接近现在的一条记录。多个的话,一个 spuId 对应一个最近的活动编号 | |
| 330 | - List<Map<String, Object>> spuIdAndActivityIdMaps = seckillActivityMapper.selectSpuIdAndActivityIdMapsBySpuIdsAndStatus(spuIds, status); | |
| 331 | - if (CollUtil.isEmpty(spuIdAndActivityIdMaps)) { | |
| 332 | - return Collections.emptyList(); | |
| 333 | - } | |
| 334 | - // 2.查询活动详情 | |
| 335 | - return seckillActivityMapper.selectListByIdsAndDateTimeLt( | |
| 336 | - convertSet(spuIdAndActivityIdMaps, map -> MapUtil.getLong(map, "activityId")), dateTime); | |
| 327 | + public SeckillActivityDO getMatchSeckillActivityBySpuId(Long spuId) { | |
| 328 | + return seckillActivityMapper.selectBySpuIdAndStatusAndNow(spuId, CommonStatusEnum.ENABLE.getStatus()); | |
| 337 | 329 | } |
| 338 | 330 | |
| 339 | 331 | @Override |
| 340 | 332 | public List<SeckillActivityDO> getSeckillActivityListByIds(Collection<Long> ids) { |
| 341 | - return List.of(); | |
| 333 | + return seckillActivityMapper.selectBatchIds(ids); | |
| 342 | 334 | } |
| 343 | 335 | |
| 344 | 336 | } | ... | ... |