From 958af5e2e09b393410678eeeb88f03d9fd14435b Mon Sep 17 00:00:00 2001 From: cxxxtxxyxx Date: Sun, 1 Oct 2023 21:47:28 +0900 Subject: [PATCH] =?UTF-8?q?Fix:=20API=20=EB=AA=85=EC=84=B8=EC=99=80=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EB=B6=88=EC=9D=BC=EC=B9=98=20=ED=95=B4?= =?UTF-8?q?=EA=B2=B0=20(#170)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reservation/controller/ReservationController.java | 5 +++-- .../repository/ReservationQueryRepository.java | 2 +- .../repository/ReservationQueryRepositoryImpl.java | 4 ++-- .../server/reservation/service/ReservationService.java | 9 +++++---- .../controller/ReservationControllerTest.java | 5 +++-- .../reservation/service/ReservationServiceTest.java | 9 ++++----- 6 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/livable/server/reservation/controller/ReservationController.java b/src/main/java/com/livable/server/reservation/controller/ReservationController.java index 30299814..2043f066 100644 --- a/src/main/java/com/livable/server/reservation/controller/ReservationController.java +++ b/src/main/java/com/livable/server/reservation/controller/ReservationController.java @@ -24,14 +24,15 @@ public class ReservationController { @GetMapping("/places/{commonPlaceId}") public ResponseEntity> findAvailableTimes( @PathVariable Long commonPlaceId, - @RequestParam("date") LocalDate localDate, + @RequestParam("startDate") LocalDate startDate, + @RequestParam("endDate") LocalDate endDate, @LoginActor Actor actor ) { JwtTokenProvider.checkMemberToken(actor); List result = - reservationService.findAvailableReservationTimes(actor.getId(), commonPlaceId, localDate); + reservationService.findAvailableReservationTimes(actor.getId(), commonPlaceId, startDate, endDate); return ApiResponse.success(result, HttpStatus.OK); } } diff --git a/src/main/java/com/livable/server/reservation/repository/ReservationQueryRepository.java b/src/main/java/com/livable/server/reservation/repository/ReservationQueryRepository.java index a105ad22..3db7e3fd 100644 --- a/src/main/java/com/livable/server/reservation/repository/ReservationQueryRepository.java +++ b/src/main/java/com/livable/server/reservation/repository/ReservationQueryRepository.java @@ -18,6 +18,6 @@ List findNotUsedReservationTime( ); List findNotUsedReservationTimeByUsedReservationIds( - Long companyId, Long commonPlaceId, LocalDate date, List reservationIds + Long companyId, Long commonPlaceId, LocalDate startDate, LocalDate endDate, List reservationIds ); } diff --git a/src/main/java/com/livable/server/reservation/repository/ReservationQueryRepositoryImpl.java b/src/main/java/com/livable/server/reservation/repository/ReservationQueryRepositoryImpl.java index d7c7208f..f8443d4f 100644 --- a/src/main/java/com/livable/server/reservation/repository/ReservationQueryRepositoryImpl.java +++ b/src/main/java/com/livable/server/reservation/repository/ReservationQueryRepositoryImpl.java @@ -99,7 +99,7 @@ public List findNotUsedReservationTime( @Override public List findNotUsedReservationTimeByUsedReservationIds( - Long companyId, Long commonPlaceId, LocalDate date, List reservationIds + Long companyId, Long commonPlaceId, LocalDate startDate, LocalDate endDate, List reservationIds ) { return queryFactory .select(Projections.constructor(AvailableReservationTimeProjection.class, @@ -112,7 +112,7 @@ public List findNotUsedReservationTimeByUsed reservationIds ), reservation.company.id.eq(companyId), - reservation.date.eq(date), + reservation.date.goe(startDate).and(reservation.date.loe(endDate)), reservation.commonPlace.id.eq(commonPlaceId) ) .fetch(); diff --git a/src/main/java/com/livable/server/reservation/service/ReservationService.java b/src/main/java/com/livable/server/reservation/service/ReservationService.java index 201e9a95..8e6a5173 100644 --- a/src/main/java/com/livable/server/reservation/service/ReservationService.java +++ b/src/main/java/com/livable/server/reservation/service/ReservationService.java @@ -26,7 +26,8 @@ public class ReservationService { public List findAvailableReservationTimes( Long memberId, Long commonPlaceId, - LocalDate date + LocalDate startDate, + LocalDate endDate ) { @@ -34,18 +35,18 @@ public List findAvailabl .orElseThrow(() -> new GlobalRuntimeException(MemberErrorCode.MEMBER_NOT_EXIST)); AvailableReservationTimeProjections availableReservationTimeProjections = - getAvailableReservationTimeProjections(member.getCompany().getId(), commonPlaceId, date); + getAvailableReservationTimeProjections(member.getCompany().getId(), commonPlaceId, startDate, endDate); return availableReservationTimeProjections.toDto(); } private AvailableReservationTimeProjections getAvailableReservationTimeProjections( - Long companyId, Long commonPlaceId, LocalDate date + Long companyId, Long commonPlaceId, LocalDate startDate, LocalDate endDate ) { List usedReservationIds = invitationReservationMapRepository.findAllReservationId(); List timeProjections = reservationRepository.findNotUsedReservationTimeByUsedReservationIds( - companyId, commonPlaceId, date, usedReservationIds + companyId, commonPlaceId, startDate, endDate, usedReservationIds ); return new AvailableReservationTimeProjections(timeProjections); diff --git a/src/test/java/com/livable/server/reservation/controller/ReservationControllerTest.java b/src/test/java/com/livable/server/reservation/controller/ReservationControllerTest.java index efbd4769..15212a61 100644 --- a/src/test/java/com/livable/server/reservation/controller/ReservationControllerTest.java +++ b/src/test/java/com/livable/server/reservation/controller/ReservationControllerTest.java @@ -58,7 +58,7 @@ void findAvailableTimesSuccessTest() throws Exception { ) .collect(Collectors.toList()); - given(reservationService.findAvailableReservationTimes(anyLong(), anyLong(), any(LocalDate.class))) + given(reservationService.findAvailableReservationTimes(anyLong(), anyLong(), any(LocalDate.class), any(LocalDate.class))) .willReturn(result); // when @@ -66,7 +66,8 @@ void findAvailableTimesSuccessTest() throws Exception { get("/api/reservation/places/1") .header("Authorization", "Bearer " + token) .contentType(MediaType.APPLICATION_JSON) - .queryParam("date", "2023-09-22") + .queryParam("startDate", "2023-09-22") + .queryParam("endDate", "2023-09-22") ); // then diff --git a/src/test/java/com/livable/server/reservation/service/ReservationServiceTest.java b/src/test/java/com/livable/server/reservation/service/ReservationServiceTest.java index 15ca1658..8971d4dd 100644 --- a/src/test/java/com/livable/server/reservation/service/ReservationServiceTest.java +++ b/src/test/java/com/livable/server/reservation/service/ReservationServiceTest.java @@ -2,7 +2,6 @@ import com.livable.server.core.exception.GlobalRuntimeException; import com.livable.server.entity.Company; -import com.livable.server.entity.InvitationReservationMap; import com.livable.server.entity.Member; import com.livable.server.invitation.repository.InvitationReservationMapRepository; import com.livable.server.member.domain.MemberErrorCode; @@ -74,20 +73,20 @@ void findAvailableReservationTimesSuccessTest() { given(invitationReservationMapRepository.findAllReservationId()).willReturn(List.of(1L, 2L, 3L)); given(memberRepository.findById(anyLong())).willReturn(Optional.of(member)); given(reservationRepository.findNotUsedReservationTimeByUsedReservationIds( - anyLong(), anyLong(), any(LocalDate.class), any(List.class) + anyLong(), anyLong(), any(LocalDate.class), any(LocalDate.class), any(List.class) ) ) .willReturn(queryResult); // when List result = - reservationService.findAvailableReservationTimes(1L, 1L, LocalDate.now()); + reservationService.findAvailableReservationTimes(1L, 1L, LocalDate.now(), LocalDate.now().plusDays(1)); // then then(invitationReservationMapRepository).should(times(1)).findAllReservationId(); then(memberRepository).should(times(1)).findById(anyLong()); then(reservationRepository).should(times(1)) - .findNotUsedReservationTimeByUsedReservationIds(anyLong(), anyLong(), any(LocalDate.class), any(List.class)); + .findNotUsedReservationTimeByUsedReservationIds(anyLong(), anyLong(), any(LocalDate.class), any(LocalDate.class), any(List.class)); assertThat(result).usingRecursiveComparison().isEqualTo(projections.toDto()); } @@ -101,7 +100,7 @@ void findAvailableReservationTimesFailTest() { // when GlobalRuntimeException globalRuntimeException = assertThrows(GlobalRuntimeException.class, () -> - reservationService.findAvailableReservationTimes(1L, 1L, LocalDate.now()) + reservationService.findAvailableReservationTimes(1L, 1L, LocalDate.now(), LocalDate.now()) ); // then