diff --git a/src/main/java/com/Timo/Timo/domain/user/docs/OnboardingControllerDocs.java b/src/main/java/com/Timo/Timo/domain/user/docs/OnboardingControllerDocs.java index 13b7de82..185268f9 100644 --- a/src/main/java/com/Timo/Timo/domain/user/docs/OnboardingControllerDocs.java +++ b/src/main/java/com/Timo/Timo/domain/user/docs/OnboardingControllerDocs.java @@ -16,7 +16,10 @@ public interface OnboardingControllerDocs { @Operation( summary = "온보딩 완료", - description = "언어, 예측 정확도, 기상/취침 시간을 저장하고 온보딩을 완료 처리합니다.") + description = """ + 언어, 예측 정확도, 기상/취침 시간을 저장하고 온보딩을 완료 처리합니다. + 온보딩 완료 시 이용약관에 동의한 것으로 함께 처리됩니다. + """) @ApiResponses({ @ApiResponse( responseCode = "200", diff --git a/src/main/java/com/Timo/Timo/domain/user/dto/request/OnboardingRequest.java b/src/main/java/com/Timo/Timo/domain/user/dto/request/OnboardingRequest.java index 7b11a4dc..21479fbe 100644 --- a/src/main/java/com/Timo/Timo/domain/user/dto/request/OnboardingRequest.java +++ b/src/main/java/com/Timo/Timo/domain/user/dto/request/OnboardingRequest.java @@ -23,5 +23,4 @@ public record OnboardingRequest( @NotNull(message = "bedTime은 필수입니다.") @Pattern(regexp = "^([01]\\d|2[0-3]):[0-5]\\d$", message = "bedTime 형식은 HH:MM 이어야 합니다.") String bedTime -){ -} +){} diff --git a/src/main/java/com/Timo/Timo/domain/user/entity/User.java b/src/main/java/com/Timo/Timo/domain/user/entity/User.java index f46dbc14..dfb8d96b 100644 --- a/src/main/java/com/Timo/Timo/domain/user/entity/User.java +++ b/src/main/java/com/Timo/Timo/domain/user/entity/User.java @@ -74,6 +74,9 @@ public class User extends BaseTimeEntity { @Column(name = "calendar_email") private String calendarEmail; + @Column(name = "terms_agreed", nullable = false) + private boolean termsAgreed; + public void update(String name, String profileImageUrl) { this.name = name; this.profileImageUrl = profileImageUrl; @@ -89,6 +92,7 @@ public void completeOnboarding( this.predictionAccuracy = predictionAccuracy; this.wakeUpTime = wakeUpTime; this.bedTime = bedTime; + this.termsAgreed = true; this.onboardingCompleted = true; } @@ -123,5 +127,6 @@ private User( this.calendarConnected = false; this.calendarEmail = null; + this.termsAgreed = false; } } diff --git a/src/main/java/com/Timo/Timo/domain/user/exception/UserErrorCode.java b/src/main/java/com/Timo/Timo/domain/user/exception/UserErrorCode.java index 3a73c0e6..6162d4d1 100644 --- a/src/main/java/com/Timo/Timo/domain/user/exception/UserErrorCode.java +++ b/src/main/java/com/Timo/Timo/domain/user/exception/UserErrorCode.java @@ -9,9 +9,10 @@ @RequiredArgsConstructor public enum UserErrorCode implements BaseErrorCode { - USER_400_INVALID_TIME(HttpStatus.BAD_REQUEST, "USER_400", "취침 시간은 기상 시간보다 이후여야 합니다."), + USER_INVALID_TIME(HttpStatus.BAD_REQUEST, "USER_400", "취침 시간은 기상 시간보다 이후여야 합니다."), INVALID_TIMEZONE(HttpStatus.BAD_REQUEST, "USER_400", "유효하지 않은 시간대 ID입니다."), - USER_NOT_FOUND(HttpStatus.NOT_FOUND, "USER_404", "존재하지 않는 사용자입니다."); + USER_NOT_FOUND(HttpStatus.NOT_FOUND, "USER_404", "존재하지 않는 사용자입니다."), + ; private final HttpStatus httpStatus; private final String code; diff --git a/src/main/java/com/Timo/Timo/domain/user/service/OnboardingService.java b/src/main/java/com/Timo/Timo/domain/user/service/OnboardingService.java index 2ed7f29a..d24b277e 100644 --- a/src/main/java/com/Timo/Timo/domain/user/service/OnboardingService.java +++ b/src/main/java/com/Timo/Timo/domain/user/service/OnboardingService.java @@ -27,7 +27,7 @@ public OnboardingResponse completeOnboarding(Long userId, OnboardingRequest requ LocalTime bedTime = LocalTime.parse(request.bedTime()); if (!bedTime.isAfter(wakeUpTime)) { - throw new CustomException(UserErrorCode.USER_400_INVALID_TIME); + throw new CustomException(UserErrorCode.USER_INVALID_TIME); } user.completeOnboarding(