Commit cd887511d8d36878cca0ae98eca548fdda7ebae3

Authored by puhui999
1 parent e09f0747

营销活动:修正 selectListBySpuIdsAndStatus 查询 sql,添加接口测试

yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/activity/AppActivityController.http 0 → 100644
  1 +### /promotion/activity/list-by-spu-ids 获得多个商品,近期参与的每个活动
  2 +GET {{appApi}}/promotion/activity/list-by-spu-ids?spuIds=222&spuIds=633
  3 +Authorization: Bearer {{appToken}}
  4 +Content-Type: application/json
  5 +tenant-id: {{appTenentId}}
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/bargain/BargainActivityMapper.java
... ... @@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.activity.Ba
8 8 import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainActivityDO;
9 9 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
10 10 import org.apache.ibatis.annotations.Mapper;
  11 +import org.apache.ibatis.annotations.Param;
11 12 import org.apache.ibatis.annotations.Select;
12 13  
13 14 import java.time.LocalDateTime;
... ... @@ -87,6 +88,7 @@ public interface BargainActivityMapper extends BaseMapperX<BargainActivityDO> {
87 88  
88 89 // TODO @puhui999:一个商品,在统一时间,不会参与多个活动;so 是不是不用 inner join 哈?
89 90 // PS:如果可以参与多个,其实可以这样写 select * from promotion_bargain_activity group by spu_id ORDER BY create_time DESC;通过 group 来过滤
  91 +
90 92 /**
91 93 * 获取指定 spu 编号最近参加的活动,每个 spuId 只返回一条记录
92 94 *
... ... @@ -94,16 +96,20 @@ public interface BargainActivityMapper extends BaseMapperX<BargainActivityDO> {
94 96 * @param status 状态
95 97 * @return 砍价活动列表
96 98 */
97   - @Select("SELECT p1.* " +
  99 + @Select("<script> " + "SELECT p1.* " +
98 100 "FROM promotion_bargain_activity p1 " +
99 101 "INNER JOIN ( " +
100   - " SELECT spu_id, MAX(DISTINCT(create_time)) AS max_create_time " +
  102 + " SELECT spu_id, MAX(DISTINCT create_time) AS max_create_time " +
101 103 " FROM promotion_bargain_activity " +
102   - " WHERE spu_id IN #{spuIds} " +
  104 + " WHERE spu_id IN " +
  105 + "<foreach collection='spuIds' item='spuId' open='(' separator=',' close=')'>" +
  106 + " #{spuId}" +
  107 + "</foreach>" +
103 108 " GROUP BY spu_id " +
104 109 ") p2 " +
105 110 "ON p1.spu_id = p2.spu_id AND p1.create_time = p2.max_create_time AND p1.status = #{status} " +
106   - "ORDER BY p1.create_time DESC;")
107   - List<BargainActivityDO> selectListBySpuIds(Collection<Long> spuIds, Integer status);
  111 + "ORDER BY p1.create_time DESC;" +
  112 + " </script>")
  113 + List<BargainActivityDO> selectListBySpuIdsAndStatus(@Param("spuIds") Collection<Long> spuIds, @Param("status") Integer status);
108 114  
109 115 }
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/combination/CombinationActivityMapper.java
... ... @@ -44,6 +44,7 @@ public interface CombinationActivityMapper extends BaseMapperX&lt;CombinationActivi
44 44 }
45 45  
46 46 // TODO @puhui999:类似 BargainActivityMapper
  47 +
47 48 /**
48 49 * 获取指定 spu 编号最近参加的活动,每个 spuId 只返回一条记录
49 50 *
... ... @@ -51,16 +52,21 @@ public interface CombinationActivityMapper extends BaseMapperX&lt;CombinationActivi
51 52 * @param status 状态
52 53 * @return 拼团活动列表
53 54 */
54   - @Select("SELECT p1.* " +
  55 + @Select("<script> " + "SELECT p1.* " +
55 56 "FROM promotion_combination_activity p1 " +
56 57 "INNER JOIN ( " +
57   - " SELECT spu_id, MAX(DISTINCT(create_time)) AS max_create_time " +
  58 + " SELECT spu_id, MAX(DISTINCT create_time) AS max_create_time " +
58 59 " FROM promotion_combination_activity " +
59   - " WHERE spu_id IN #{spuIds} " +
  60 + " WHERE spu_id IN " +
  61 + "<foreach collection='spuIds' item='spuId' open='(' separator=',' close=')'>" +
  62 + " #{spuId}" +
  63 + "</foreach>" +
60 64 " GROUP BY spu_id " +
61 65 ") p2 " +
62 66 "ON p1.spu_id = p2.spu_id AND p1.create_time = p2.max_create_time AND p1.status = #{status} " +
63   - "ORDER BY p1.create_time DESC;")
64   - List<CombinationActivityDO> selectListBySpuIds(@Param("spuIds") Collection<Long> spuIds, @Param("status") Integer status);
  67 + "ORDER BY p1.create_time DESC;" +
  68 + " </script>")
  69 + List<CombinationActivityDO> selectListBySpuIdsAndStatus(@Param("spuIds") Collection<Long> spuIds, @Param("status") Integer status);
  70 +
