diff --git a/src/main/java/com/bao/dating/context/UserContext.java b/src/main/java/com/bao/dating/context/UserContext.java index 3d840a4..94d307f 100644 --- a/src/main/java/com/bao/dating/context/UserContext.java +++ b/src/main/java/com/bao/dating/context/UserContext.java @@ -8,6 +8,8 @@ public class UserContext { private static final ThreadLocal USER_HOLDER = new ThreadLocal<>(); + private static final ThreadLocal TOKEN_HOLDER = new ThreadLocal<>(); + /** * 设置当前线程的用户ID * @param userId 用户ID @@ -24,12 +26,27 @@ public class UserContext { return USER_HOLDER.get(); } + /** + * 设置当前线程的token + * @param token 要设置的token字符串 + */ + public static void setToken(String token) { + TOKEN_HOLDER.set(token); + } + /** + * 获取当前线程的token + * @return 当前token,如果未设置则返回null + */ + public static String getToken() { + return TOKEN_HOLDER.get(); + } /** * 清除当前线程的用户ID和token */ public static void clear() { USER_HOLDER.remove(); + TOKEN_HOLDER.remove(); } } diff --git a/src/main/java/com/bao/dating/controller/UserController.java b/src/main/java/com/bao/dating/controller/UserController.java index 5da9084..e42b02e 100644 --- a/src/main/java/com/bao/dating/controller/UserController.java +++ b/src/main/java/com/bao/dating/controller/UserController.java @@ -7,6 +7,7 @@ import com.bao.dating.pojo.dto.UserDeviceDTO; import com.bao.dating.pojo.dto.UserInfoDTO; import com.bao.dating.pojo.dto.UserLoginDTO; import com.bao.dating.pojo.dto.UserLoginWithDeviceDTO; +import com.bao.dating.pojo.entity.User; import com.bao.dating.pojo.vo.UserDeviceVO; import com.bao.dating.pojo.vo.UserInfoVO; import com.bao.dating.pojo.vo.UserLoginVO; @@ -242,4 +243,19 @@ public class UserController { } return ip; } + + /** + * 根据用户名/爱好标签搜索用户 + * + * @param userName 用户名(模糊匹配) + * @param hobbies 爱好标签(精确匹配单个标签) + * @return 符合条件的用户列表 + */ + @GetMapping("/api/users/search") + public List searchUsers( + @RequestParam(required = false) String userName, + @RequestParam(required = false) String hobbies) { + // 调用Service层的搜索方法 + return userService.searchUsers(userName, hobbies); + } } diff --git a/src/main/java/com/bao/dating/mapper/UserMapper.java b/src/main/java/com/bao/dating/mapper/UserMapper.java index 29b83aa..f2be102 100644 --- a/src/main/java/com/bao/dating/mapper/UserMapper.java +++ b/src/main/java/com/bao/dating/mapper/UserMapper.java @@ -68,4 +68,13 @@ public interface UserMapper { * @return 用户列表 */ List findByLatLngRange(@Param("minLat") double minLat, @Param("maxLat") double maxLat, @Param("minLng") double minLng, @Param("maxLng") double maxLng); + + + /** + * 搜索用户 + * @param userName 用户名 + * @param hobbyTag 爱好标签 + * @return 用户列表 + */ + List searchUsers(@Param("userName") String userName, @Param("hobbies") String hobbyTag); } diff --git a/src/main/java/com/bao/dating/service/UserService.java b/src/main/java/com/bao/dating/service/UserService.java index ab23da1..ac10ddb 100644 --- a/src/main/java/com/bao/dating/service/UserService.java +++ b/src/main/java/com/bao/dating/service/UserService.java @@ -2,6 +2,7 @@ package com.bao.dating.service; import com.bao.dating.pojo.dto.UserInfoDTO; import com.bao.dating.pojo.dto.UserLoginDTO; +import com.bao.dating.pojo.entity.User; import com.bao.dating.pojo.vo.UserInfoVO; import com.bao.dating.pojo.vo.UserLoginVO; import org.springframework.web.multipart.MultipartFile; @@ -99,4 +100,12 @@ public interface UserService { * @return 是否在线 */ boolean isUserOnline(Long userId); + + /** + * 搜索用户 + * @param userName 用户名(模糊) + * @param hobbies 爱好标签(精确) + * @return 用户列表 + */ + List searchUsers(String userName, String hobbies); } diff --git a/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java b/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java index 3f3b9ec..f996b14 100644 --- a/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java +++ b/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java @@ -43,6 +43,7 @@ import java.util.concurrent.TimeUnit; public class UserServiceImpl implements UserService { + @Autowired private SmsUtil smsUtil; @@ -517,4 +518,11 @@ public class UserServiceImpl implements UserService { return Boolean.TRUE.equals(online); } + + + @Override + public List searchUsers(String userName, String hobbies) { + // 调用Mapper层的查询方法 + return userMapper.searchUsers(userName, hobbies); + } } \ No newline at end of file diff --git a/src/main/resources/com/bao/dating/mapper/UserMapper.xml b/src/main/resources/com/bao/dating/mapper/UserMapper.xml index 0f296e0..c3deb6b 100644 --- a/src/main/resources/com/bao/dating/mapper/UserMapper.xml +++ b/src/main/resources/com/bao/dating/mapper/UserMapper.xml @@ -130,5 +130,17 @@ FROM user WHERE user_latitude BETWEEN #{minLat} AND #{maxLat} AND user_longitude BETWEEN #{minLng} AND #{maxLng} - + + \ No newline at end of file