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,6 +8,7 @@ import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.activity.Ba
8 import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainActivityDO; 8 import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainActivityDO;
9 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; 9 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
10 import org.apache.ibatis.annotations.Mapper; 10 import org.apache.ibatis.annotations.Mapper;
  11 +import org.apache.ibatis.annotations.Param;
11 import org.apache.ibatis.annotations.Select; 12 import org.apache.ibatis.annotations.Select;
12 13
13 import java.time.LocalDateTime; 14 import java.time.LocalDateTime;
@@ -87,6 +88,7 @@ public interface BargainActivityMapper extends BaseMapperX<BargainActivityDO> { @@ -87,6 +88,7 @@ public interface BargainActivityMapper extends BaseMapperX<BargainActivityDO> {
87 88
88 // TODO @puhui999:一个商品,在统一时间,不会参与多个活动;so 是不是不用 inner join 哈? 89 // TODO @puhui999:一个商品,在统一时间,不会参与多个活动;so 是不是不用 inner join 哈?
89 // PS:如果可以参与多个,其实可以这样写 select * from promotion_bargain_activity group by spu_id ORDER BY create_time DESC;通过 group 来过滤 90 // PS:如果可以参与多个,其实可以这样写 select * from promotion_bargain_activity group by spu_id ORDER BY create_time DESC;通过 group 来过滤
  91 +
90 /** 92 /**
91 * 获取指定 spu 编号最近参加的活动,每个 spuId 只返回一条记录 93 * 获取指定 spu 编号最近参加的活动,每个 spuId 只返回一条记录
92 * 94 *
@@ -94,16 +96,20 @@ public interface BargainActivityMapper extends BaseMapperX<BargainActivityDO> { @@ -94,16 +96,20 @@ public interface BargainActivityMapper extends BaseMapperX<BargainActivityDO> {
94 * @param status 状态 96 * @param status 状态
95 * @return 砍价活动列表 97 * @return 砍价活动列表
96 */ 98 */
97 - @Select("SELECT p1.* " + 99 + @Select("<script> " + "SELECT p1.* " +
98 "FROM promotion_bargain_activity p1 " + 100 "FROM promotion_bargain_activity p1 " +
99 "INNER JOIN ( " + 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 " FROM promotion_bargain_activity " + 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 " GROUP BY spu_id " + 108 " GROUP BY spu_id " +
104 ") p2 " + 109 ") p2 " +
105 "ON p1.spu_id = p2.spu_id AND p1.create_time = p2.max_create_time AND p1.status = #{status} " + 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,6 +44,7 @@ public interface CombinationActivityMapper extends BaseMapperX&lt;CombinationActivi
44 } 44 }
45 45
46 // TODO @puhui999:类似 BargainActivityMapper 46 // TODO @puhui999:类似 BargainActivityMapper
  47 +
47 /** 48 /**
48 * 获取指定 spu 编号最近参加的活动,每个 spuId 只返回一条记录 49 * 获取指定 spu 编号最近参加的活动,每个 spuId 只返回一条记录
49 * 50 *
@@ -51,16 +52,21 @@ public interface CombinationActivityMapper extends BaseMapperX&lt;CombinationActivi @@ -51,16 +52,21 @@ public interface CombinationActivityMapper extends BaseMapperX&lt;CombinationActivi
51 * @param status 状态 52 * @param status 状态
52 * @return 拼团活动列表 53 * @return 拼团活动列表
53 */ 54 */
54 - @Select("SELECT p1.* " + 55 + @Select("<script> " + "SELECT p1.* " +
55 "FROM promotion_combination_activity p1 " + 56 "FROM promotion_combination_activity p1 " +
56 "INNER JOIN ( " + 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 " FROM promotion_combination_activity " + 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 " GROUP BY spu_id " + 64 " GROUP BY spu_id " +
61 ") p2 " + 65 ") p2 " +
62 "ON p1.spu_id = p2.spu_id AND p1.create_time = p2.max_create_time AND p1.status = #{status} " + 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,6 +9,7 @@ import cn.iocoder.yudao.module.promotion.controller.app.seckill.vo.activity.AppS
9 import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillActivityDO; 9 import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillActivityDO;
10 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; 10 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
11 import org.apache.ibatis.annotations.Mapper; 11 import org.apache.ibatis.annotations.Mapper;
  12 +import org.apache.ibatis.annotations.Param;
12 import org.apache.ibatis.annotations.Select; 13 import org.apache.ibatis.annotations.Select;
13 14
14 import java.util.Collection; 15 import java.util.Collection;
@@ -59,6 +60,7 @@ public interface SeckillActivityMapper extends BaseMapperX&lt;SeckillActivityDO&gt; { @@ -59,6 +60,7 @@ public interface SeckillActivityMapper extends BaseMapperX&lt;SeckillActivityDO&gt; {
59 } 60 }
60 61
61 // TODO @puhui999:类似 BargainActivityMapper 62 // TODO @puhui999:类似 BargainActivityMapper
  63 +
62 /** 64 /**
63 * 获取指定 spu 编号最近参加的活动,每个 spuId 只返回一条记录 65 * 获取指定 spu 编号最近参加的活动,每个 spuId 只返回一条记录
64 * 66 *
@@ -66,16 +68,20 @@ public interface SeckillActivityMapper extends BaseMapperX&lt;SeckillActivityDO&gt; { @@ -66,16 +68,20 @@ public interface SeckillActivityMapper extends BaseMapperX&lt;SeckillActivityDO&gt; {
66 * @param status 状态 68 * @param status 状态
67 * @return 秒杀活动列表 69 * @return 秒杀活动列表
68 */ 70 */
69 - @Select("SELECT p1.* " + 71 + @Select("<script> " + "SELECT p1.* " +
70 "FROM promotion_seckill_activity p1 " + 72 "FROM promotion_seckill_activity p1 " +
71 "INNER JOIN ( " + 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 " FROM promotion_seckill_activity " + 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 " GROUP BY spu_id " + 80 " GROUP BY spu_id " +
76 ") p2 " + 81 ") p2 " +
77 "ON p1.spu_id = p2.spu_id AND p1.create_time = p2.max_create_time AND p1.status = #{status} " + 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,7 +178,7 @@ public class BargainActivityServiceImpl implements BargainActivityService {
178 178
179 @Override 179 @Override
180 public List<BargainActivityDO> getBargainActivityBySpuIdsAndStatus(Collection<Long> spuIds, Integer status) { 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,7 +228,7 @@ public class CombinationActivityServiceImpl implements CombinationActivityServic
228 228
229 @Override 229 @Override
230 public List<CombinationActivityDO> getCombinationActivityBySpuIdsAndStatus(Collection<Long> spuIds, Integer status) { 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,7 +312,7 @@ public class SeckillActivityServiceImpl implements SeckillActivityService {
312 312
313 @Override 313 @Override
314 public List<SeckillActivityDO> getSeckillActivityBySpuIdsAndStatus(Collection<Long> spuIds, Integer status) { 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 }