65 71  
66 72 }
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/seckill/seckillactivity/SeckillActivityMapper.java
... ... @@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.promotion.controller.app.seckill.vo.activity.AppS
9 9 import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillActivityDO;
10 10 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
11 11 import org.apache.ibatis.annotations.Mapper;
  12 +import org.apache.ibatis.annotations.Param;
12 13 import org.apache.ibatis.annotations.Select;
13 14  
14 15 import java.util.Collection;
... ... @@ -59,6 +60,7 @@ public interface SeckillActivityMapper extends BaseMapperX&lt;SeckillActivityDO&gt; {
59 60 }
60 61  
61 62 // TODO @puhui999:类似 BargainActivityMapper
  63 +
62 64 /**
63 65 * 获取指定 spu 编号最近参加的活动,每个 spuId 只返回一条记录
64 66 *
... ... @@ -66,16 +68,20 @@ public interface SeckillActivityMapper extends BaseMapperX&lt;SeckillActivityDO&gt; {
66 68 * @param status 状态
67 69 * @return 秒杀活动列表
68 70 */
69   - @Select("SELECT p1.* " +
  71 + @Select("<script> " + "SELECT p1.* " +
70 72 "FROM promotion_seckill_activity p1 " +
71 73 "INNER JOIN ( " +
72   - " SELECT spu_id, MAX(DISTINCT(create_time)) AS max_create_time " +
  74 + " SELECT spu_id, MAX(DISTINCT create_time) AS max_create_time " +
73 75 " FROM promotion_seckill_activity " +
74   - " WHERE spu_id IN #{spuIds} " +
  76 + " WHERE spu_id IN " +
  77 + "<foreach collection='spuIds' item='spuId' open='(' separator=',' close=')'>" +
  78 + " #{spuId}" +
  79 + "</foreach>" +
75 80 " GROUP BY spu_id " +
76 81 ") p2 " +
77 82 "ON p1.spu_id = p2.spu_id AND p1.create_time = p2.max_create_time AND p1.status = #{status} " +
78   - "ORDER BY p1.create_time DESC;")
79   - List<SeckillActivityDO> selectListBySpuIds(Collection<Long> spuIds, Integer status);
  83 + "ORDER BY p1.create_time DESC;" +
  84 + " </script>")
  85 + List<SeckillActivityDO> selectListBySpuIdsAndStatus(@Param("spuIds") Collection<Long> spuIds, @Param("status") Integer status);
80 86  
81 87 }
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/bargain/BargainActivityServiceImpl.java
... ... @@ -178,7 +178,7 @@ public class BargainActivityServiceImpl implements BargainActivityService {
178 178  
179 179 @Override
180 180 public List<BargainActivityDO> getBargainActivityBySpuIdsAndStatus(Collection<Long> spuIds, Integer status) {
181   - return bargainActivityMapper.selectListBySpuIds(spuIds, status);
  181 + return bargainActivityMapper.selectListBySpuIdsAndStatus(spuIds, status);
182 182 }
183 183  
184 184 }
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationActivityServiceImpl.java
... ... @@ -228,7 +228,7 @@ public class CombinationActivityServiceImpl implements CombinationActivityServic
228 228  
229 229 @Override
230 230 public List<CombinationActivityDO> getCombinationActivityBySpuIdsAndStatus(Collection<Long> spuIds, Integer status) {
231   - return combinationActivityMapper.selectListBySpuIds(spuIds, status);
  231 + return combinationActivityMapper.selectListBySpuIdsAndStatus(spuIds, status);
232 232 }
233 233  
234 234 }
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/seckill/SeckillActivityServiceImpl.java
... ... @@ -312,7 +312,7 @@ public class SeckillActivityServiceImpl implements SeckillActivityService {
312 312  
313 313 @Override
314 314 public List<SeckillActivityDO> getSeckillActivityBySpuIdsAndStatus(Collection<Long> spuIds, Integer status) {
315   - return seckillActivityMapper.selectListBySpuIds(spuIds, status);
  315 + return seckillActivityMapper.selectListBySpuIdsAndStatus(spuIds, status);
316 316 }
317 317  
318 318 }
... ...