Skip to content

Commit 268300c

Browse files
committed
[feat] 동일한 활동점수가 2개 이상이면 2개만 반환하도록 변경
1 parent ac6ee17 commit 268300c

File tree

3 files changed

+33
-10
lines changed

3 files changed

+33
-10
lines changed

src/main/java/nambang_swag/bada_on/repository/PlaceRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,5 @@ public interface PlaceRepository extends JpaRepository<Place, Long> {
1616

1717
List<Place> findAllByCanSurfingIsTrue();
1818

19-
List<Place> findAllByCanPaddingIsTrue();
19+
List<Place> findAllByCanPaddlingIsTrue();
2020
}

src/main/java/nambang_swag/bada_on/service/PlaceService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ private List<Place> getPlaceByActivity(Activity activity) {
104104
return placeRepository.findAllByCanSurfingIsTrue();
105105
}
106106
case PADDlING -> {
107-
return placeRepository.findAllByCanPaddingIsTrue();
107+
return placeRepository.findAllByCanPaddlingIsTrue();
108108
}
109109
default -> {
110110
return new ArrayList<>();

src/main/java/nambang_swag/bada_on/service/WeatherService.java

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@
66
import java.time.format.DateTimeFormatter;
77
import java.time.temporal.ChronoUnit;
88
import java.util.ArrayList;
9+
import java.util.Arrays;
910
import java.util.Collections;
1011
import java.util.Comparator;
11-
import java.util.HashMap;
12+
import java.util.LinkedHashMap;
1213
import java.util.List;
1314
import java.util.Map;
1415
import java.util.stream.Collectors;
@@ -102,20 +103,31 @@ public WeatherDetail getWeatherDetail(Long placeId, int date, int hour) {
102103
}
103104

104105
private List<String> getRecommendActivities(Weather weather, List<TideRecord> tideRecords) {
105-
Map<Activity, Integer> activityScores = new HashMap<>();
106+
List<Activity> activities = Arrays.asList(
107+
SNORKELING,
108+
SWIMMING,
109+
DIVING,
110+
SURFING,
111+
PADDlING
112+
);
113+
114+
Map<Activity, Integer> activityScores = new LinkedHashMap<>();
106115

107-
activityScores.put(SNORKELING, calculateSnorkelingScore(weather, tideRecords));
108-
activityScores.put(SWIMMING, calculateSwimmingScore(weather, tideRecords));
109-
activityScores.put(DIVING, calculateDivingScore(weather, tideRecords));
110-
activityScores.put(PADDlING, calculatePaddlingScore(weather, tideRecords));
111-
activityScores.put(SURFING, calculateSurfingScore(weather, tideRecords));
116+
for (Activity activity : activities) {
117+
int score = calculateActivityScore(activity, weather, tideRecords);
118+
activityScores.put(activity, score);
119+
}
112120

113121
int maxScore = Collections.max(activityScores.values());
114122

115-
return activityScores.entrySet().stream()
123+
List<String> recommendedActivities = activityScores.entrySet().stream()
116124
.filter(entry -> entry.getValue() == maxScore)
117125
.map(entry -> entry.getKey().getValue())
118126
.collect(Collectors.toList());
127+
128+
return recommendedActivities.size() > 1
129+
? recommendedActivities.subList(0, 2)
130+
: recommendedActivities;
119131
}
120132

121133
// Calculate Point
@@ -636,5 +648,16 @@ private LocalDateTime toLocalDateTime(int date, int hour) {
636648
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHH");
637649
return LocalDateTime.parse(dateTimeString, formatter);
638650
}
651+
652+
private int calculateActivityScore(Activity activity, Weather weather, List<TideRecord> tideRecords) {
653+
return switch (activity) {
654+
case SNORKELING -> calculateSnorkelingScore(weather, tideRecords);
655+
case SWIMMING -> calculateSwimmingScore(weather, tideRecords);
656+
case DIVING -> calculateDivingScore(weather, tideRecords);
657+
case SURFING -> calculateSurfingScore(weather, tideRecords);
658+
case PADDlING -> calculatePaddlingScore(weather, tideRecords);
659+
default -> 0;
660+
};
661+
}
639662
}
640663

0 commit comments

Comments
 (0)