diff --git a/src/main/java/com/bao/dating/controller/UserController.java b/src/main/java/com/bao/dating/controller/UserController.java index 8ef7bd6..7d65e65 100644 --- a/src/main/java/com/bao/dating/controller/UserController.java +++ b/src/main/java/com/bao/dating/controller/UserController.java @@ -6,7 +6,6 @@ import com.bao.dating.common.ResultCode; import com.bao.dating.context.UserContext; import com.bao.dating.pojo.dto.UserInfoUpdateDTO; 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 com.bao.dating.service.UserService; @@ -131,7 +130,7 @@ public class UserController { } @GetMapping("/nearby") - public Result> nearby( @RequestParam(defaultValue = "5") double distance){ + public Result> nearby(@RequestParam(defaultValue = "5") double distance){ // 获取当前线程的用户 ID Long userId = UserContext.getUserId(); if (userId == null) { @@ -158,10 +157,10 @@ public class UserController { longitude = (longitude != null) ? longitude : 0.0; // 查询附近用户 - List nearbyUsers = userService.findNearbyUsers(latitude, longitude, distance); + List nearbyUsers = userService.findNearbyUsers(latitude, longitude, distance); // 返回成功结果 - return Result.success(ResultCode.SUCCESS, "获取附近用户成功", nearbyUsers); + return Result.success(ResultCode.SUCCESS, "查询成功", nearbyUsers); } } diff --git a/src/main/java/com/bao/dating/mapper/CommentsMapper.java b/src/main/java/com/bao/dating/mapper/CommentsMapper.java index 43e6184..7313266 100644 --- a/src/main/java/com/bao/dating/mapper/CommentsMapper.java +++ b/src/main/java/com/bao/dating/mapper/CommentsMapper.java @@ -5,7 +5,7 @@ import com.bao.dating.pojo.entity.Comments; import org.apache.ibatis.annotations.*; import java.util.List; - +@Mapper public interface CommentsMapper { // 添加评论 @Insert("INSERT INTO dating.comments(content, user_id, post_id, created_at) VALUES(#{content}, #{user_id}, #{post_id}, #{created_at})") diff --git a/src/main/java/com/bao/dating/mapper/PostFavoriteMapper.java b/src/main/java/com/bao/dating/mapper/PostFavoriteMapper.java index 88f05e9..fa09316 100644 --- a/src/main/java/com/bao/dating/mapper/PostFavoriteMapper.java +++ b/src/main/java/com/bao/dating/mapper/PostFavoriteMapper.java @@ -7,7 +7,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; @Mapper -public interface PostFavoriteMapper { +public interface PostFavoriteMapper { //查询当前已收藏所有用户 List selectUserIDByPostID(@Param("postId") Long postId); int addPostFavorite(PostFavorite postFavorite); diff --git a/src/main/java/com/bao/dating/mapper/UserMapper.java b/src/main/java/com/bao/dating/mapper/UserMapper.java index 0d9b9b2..f170906 100644 --- a/src/main/java/com/bao/dating/mapper/UserMapper.java +++ b/src/main/java/com/bao/dating/mapper/UserMapper.java @@ -2,6 +2,7 @@ package com.bao.dating.mapper; import com.bao.dating.pojo.dto.UserInfoUpdateDTO; import com.bao.dating.pojo.entity.User; +import com.bao.dating.pojo.vo.UserInfoVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -46,5 +47,5 @@ public interface UserMapper { * @param maxLng 最大经度 * @return 用户列表 */ - List findByLatLngRange( @Param("minLat") double minLat, @Param("maxLat") double maxLat, @Param("minLng") double minLng, @Param("maxLng") double maxLng); + List findByLatLngRange(@Param("minLat") double minLat, @Param("maxLat") double maxLat, @Param("minLng") double minLng, @Param("maxLng") double maxLng); } diff --git a/src/main/java/com/bao/dating/pojo/entity/User.java b/src/main/java/com/bao/dating/pojo/entity/User.java index 9bf9641..482175a 100644 --- a/src/main/java/com/bao/dating/pojo/entity/User.java +++ b/src/main/java/com/bao/dating/pojo/entity/User.java @@ -44,7 +44,7 @@ public class User implements Serializable { private String userPhone; - private Double latitude; // 纬度 + private Double latitude; - private Double longitude; // 经度 + private Double longitude; } diff --git a/src/main/java/com/bao/dating/service/UserService.java b/src/main/java/com/bao/dating/service/UserService.java index bb12eae..0d1d1d7 100644 --- a/src/main/java/com/bao/dating/service/UserService.java +++ b/src/main/java/com/bao/dating/service/UserService.java @@ -69,5 +69,5 @@ public interface UserService { * @param radiusKm 半径 km * @return 用户列表 */ - List findNearbyUsers(double lat,double lng,double radiusKm); + List findNearbyUsers(double lat,double lng,double radiusKm); } 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 3f89fb6..6da9fb2 100644 --- a/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java +++ b/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java @@ -376,7 +376,7 @@ public class UserServiceImpl implements UserService { } @Override - public List findNearbyUsers(double lat, double lng, double radiusKm) { + public List findNearbyUsers(double lat, double lng, double radiusKm) { //先用经纬度范围筛选(矩形框,提高性能) double delta = radiusKm / 111.0; // 1° ≈ 111km double minLat = lat - delta;// 最小纬度 @@ -388,11 +388,11 @@ public class UserServiceImpl implements UserService { System.out.println("Min Latitude: " + minLat + ", Max Latitude: " + maxLat); System.out.println("Min Longitude: " + minLng + ", Max Longitude: " + maxLng); - List byLatLngRange = userMapper.findByLatLngRange(minLat, maxLat, minLng, maxLng); + List byLatLngRange = userMapper.findByLatLngRange(minLat, maxLat, minLng, maxLng); //精确计算距离,筛选在半径内的用户 - List result = new ArrayList<>(); - for (User u:byLatLngRange){ + List result = new ArrayList<>(); + for (UserInfoVO u:byLatLngRange){ // 检查用户是否有经纬度信息 if (u.getLatitude() != null && u.getLongitude() != null) { double distance = DistanceUtil.calculate(lat, lng, u.getLatitude(), u.getLongitude()); diff --git a/src/main/resources/com/bao/dating/mapper/UserMapper.xml b/src/main/resources/com/bao/dating/mapper/UserMapper.xml index f49dfb4..6019dcd 100644 --- a/src/main/resources/com/bao/dating/mapper/UserMapper.xml +++ b/src/main/resources/com/bao/dating/mapper/UserMapper.xml @@ -5,6 +5,22 @@ + + + + + + + + + + + + + + + + select * from dating.user where user_phone =#{phone} - + SELECT + user_id, + user_name, + nickname, + avatar_url, + background_url, + gender, + birthday, + hobbies, + signature, + created_at, + updated_at, + user_latitude, + user_longitude + FROM user WHERE user_latitude BETWEEN #{minLat} AND #{maxLat} AND user_longitude BETWEEN #{minLng} AND #{maxLng} \ No newline at end of file