فهرست منبع

红娘列表和活动列表八哥

caojp 2 ماه پیش
والد
کامیت
21cb06869b

+ 4 - 1
service/homePage/src/main/java/com/zhentao/constant/RedisKeyConstants.java

@@ -54,12 +54,15 @@ public class RedisKeyConstants {
      * 构建红娘列表缓存Key
      */
     public static String buildMatchmakerListKey(Integer type, Integer level, Integer provinceId, 
-                                                 Integer cityId, Integer pageNum, Integer pageSize) {
+                                                 Integer cityId, String keyword, Integer pageNum, Integer pageSize) {
+        // 将keyword转换为缓存键的一部分,如果为空则使用"all"
+        String keywordPart = (keyword != null && !keyword.trim().isEmpty()) ? keyword.trim() : "all";
         return MATCHMAKER_LIST + 
                (type != null ? type : "all") + ":" +
                (level != null ? level : "all") + ":" +
                (provinceId != null ? provinceId : "all") + ":" +
                (cityId != null ? cityId : "all") + ":" +
+               keywordPart + ":" +
                pageNum + ":" + pageSize;
     }
     

+ 31 - 3
service/homePage/src/main/java/com/zhentao/controller/ActivityController.java

@@ -1,5 +1,6 @@
 package com.zhentao.controller;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zhentao.common.Result;
 import com.zhentao.entity.Activity;
 import com.zhentao.service.ActivityService;
@@ -52,15 +53,42 @@ public class ActivityController {
      * 
      * @param type 活动类型(可选,支持数字类型或 "hot" 表示热门活动)
      * @param status 活动状态(可选)
-     * @param limit 限制数量(可选)
+     * @param keyword 搜索关键词(可选,用于活动名称模糊查询)
+     * @param page 页码(可选,用于分页)
+     * @param pageSize 每页大小(可选,用于分页)
+     * @param limit 限制数量(可选,当使用分页时此参数无效)
      * @return 活动列表
      */
     @GetMapping("/list")
-    public Result<List<Activity>> getActivityList(
+    public Result<?> getActivityList(
             @RequestParam(required = false) String type,
             @RequestParam(required = false) Integer status,
+            @RequestParam(required = false) String keyword,
+            @RequestParam(required = false) Integer page,
+            @RequestParam(required = false) Integer pageSize,
             @RequestParam(required = false) Integer limit) {
         try {
+            // 如果提供了分页参数,使用分页查询
+            if (page != null && pageSize != null && page > 0 && pageSize > 0) {
+                Integer typeInt = null;
+                if (type != null && !type.isEmpty() && !"hot".equalsIgnoreCase(type)) {
+                    try {
+                        typeInt = Integer.parseInt(type);
+                    } catch (NumberFormatException e) {
+                        // 忽略无法转换的类型
+                    }
+                }
+                Page<Activity> pageResult = activityService.getActivityPage(typeInt, status, keyword, page, pageSize);
+                // 将分页结果转换为前端需要的格式
+                Map<String, Object> data = new HashMap<>();
+                data.put("list", pageResult.getRecords());
+                data.put("total", pageResult.getTotal());
+                data.put("page", page);
+                data.put("pageSize", pageSize);
+                return Result.success(data);
+            }
+            
+            // 否则使用原来的逻辑(不分页)
             List<Activity> activityList;
             
             // 如果是热门活动
@@ -76,7 +104,7 @@ public class ActivityController {
                         // 忽略无法转换的类型
                     }
                 }
-                activityList = activityService.getActivityList(typeInt, status, limit);
+                activityList = activityService.getActivityList(typeInt, status, keyword, limit);
             }
             
             return Result.success(activityList);

+ 15 - 1
service/homePage/src/main/java/com/zhentao/service/ActivityService.java

@@ -1,5 +1,6 @@
 package com.zhentao.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zhentao.entity.Activity;
 import java.util.List;
 
@@ -13,10 +14,23 @@ public interface ActivityService {
      * 
      * @param type 活动类型(null表示全部)
      * @param status 活动状态(null表示全部)
+     * @param keyword 搜索关键词(可选,用于活动名称模糊查询)
      * @param limit 限制数量(可选)
      * @return 活动列表
      */
-    List<Activity> getActivityList(Integer type, Integer status, Integer limit);
+    List<Activity> getActivityList(Integer type, Integer status, String keyword, Integer limit);
+    
+    /**
+     * 分页获取活动列表
+     * 
+     * @param type 活动类型(null表示全部)
+     * @param status 活动状态(null表示全部)
+     * @param keyword 搜索关键词(可选,用于活动名称模糊查询)
+     * @param pageNum 页码
+     * @param pageSize 每页大小
+     * @return 分页结果
+     */
+    Page<Activity> getActivityPage(Integer type, Integer status, String keyword, Integer pageNum, Integer pageSize);
     
     /**
      * 获取活动详情

+ 39 - 1
service/homePage/src/main/java/com/zhentao/service/impl/ActivityServiceImpl.java

@@ -2,6 +2,7 @@ package com.zhentao.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zhentao.entity.Activity;
 import com.zhentao.entity.ActivityRegistration;
 import com.zhentao.mapper.ActivityMapper;
@@ -30,7 +31,7 @@ public class ActivityServiceImpl implements ActivityService {
      * 获取活动列表
      */
     @Override
-    public List<Activity> getActivityList(Integer type, Integer status, Integer limit) {
+    public List<Activity> getActivityList(Integer type, Integer status, String keyword, Integer limit) {
         QueryWrapper<Activity> queryWrapper = new QueryWrapper<>();
         
         // 只查询未删除的活动
@@ -46,6 +47,11 @@ public class ActivityServiceImpl implements ActivityService {
             queryWrapper.eq("status", status);
         }
         
+        // 关键词模糊查询(活动名称)
+        if (keyword != null && !keyword.trim().isEmpty()) {
+            queryWrapper.like("name", keyword.trim());
+        }
+        
         // 按开始时间降序排序
         queryWrapper.orderByDesc("start_time");
         
@@ -57,6 +63,38 @@ public class ActivityServiceImpl implements ActivityService {
         return activityMapper.selectList(queryWrapper);
     }
     
+    /**
+     * 分页获取活动列表
+     */
+    @Override
+    public Page<Activity> getActivityPage(Integer type, Integer status, String keyword, Integer pageNum, Integer pageSize) {
+        Page<Activity> page = new Page<>(pageNum, pageSize);
+        QueryWrapper<Activity> queryWrapper = new QueryWrapper<>();
+        
+        // 只查询未删除的活动
+        queryWrapper.eq("is_deleted", 0);
+        
+        // 按类型筛选
+        if (type != null) {
+            queryWrapper.eq("type", type);
+        }
+        
+        // 按状态筛选
+        if (status != null) {
+            queryWrapper.eq("status", status);
+        }
+        
+        // 关键词模糊查询(活动名称)
+        if (keyword != null && !keyword.trim().isEmpty()) {
+            queryWrapper.like("name", keyword.trim());
+        }
+        
+        // 按开始时间降序排序
+        queryWrapper.orderByDesc("start_time");
+        
+        return activityMapper.selectPage(page, queryWrapper);
+    }
+    
     /**
      * 获取活动详情
      */

+ 2 - 1
service/homePage/src/main/java/com/zhentao/service/impl/MatchmakerServiceImpl.java

@@ -39,12 +39,13 @@ public class MatchmakerServiceImpl extends ServiceImpl<MatchmakerMapper, Matchma
     @Override
     @SuppressWarnings("unchecked")
     public Page<MatchmakerVO> getMatchmakerPage(MatchmakerQueryDTO queryDTO) {
-        // 1. 构建缓存Key
+        // 1. 构建缓存Key(包含keyword参数)
         String cacheKey = RedisKeyConstants.buildMatchmakerListKey(
                 queryDTO.getMatchmakerType(),
                 queryDTO.getLevel(),
                 queryDTO.getProvinceId(),
                 queryDTO.getCityId(),
+                queryDTO.getKeyword(),
                 queryDTO.getPageNum(),
                 queryDTO.getPageSize()
         );