Explorar el Código

feat(second): 添加商品发布时间范围筛选功能

- 在 SecondGoodsInfoMapper.xml 中新增时间范围条件判断逻辑
- 更新 SecondRecommendController 接收 timeRange 参数并传递给服务层
- 修改 SecondRecommendMapper 接口方法增加 timeRange 参数
- 扩展 SecondRecommendService 接口和实现类支持时间范围筛选
- 添加时间范围参数到数据库查询方法中
- 支持 12小时、24小时、48小时、72小时内的商品筛选选项
fcw hace 19 horas
padre
commit
4113ddb8e9

+ 1 - 1
alien-entity/src/main/java/shop/alien/mapper/second/SecondRecommendMapper.java

@@ -21,7 +21,7 @@ public interface SecondRecommendMapper extends BaseMapper<SecondGoodsRecommendVo
 
     IPage<SecondGoodsRecommendVo> querySecondConcernByPage(IPage<SecondGoodsRecommendVo> page, @Param("userId") Integer userId, @Param("phoneId") String phoneId, @Param("position") String position);
 
-    IPage<SecondGoodsRecommendVo> querySecondNewGoodsByPage(IPage<SecondGoodsRecommendVo> page,@Param("userId") String userId, @Param("phoneId") String phoneId, @Param("position") String position, @Param("radiusKm") String radiusKm);
+    IPage<SecondGoodsRecommendVo> querySecondNewGoodsByPage(IPage<SecondGoodsRecommendVo> page,@Param("userId") String userId, @Param("phoneId") String phoneId, @Param("position") String position, @Param("radiusKm") String radiusKm, @Param("timeRange") Integer timeRange);
 
     List<SecondCommentVo> querySecondCommentInfo(@Param("ids") List<Integer> ids);
 

+ 14 - 0
alien-entity/src/main/resources/mapper/second/SecondGoodsInfoMapper.xml

@@ -218,6 +218,20 @@
                 and not exists (select 1 from second_shield s where s.user_id = #{userId} and s.shield_type = 1 and s.shield_id = g.id and s.delete_flag = 0)
                 and g.goods_status = 3
                 and g.position != '' and g.position is not null
+                <choose>
+                    <when test="timeRange == 1">
+                        and g.release_time &gt;= DATE_SUB(NOW(), INTERVAL 12 HOUR)
+                    </when>
+                    <when test="timeRange == 2">
+                        and g.release_time &gt;= DATE_SUB(NOW(), INTERVAL 24 HOUR)
+                    </when>
+                    <when test="timeRange == 3">
+                        and g.release_time &gt;= DATE_SUB(NOW(), INTERVAL 48 HOUR)
+                    </when>
+                    <when test="timeRange == 4">
+                        and g.release_time &gt;= DATE_SUB(NOW(), INTERVAL 72 HOUR)
+                    </when>
+                </choose>
             order by g.release_time desc
         ) a where a.dist &lt; #{radiusKm}
     </select>

+ 4 - 3
alien-second/src/main/java/shop/alien/second/controller/SecondRecommendController.java

@@ -58,10 +58,11 @@ public class SecondRecommendController {
             @RequestParam(value = "pageSize", required = false) Integer pageSize,
             @RequestParam(value = "longitude", required = false) String longitude,
             @RequestParam(value = "latitude", required = false) String latitude,
-            @RequestParam(value = "radiusKm", required = false) String radiusKm) throws Exception {
-        log.info("LifeCollectController.cancelCollect?pageNum={},pageSize={},longitude={},latitude={}", pageNum, pageSize, longitude, latitude);
+            @RequestParam(value = "radiusKm", required = false) String radiusKm,
+            @RequestParam(value = "timeRange", required = false) Integer timeRange) throws Exception {
+        log.info("LifeCollectController.cancelCollect?pageNum={},pageSize={},longitude={},latitude={},timeRange={}", pageNum, pageSize, longitude, latitude, timeRange);
         IPage<SecondGoodsRecommendVo> page = new Page<>(pageNum, pageSize);
-        IPage<SecondGoodsRecommendVo> result = service.querySecondNewGoodsByPage(page, longitude + "," + latitude, radiusKm);
+        IPage<SecondGoodsRecommendVo> result = service.querySecondNewGoodsByPage(page, longitude + "," + latitude, radiusKm, timeRange);
         return R.data(result, "查询成功");
     }
 

+ 2 - 1
alien-second/src/main/java/shop/alien/second/service/SecondRecommendService.java

@@ -32,9 +32,10 @@ public interface SecondRecommendService extends IService<SecondGoodsRecommendVo>
      * 查询新品信息
      * @param page 分页信息
      * @param position 经纬度
+     * @param timeRange 发布时间范围:1-12小时内,2-24小时内,3-48小时内,4-72小时内
      * @return 新品商品信息
      */
-    IPage<SecondGoodsRecommendVo> querySecondNewGoodsByPage(IPage<SecondGoodsRecommendVo> page, String position, String radiusKm) throws Exception;
+    IPage<SecondGoodsRecommendVo> querySecondNewGoodsByPage(IPage<SecondGoodsRecommendVo> page, String position, String radiusKm, Integer timeRange) throws Exception;
 
     /**
      * 查询商品详情信息

+ 2 - 2
alien-second/src/main/java/shop/alien/second/service/impl/SecondRecommendServiceImpl.java

@@ -135,7 +135,7 @@ public class SecondRecommendServiceImpl extends ServiceImpl<SecondRecommendMappe
      * @return 关注列表
      */
     public IPage<SecondGoodsRecommendVo> querySecondNewGoodsByPage(
-            IPage<SecondGoodsRecommendVo> page, String position, String radiusKm) throws Exception {
+            IPage<SecondGoodsRecommendVo> page, String position, String radiusKm, Integer timeRange) throws Exception {
         try {
             JSONObject data = JwtUtil.getCurrentUserInfo();
             String phoneId = null;
@@ -147,7 +147,7 @@ public class SecondRecommendServiceImpl extends ServiceImpl<SecondRecommendMappe
             if (StringUtil.isBlank(phoneId)) {
                 return null;
             }
-            IPage<SecondGoodsRecommendVo> list = mapper.querySecondNewGoodsByPage(page, userId,"user_" + phoneId, position, radiusKm);
+            IPage<SecondGoodsRecommendVo> list = mapper.querySecondNewGoodsByPage(page, userId,"user_" + phoneId, position, radiusKm, timeRange);
             List<Integer> idList = list.getRecords().stream() // 创建流
                     .map(obj -> obj.getId())   // 提取每个元素的 ID
                     .collect(Collectors.toList());