Skip to content

Commit 6a52b6c

Browse files
committed
[feat] 조회가능 시간 입력날짜의 하루전 데이터 추가
1 parent a31bdcf commit 6a52b6c

File tree

3 files changed

+24
-5
lines changed

3 files changed

+24
-5
lines changed

src/main/java/nambang_swag/bada_on/controller/WeatherController.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010

1111
import io.swagger.v3.oas.annotations.Operation;
1212
import io.swagger.v3.oas.annotations.tags.Tag;
13+
import jakarta.validation.Valid;
1314
import lombok.RequiredArgsConstructor;
15+
import nambang_swag.bada_on.request.AvailableTimeRequest;
1416
import nambang_swag.bada_on.response.AvailableTime;
1517
import nambang_swag.bada_on.response.WeatherDetail;
1618
import nambang_swag.bada_on.response.WeatherSummary;
@@ -47,9 +49,8 @@ public ResponseEntity<WeatherDetail> getWeatherDetails(
4749
@Operation(summary = "조회 가능한 시간 조회", description = "날씨 조회가 가능한 시간 조회")
4850
@GetMapping("/available")
4951
public ResponseEntity<List<AvailableTime>> getAvailableTime(
50-
@RequestParam("date") Integer date,
51-
@RequestParam("hour") Integer hour
52+
@Valid AvailableTimeRequest request
5253
) {
53-
return ResponseEntity.ok(weatherService.getAvailableTime(date, hour));
54+
return ResponseEntity.ok(weatherService.getAvailableTime(Integer.valueOf(request.date())));
5455
}
5556
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package nambang_swag.bada_on.request;
2+
3+
import jakarta.validation.constraints.NotBlank;
4+
import jakarta.validation.constraints.Pattern;
5+
6+
public record AvailableTimeRequest(
7+
@NotBlank
8+
@Pattern(
9+
regexp = "^\\d{4}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])$",
10+
message = "yyyyMMdd 형태로 요청해주세요."
11+
)
12+
String date
13+
) {
14+
}

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -581,8 +581,12 @@ private int calculateTidePercentage(List<TideRecord> tideRecords) {
581581
return 0; // 범위 밖의 시간인 경우
582582
}
583583

584-
public List<AvailableTime> getAvailableTime(Integer date, Integer hour) {
585-
return weatherRepository.getWeatherIsUpdated(date, hour * 100).stream()
584+
public List<AvailableTime> getAvailableTime(Integer date) {
585+
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
586+
LocalDateTime requestTime = toLocalDateTime(date, 0);
587+
int requestDate = Integer.parseInt(requestTime.minusDays(1).format(formatter));
588+
589+
return weatherRepository.getWeatherIsUpdated(requestDate, 0).stream()
586590
.collect(Collectors.groupingBy(
587591
Weather::getDate,
588592
Collectors.mapping(weather -> weather.getTime() / 100, Collectors.toSet()) // Remove duplicates

0 commit comments

Comments
 (0)