From bae1d984e1fac2fe31b87c93d50ccb9922830d59 Mon Sep 17 00:00:00 2001 From: loadingKKamo21 Date: Thu, 2 Apr 2026 21:02:20 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=E2=99=BB=EF=B8=8F=20=EC=97=AC?= =?UTF-8?q?=EC=A0=95=20=EC=A2=85=EB=A3=8C=20=EC=B2=98=EB=A6=AC=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EA=B0=9C=EC=84=A0=20=EB=B0=8F=20=ED=86=B5=ED=95=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - `findByIdAndIsSuccessFalse` 제거 및 `findById` 기본 메서드로 통합 - `endJourney` 메서드에 성공 여부 결정을 위한 `success` 파라미터 추가 - 사용자 완료 선언 시 명시적으로 성공 상태를 전달하도록 로직 수정 - `Boolean.TRUE.equals` 활용을 통한 `isCompleted` 필드 Null 안정성 확보 - 불필요한 조건문 제거 및 여정 종료 후 통계 업데이트 로직 간소화 --- .../dao/VisitingHistoryRepository.java | 4 +--- .../domain/history/model/VisitingHistory.java | 15 +++++++++++++++ .../service/VisitingHistoryServiceImpl.java | 19 ++++++++----------- 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/timespot/backend/domain/history/dao/VisitingHistoryRepository.java b/src/main/java/com/timespot/backend/domain/history/dao/VisitingHistoryRepository.java index 1ab0b51..fc0f383 100644 --- a/src/main/java/com/timespot/backend/domain/history/dao/VisitingHistoryRepository.java +++ b/src/main/java/com/timespot/backend/domain/history/dao/VisitingHistoryRepository.java @@ -14,9 +14,7 @@ * DATE AUTHOR DESCRIPTION * --------------------------------------------------------------------------------------------------------------------- * 26. 3. 24. loadingKKamo21 Initial creation + * 26. 4. 2. loadingKKamo21 findByIdAndIsSuccessFalse 제거, findById 로 통합 */ public interface VisitingHistoryRepository extends JpaRepository, VisitingHistoryRepositoryCustom { - - Optional findByIdAndIsSuccessFalse(Long id); - } diff --git a/src/main/java/com/timespot/backend/domain/history/model/VisitingHistory.java b/src/main/java/com/timespot/backend/domain/history/model/VisitingHistory.java index a41b6f1..dd396c5 100644 --- a/src/main/java/com/timespot/backend/domain/history/model/VisitingHistory.java +++ b/src/main/java/com/timespot/backend/domain/history/model/VisitingHistory.java @@ -291,6 +291,7 @@ private void validateEndTime(final LocalDateTime startTime, final LocalDateTime /** * 탐색 종료 (종료 시간 설정 및 성공/실패 자동 판별) + * 시스템이 자동으로 성공/실패를 판정 (열차 출발 전 도착 여부) * * @param endTime 탐색 종료 시간 */ @@ -301,6 +302,20 @@ public void endJourney(final LocalDateTime endTime) { this.isSuccess = !endTime.isAfter(this.trainDepartureTime); } + /** + * 여정 종료 (사용자 선언 기반 성공/실패) + * 사용자의 isCompleted 선언에 따라 무조건 성공/실패로 처리 + * + * @param endTime 탐색 종료 시간 + * @param success 사용자 선언 성공 여부 (true = 성공, false = 실패) + */ + public void endJourney(final LocalDateTime endTime, final boolean success) { + validateEndTime(this.startTime, endTime); + this.endTime = endTime; + this.totalDurationMinutes = calculateDurationMinutes(this.startTime, endTime); + this.isSuccess = success; + } + /** * 여정 포기 (사용자가 중도 포기) */ diff --git a/src/main/java/com/timespot/backend/domain/history/service/VisitingHistoryServiceImpl.java b/src/main/java/com/timespot/backend/domain/history/service/VisitingHistoryServiceImpl.java index 5f21c5e..dfd15fb 100644 --- a/src/main/java/com/timespot/backend/domain/history/service/VisitingHistoryServiceImpl.java +++ b/src/main/java/com/timespot/backend/domain/history/service/VisitingHistoryServiceImpl.java @@ -121,7 +121,7 @@ public VisitingHistoryDetailResponse createNewJourney(final UUID userId, final J public VisitingHistoryDetailResponse endJourney(final UUID userId, final Long historyId, final JourneyEndRequest dto) { - VisitingHistory visitingHistory = visitingHistoryRepository.findByIdAndIsSuccessFalse(historyId) + VisitingHistory visitingHistory = visitingHistoryRepository.findById(historyId) .orElseThrow( () -> new GlobalException(HISTORY_NOT_FOUND) ); @@ -130,18 +130,15 @@ public VisitingHistoryDetailResponse endJourney(final UUID userId, visitingHistory.validateEndable(); - if (dto.getIsCompleted()) { - visitingHistory.endJourney(LocalDateTime.now(clock)); - - if (visitingHistory.isSuccess()) { - User user = visitingHistory.getUser(); - Station station = visitingHistory.getStation(); - int durationMinutes = visitingHistory.getTotalDurationMinutes(); + if (Boolean.TRUE.equals(dto.getIsCompleted())) { + visitingHistory.endJourney(LocalDateTime.now(clock), true); - user.addVisitHistory(durationMinutes, true); + User user = visitingHistory.getUser(); + Station station = visitingHistory.getStation(); + int durationMinutes = visitingHistory.getTotalDurationMinutes(); - updateFavoriteVisitCount(user, station, durationMinutes); - } + user.addVisitHistory(durationMinutes, true); + updateFavoriteVisitCount(user, station, durationMinutes); } else visitingHistory.abandonJourney();