From 56426cb8b7158d02f7ae81ec26285eda36e27e9f Mon Sep 17 00:00:00 2001 From: choyoungseo20 Date: Sat, 14 Jun 2025 19:26:19 +0900 Subject: [PATCH] =?UTF-8?q?=EB=8F=84=EB=A9=94=EC=9D=B8=20=EC=9E=90?= =?UTF-8?q?=EB=A3=8C=ED=98=95=EC=9D=84=20=EC=88=98=EC=A0=95=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EA=B3=A0,=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=EC=9D=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/RecommendActivityService.java | 2 +- .../algorithm/AdjacencyGraphBuilder.java | 39 ++++++++++++++----- .../silverbridgeX_user/user/domain/User.java | 4 +- 3 files changed, 32 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/example/silverbridgeX_user/RecommendActivity/service/RecommendActivityService.java b/src/main/java/com/example/silverbridgeX_user/RecommendActivity/service/RecommendActivityService.java index bc54eb2..ef47c35 100644 --- a/src/main/java/com/example/silverbridgeX_user/RecommendActivity/service/RecommendActivityService.java +++ b/src/main/java/com/example/silverbridgeX_user/RecommendActivity/service/RecommendActivityService.java @@ -191,7 +191,7 @@ WITH a, count(*) AS freq /* ---------- 2. 인기 랭킹 + 거리 필터 ---------- */ List popularIds = activityRankingRepository.fetchTopByDistance( - (float)(double) user.getLatitude(), (float)(double) user.getLongitude(), 18, resultIds); + Float.parseFloat(user.getLatitude()), Float.parseFloat(user.getLongitude()), 18, resultIds); for (Long id : popularIds) { if (resultIds.size() >= 18) { diff --git a/src/main/java/com/example/silverbridgeX_user/matching/algorithm/AdjacencyGraphBuilder.java b/src/main/java/com/example/silverbridgeX_user/matching/algorithm/AdjacencyGraphBuilder.java index cd43c70..3edcb7a 100644 --- a/src/main/java/com/example/silverbridgeX_user/matching/algorithm/AdjacencyGraphBuilder.java +++ b/src/main/java/com/example/silverbridgeX_user/matching/algorithm/AdjacencyGraphBuilder.java @@ -37,22 +37,41 @@ private static boolean canConnect(MatchRequest a, MatchRequest b) { // String sexB = B.getSex(); // // if (sexA == null || sexB == null) return false; - - Double latA = A.getLatitude(); - Double lonA = A.getLongitude(); - Double latB = B.getLatitude(); - Double lonB = B.getLongitude(); - - if (latA == null || lonA == null || latB == null || lonB == null) return false; - +// +// Double latA = Double.parseDouble(A.getLatitude()); +// Double lonA = Double.parseDouble(A.getLongitude()); +// Double latB = Double.parseDouble(B.getLatitude()); +// Double lonB = Double.parseDouble(B.getLongitude()); +// +// if (latA == null || lonA == null || latB == null || lonB == null) return false; +// // LocalDate birthA = A.getBirth(); // LocalDate birthB = B.getBirth(); // // if (birthA == null || birthB == null) return false; - +// // return !sexA.equals(sexB) && // GeoUtils.haversine(latA, lonA, latB, lonB) <= 3.0 && // Math.abs(birthA.getYear() - birthB.getYear()) <= 10; - return GeoUtils.haversine(latA, lonA, latB, lonB) <= 3.0; + + String latAStr = A.getLatitude(); + String lonAStr = A.getLongitude(); + String latBStr = B.getLatitude(); + String lonBStr = B.getLongitude(); + + if (latAStr == null || lonAStr == null || latBStr == null || lonBStr == null) { + return false; + } + + try { + double latA = Double.parseDouble(latAStr); + double lonA = Double.parseDouble(lonAStr); + double latB = Double.parseDouble(latBStr); + double lonB = Double.parseDouble(lonBStr); + + return GeoUtils.haversine(latA, lonA, latB, lonB) <= 3.0; + } catch (NumberFormatException e) { + return false; + } } } diff --git a/src/main/java/com/example/silverbridgeX_user/user/domain/User.java b/src/main/java/com/example/silverbridgeX_user/user/domain/User.java index 6f6c261..e4c6559 100644 --- a/src/main/java/com/example/silverbridgeX_user/user/domain/User.java +++ b/src/main/java/com/example/silverbridgeX_user/user/domain/User.java @@ -47,9 +47,9 @@ public class User extends BaseEntity { private String streetAddress; - private Double latitude; + private String latitude; - private Double longitude; + private String longitude; private String profileImage;