From 4d61fb86514a60272b7ff79891fd4dcc49dd1160 Mon Sep 17 00:00:00 2001 From: bbbang105 <2018111366@dgu.ac.kr> Date: Tue, 10 Dec 2024 23:33:33 +0900 Subject: [PATCH] =?UTF-8?q?#132=20[style]=20:=20=EC=A3=BC=EC=84=9D=20?= =?UTF-8?q?=EB=B0=8F=20=EA=B0=9C=ED=96=89=20=EB=AC=B8=EC=9E=90=EB=A5=BC=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../side/onetime/auth/constant/Provider.java | 2 +- .../side/onetime/auth/dto/GoogleUserInfo.java | 2 +- .../side/onetime/auth/dto/KakaoUserInfo.java | 2 +- .../side/onetime/auth/dto/NaverUserInfo.java | 2 +- .../side/onetime/auth/dto/OAuth2UserInfo.java | 2 +- .../handler/OAuthLoginFailureHandler.java | 16 ++- .../handler/OAuthLoginSuccessHandler.java | 75 +++++++++-- .../onetime/controller/FixedController.java | 14 +-- .../onetime/controller/MemberController.java | 8 +- .../controller/ScheduleController.java | 22 ++-- .../onetime/controller/TokenController.java | 4 +- .../onetime/controller/UrlController.java | 6 +- .../onetime/controller/UserController.java | 10 +- .../onetime/domain/EventParticipation.java | 2 +- .../side/onetime/domain/FixedSchedule.java | 2 +- .../side/onetime/domain/FixedSelection.java | 2 +- src/main/java/side/onetime/domain/Member.java | 3 +- .../side/onetime/domain/RefreshToken.java | 2 +- .../java/side/onetime/domain/Schedule.java | 4 +- .../java/side/onetime/domain/Selection.java | 2 +- src/main/java/side/onetime/domain/User.java | 3 +- .../onetime/domain/enums/EventStatus.java | 2 +- .../dto/event/request/CreateEventRequest.java | 2 +- .../ModifyUserCreatedEventTitleRequest.java | 2 +- .../event/response/CreateEventResponse.java | 2 +- .../dto/event/response/GetEventResponse.java | 2 +- .../event/response/GetMostPossibleTime.java | 2 +- .../response/GetParticipantsResponse.java | 2 +- .../GetUserParticipatedEventsResponse.java | 2 +- .../response/FixedEventByDayResponse.java | 2 +- .../fixed/response/FixedScheduleResponse.java | 2 +- .../member/request/IsDuplicateRequest.java | 3 +- .../member/request/LoginMemberRequest.java | 3 +- .../member/request/RegisterMemberRequest.java | 2 +- .../member/response/IsDuplicateResponse.java | 2 +- .../member/response/LoginMemberResponse.java | 2 +- .../response/RegisterMemberResponse.java | 2 +- .../dto/member/response/ScheduleResponse.java | 3 +- .../request/CreateDateScheduleRequest.java | 3 +- .../request/CreateDayScheduleRequest.java | 3 +- .../request/GetFilteredSchedulesRequest.java | 3 +- .../dto/schedule/response/DateSchedule.java | 2 +- .../dto/schedule/response/DaySchedule.java | 4 +- .../response/PerDaySchedulesResponse.java | 2 +- .../token/request/ReissueTokenRequest.java | 3 +- .../token/response/ReissueTokenResponse.java | 2 +- .../request/ConvertToOriginalUrlRequest.java | 3 +- .../request/ConvertToShortenUrlRequest.java | 3 +- .../ConvertToOriginalUrlResponse.java | 2 +- .../response/ConvertToShortenUrlResponse.java | 2 +- .../dto/user/request/OnboardUserRequest.java | 3 +- .../request/UpdateUserProfileRequest.java | 3 +- .../user/response/GetUserProfileResponse.java | 2 +- .../user/response/OnboardUserResponse.java | 2 +- .../onetime/exception/CustomException.java | 2 +- .../exception/GlobalExceptionHandler.java | 2 +- .../status/EventParticipationErrorStatus.java | 2 +- .../exception/status/FixedErrorStatus.java | 2 +- .../exception/status/MemberErrorStatus.java | 2 +- .../exception/status/ScheduleErrorStatus.java | 2 +- .../status/SelectionErrorStatus.java | 2 +- .../exception/status/TokenErrorStatus.java | 2 +- .../exception/status/UserErrorStatus.java | 2 +- .../onetime/global/common/ApiResponse.java | 2 +- .../onetime/global/common/code/BaseCode.java | 2 +- .../global/common/code/BaseErrorCode.java | 2 +- .../onetime/global/common/dao/BaseEntity.java | 7 +- .../global/common/dto/ErrorReasonDto.java | 2 +- .../onetime/global/common/dto/ReasonDto.java | 2 +- .../global/common/status/ErrorStatus.java | 2 +- .../side/onetime/global/config/JpaConfig.java | 2 +- .../onetime/global/config/QueryDslConfig.java | 2 +- .../global/config/SchedulerConfig.java | 2 +- .../onetime/global/config/SecurityConfig.java | 2 +- .../onetime/global/config/SwaggerConfig.java | 2 +- .../EventParticipationRepository.java | 2 +- .../onetime/repository/EventRepository.java | 2 +- .../repository/FixedEventRepository.java | 2 +- .../repository/FixedScheduleRepository.java | 2 +- .../repository/FixedSelectionRepository.java | 2 +- .../onetime/repository/MemberRepository.java | 2 +- .../repository/RefreshTokenRepository.java | 31 +++-- .../repository/ScheduleRepository.java | 2 +- .../repository/SelectionRepository.java | 2 +- .../onetime/repository/UserRepository.java | 2 +- .../custom/EventRepositoryCustom.java | 2 +- .../custom/EventRepositoryImpl.java | 11 +- .../custom/FixedEventRepositoryImpl.java | 37 +++++- .../FixedSelectionRepositoryCustom.java | 2 +- .../custom/FixedSelectionRepositoryImpl.java | 9 +- .../service/EventCleanupScheduler.java | 10 +- .../side/onetime/service/MemberService.java | 53 +++++++- .../side/onetime/service/ScheduleService.java | 116 ++++++++++++++++-- .../side/onetime/service/TokenService.java | 22 ++-- .../java/side/onetime/service/UrlService.java | 33 ++++- .../side/onetime/service/UserService.java | 37 +++++- .../java/side/onetime/util/Base62Util.java | 38 +++++- src/main/java/side/onetime/util/DateUtil.java | 65 ++++++++-- src/main/java/side/onetime/util/FileUtil.java | 11 ++ src/main/java/side/onetime/util/JwtUtil.java | 89 ++++++++++++-- 100 files changed, 689 insertions(+), 206 deletions(-) diff --git a/src/main/java/side/onetime/auth/constant/Provider.java b/src/main/java/side/onetime/auth/constant/Provider.java index fbda99f..3d08112 100644 --- a/src/main/java/side/onetime/auth/constant/Provider.java +++ b/src/main/java/side/onetime/auth/constant/Provider.java @@ -14,4 +14,4 @@ public enum Provider { public String getProvider() { return provider; } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/auth/dto/GoogleUserInfo.java b/src/main/java/side/onetime/auth/dto/GoogleUserInfo.java index 94bb596..32d9ae9 100644 --- a/src/main/java/side/onetime/auth/dto/GoogleUserInfo.java +++ b/src/main/java/side/onetime/auth/dto/GoogleUserInfo.java @@ -29,4 +29,4 @@ public String getName() { public String getEmail() { return (String) attributes.get("email"); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/auth/dto/KakaoUserInfo.java b/src/main/java/side/onetime/auth/dto/KakaoUserInfo.java index d5c6b8c..cf89d5a 100644 --- a/src/main/java/side/onetime/auth/dto/KakaoUserInfo.java +++ b/src/main/java/side/onetime/auth/dto/KakaoUserInfo.java @@ -29,4 +29,4 @@ public String getName() { public String getEmail() { return (String) ((Map) attributes.get("kakao_account")).get("email"); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/auth/dto/NaverUserInfo.java b/src/main/java/side/onetime/auth/dto/NaverUserInfo.java index 98bb5c0..e6dbaed 100644 --- a/src/main/java/side/onetime/auth/dto/NaverUserInfo.java +++ b/src/main/java/side/onetime/auth/dto/NaverUserInfo.java @@ -29,4 +29,4 @@ public String getName() { public String getEmail() { return (String) attributes.get("email"); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/auth/dto/OAuth2UserInfo.java b/src/main/java/side/onetime/auth/dto/OAuth2UserInfo.java index 8e093e5..8e61176 100644 --- a/src/main/java/side/onetime/auth/dto/OAuth2UserInfo.java +++ b/src/main/java/side/onetime/auth/dto/OAuth2UserInfo.java @@ -5,4 +5,4 @@ public interface OAuth2UserInfo { String getProvider(); String getName(); String getEmail(); -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/auth/handler/OAuthLoginFailureHandler.java b/src/main/java/side/onetime/auth/handler/OAuthLoginFailureHandler.java index 39b6e00..47cbba2 100644 --- a/src/main/java/side/onetime/auth/handler/OAuthLoginFailureHandler.java +++ b/src/main/java/side/onetime/auth/handler/OAuthLoginFailureHandler.java @@ -16,11 +16,21 @@ @RequiredArgsConstructor public class OAuthLoginFailureHandler extends SimpleUrlAuthenticationFailureHandler { + /** + * 로그인 실패 처리 메서드. + * + * 인증 실패가 발생했을 때 호출됩니다. + * 실패 원인을 로그로 기록하며, 부모 클래스의 기본 실패 처리 로직을 실행합니다. + * + * @param request HttpServletRequest 객체 + * @param response HttpServletResponse 객체 + * @param exception AuthenticationException 객체 (인증 실패 원인) + * @throws IOException 입출력 예외 + * @throws ServletException 서블릿 예외 + */ @Override public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException { log.error("LOGIN FAILED : {}", exception.getMessage()); super.onAuthenticationFailure(request, response, exception); - - // 추후 구현 } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/auth/handler/OAuthLoginSuccessHandler.java b/src/main/java/side/onetime/auth/handler/OAuthLoginSuccessHandler.java index 33475df..a27c0ae 100644 --- a/src/main/java/side/onetime/auth/handler/OAuthLoginSuccessHandler.java +++ b/src/main/java/side/onetime/auth/handler/OAuthLoginSuccessHandler.java @@ -48,6 +48,17 @@ public class OAuthLoginSuccessHandler extends SimpleUrlAuthenticationSuccessHand private final UserRepository userRepository; private final RefreshTokenRepository refreshTokenRepository; + /** + * OAuth2 인증 성공 처리 메서드. + * + * 인증 성공 시 OAuth2AuthenticationToken을 기반으로 제공자 정보를 추출하고, + * 인증 결과를 처리합니다. + * + * @param request HttpServletRequest 객체 + * @param response HttpServletResponse 객체 + * @param authentication 인증 성공 정보를 담은 객체 + * @throws IOException 인증 처리 중 발생할 수 있는 입출력 예외 + */ @Override public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException { OAuth2AuthenticationToken token = (OAuth2AuthenticationToken) authentication; @@ -57,7 +68,15 @@ public void onAuthenticationSuccess(HttpServletRequest request, HttpServletRespo handleAuthentication(request, response, oAuth2UserInfo, provider); } - // OAuth2UserInfo 추출 + /** + * OAuth2 사용자 정보 추출 메서드. + * + * 제공자(provider)에 따라 적합한 OAuth2UserInfo 객체를 생성합니다. + * + * @param token OAuth2AuthenticationToken 객체 + * @param provider OAuth2 제공자 이름 (google, kakao, naver 등) + * @return OAuth2UserInfo 객체 + */ private OAuth2UserInfo extractOAuth2UserInfo(OAuth2AuthenticationToken token, String provider) { switch (provider) { case "google": @@ -74,7 +93,17 @@ private OAuth2UserInfo extractOAuth2UserInfo(OAuth2AuthenticationToken token, St } } - // 인증 처리 + /** + * 인증 성공 처리 메서드. + * + * 인증된 사용자의 정보를 바탕으로 신규 또는 기존 사용자를 처리합니다. + * + * @param request HttpServletRequest 객체 + * @param response HttpServletResponse 객체 + * @param oAuth2UserInfo OAuth2 사용자 정보 객체 + * @param provider OAuth2 제공자 이름 + * @throws IOException 인증 처리 중 발생할 수 있는 입출력 예외 + */ private void handleAuthentication(HttpServletRequest request, HttpServletResponse response, OAuth2UserInfo oAuth2UserInfo, String provider) throws IOException { String providerId = oAuth2UserInfo.getProviderId(); String name = oAuth2UserInfo.getName(); @@ -83,10 +112,8 @@ private void handleAuthentication(HttpServletRequest request, HttpServletRespons User existUser = userRepository.findByProviderId(providerId); if (existUser == null) { - // 신규 유저 처리 handleNewUser(request, response, provider, providerId, name, email); } else { - // 기존 유저 처리 handleExistingUser(request, response, existUser); } @@ -96,7 +123,20 @@ private void handleAuthentication(HttpServletRequest request, HttpServletRespons log.info("EMAIL : {}", email); } - // 신규 유저 처리 + /** + * 신규 유저 처리 메서드. + * + * OAuth2 인증을 통해 새로 가입한 사용자를 처리하고, + * 회원가입 완료를 위한 리다이렉트를 수행합니다. + * + * @param request HttpServletRequest 객체 + * @param response HttpServletResponse 객체 + * @param provider OAuth2 제공자 이름 + * @param providerId 제공자 고유 ID + * @param name 사용자 이름 + * @param email 사용자 이메일 + * @throws IOException 인증 처리 중 발생할 수 있는 입출력 예외 + */ private void handleNewUser(HttpServletRequest request, HttpServletResponse response, String provider, String providerId, String name, String email) throws IOException { log.info("신규 유저입니다."); String registerToken = jwtUtil.generateRegisterToken(provider, providerId, name, email, REGISTER_TOKEN_EXPIRATION_TIME); @@ -104,24 +144,39 @@ private void handleNewUser(HttpServletRequest request, HttpServletResponse respo getRedirectStrategy().sendRedirect(request, response, redirectUri); } - // 기존 유저 처리 + /** + * 기존 유저 처리 메서드. + * + * OAuth2 인증을 통해 로그인한 기존 사용자를 처리하고, + * 액세스 및 리프레쉬 토큰을 발급하여 리다이렉트를 수행합니다. + * + * @param request HttpServletRequest 객체 + * @param response HttpServletResponse 객체 + * @param user 기존 사용자 정보 + * @throws IOException 인증 처리 중 발생할 수 있는 입출력 예외 + */ private void handleExistingUser(HttpServletRequest request, HttpServletResponse response, User user) throws IOException { log.info("기존 유저입니다."); Long userId = user.getId(); - // 액세스 & 리프레쉬 토큰 발급 및 저장 String accessToken = jwtUtil.generateAccessToken(userId, ACCESS_TOKEN_EXPIRATION_TIME); String refreshToken = jwtUtil.generateRefreshToken(userId, REFRESH_TOKEN_EXPIRATION_TIME); saveRefreshToken(userId, refreshToken); - // 리다이렉트 처리 String redirectUri = String.format(ACCESS_TOKEN_REDIRECT_URI, accessToken, refreshToken); getRedirectStrategy().sendRedirect(request, response, redirectUri); } - // Refresh Token 저장 + /** + * Refresh Token 저장 메서드. + * + * 사용자의 리프레쉬 토큰을 데이터베이스에 저장합니다. + * + * @param userId 사용자 ID + * @param refreshToken 리프레쉬 토큰 값 + */ private void saveRefreshToken(Long userId, String refreshToken) { RefreshToken newRefreshToken = new RefreshToken(userId, refreshToken); refreshTokenRepository.save(newRefreshToken); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/controller/FixedController.java b/src/main/java/side/onetime/controller/FixedController.java index 152a877..a164426 100644 --- a/src/main/java/side/onetime/controller/FixedController.java +++ b/src/main/java/side/onetime/controller/FixedController.java @@ -24,7 +24,7 @@ public class FixedController { private final FixedScheduleService fixedScheduleService; /** - * 고정 이벤트 생성 및 고정 스케줄 등록 API + * 고정 이벤트 생성 및 고정 스케줄 등록 API. * * 이 API는 새로운 고정 이벤트를 생성하고 관련된 고정 스케줄을 등록합니다. * @@ -42,7 +42,7 @@ public ResponseEntity> createFixedEvent( } /** - * 전체 고정 스케줄 조회 API + * 전체 고정 스케줄 조회 API. * * 이 API는 유저가 등록한 모든 고정 스케줄을 조회합니다. * @@ -58,7 +58,7 @@ public ResponseEntity>> getAllFixedSchedule } /** - * 특정 고정 스케줄 상세 조회 API + * 특정 고정 스케줄 상세 조회 API. * * 이 API는 특정 ID에 해당하는 고정 스케줄의 상세 정보를 조회합니다. * @@ -76,7 +76,7 @@ public ResponseEntity> getFixedScheduleDet } /** - * 고정 이벤트 또는 스케줄 수정 API + * 고정 이벤트 또는 스케줄 수정 API. * * 이 API는 특정 고정 이벤트의 제목과 스케줄을 수정할 수 있습니다. * @@ -102,7 +102,7 @@ public ResponseEntity> modifyFixedEvent( } /** - * 고정 이벤트 & 스케줄 삭제 API + * 고정 이벤트 & 스케줄 삭제 API. * * 이 API는 특정 ID에 해당하는 고정 이벤트와 관련된 스케줄을 삭제합니다. * @@ -120,7 +120,7 @@ public ResponseEntity> removeFixedEvent( } /** - * 요일별 고정 이벤트 조회 API + * 요일별 고정 이벤트 조회 API. * * 이 API는 특정 요일에 해당하는 고정 이벤트 목록을 조회합니다. * @@ -136,4 +136,4 @@ public ResponseEntity>> getFixedEventB List response = fixedEventService.getFixedEventByDay(authorizationHeader, day); return ApiResponse.onSuccess(SuccessStatus._GET_FIXED_EVENT_BY_DAY, response); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/controller/MemberController.java b/src/main/java/side/onetime/controller/MemberController.java index baed016..91032d3 100644 --- a/src/main/java/side/onetime/controller/MemberController.java +++ b/src/main/java/side/onetime/controller/MemberController.java @@ -24,7 +24,7 @@ public class MemberController { private final MemberService memberService; /** - * 멤버 등록 API + * 멤버 등록 API. * * 이 API는 새로운 멤버를 등록합니다. 멤버가 속한 이벤트 ID와 이름, PIN, 스케줄 목록을 받습니다. * @@ -40,7 +40,7 @@ public ResponseEntity> registerMember( } /** - * 멤버 로그인 API + * 멤버 로그인 API. * * 이 API는 멤버의 로그인 정보를 확인하고, 로그인에 성공한 경우 멤버의 정보를 반환합니다. * @@ -56,7 +56,7 @@ public ResponseEntity> loginMember( } /** - * 이름 중복 확인 API + * 이름 중복 확인 API. * * 이 API는 특정 이벤트에서 지정한 이름이 중복되는지 확인합니다. * @@ -70,4 +70,4 @@ public ResponseEntity> isDuplicate( IsDuplicateResponse isDuplicateResponse = memberService.isDuplicate(isDuplicateRequest); return ApiResponse.onSuccess(SuccessStatus._IS_POSSIBLE_NAME, isDuplicateResponse); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/controller/ScheduleController.java b/src/main/java/side/onetime/controller/ScheduleController.java index 27fbd49..3806f45 100644 --- a/src/main/java/side/onetime/controller/ScheduleController.java +++ b/src/main/java/side/onetime/controller/ScheduleController.java @@ -22,7 +22,7 @@ public class ScheduleController { private final ScheduleService scheduleService; /** - * 요일 스케줄 등록 API + * 요일 스케줄 등록 API. * * 요일별 반복되는 스케줄을 등록하는 API입니다. * 인증된 사용자와 비인증 사용자에 따라 스케줄 생성 방식이 다릅니다. @@ -45,7 +45,7 @@ public ResponseEntity> createDaySchedules( } /** - * 날짜 스케줄 등록 API + * 날짜 스케줄 등록 API. * * 특정 날짜에 대한 스케줄을 등록하는 API입니다. * 인증된 사용자와 비인증 사용자에 따라 스케줄 생성 방식이 다릅니다. @@ -68,7 +68,7 @@ public ResponseEntity> createDateSchedules( } /** - * 전체 요일 스케줄 조회 API + * 전체 요일 스케줄 조회 API. * * 특정 이벤트에 등록된 모든 요일 스케줄을 조회합니다. * @@ -84,7 +84,7 @@ public ResponseEntity>> getAllDaySched } /** - * 개인 요일 스케줄 조회 API (비로그인) + * 개인 요일 스케줄 조회 API (비로그인). * * 비로그인 사용자의 특정 이벤트에 대한 개인 요일 스케줄을 조회합니다. * @@ -102,7 +102,7 @@ public ResponseEntity> getMemberDaySchedule } /** - * 개인 요일 스케줄 조회 API (로그인) + * 개인 요일 스케줄 조회 API (로그인). * * 인증된 사용자의 특정 이벤트에 대한 개인 요일 스케줄을 조회합니다. * @@ -120,7 +120,7 @@ public ResponseEntity> getUserDaySchedules( } /** - * 멤버 필터링 요일 스케줄 조회 API + * 멤버 필터링 요일 스케줄 조회 API. * * 멤버 이름을 필터링하여 특정 이벤트의 요일 스케줄을 조회합니다. * @@ -136,7 +136,7 @@ public ResponseEntity>> getFilteredDay } /** - * 전체 날짜 스케줄 조회 API + * 전체 날짜 스케줄 조회 API. * * 특정 이벤트에 등록된 모든 날짜 스케줄을 조회합니다. * @@ -152,7 +152,7 @@ public ResponseEntity>> getAllDateSch } /** - * 개인 날짜 스케줄 조회 API (비로그인) + * 개인 날짜 스케줄 조회 API (비로그인). * * 비로그인 사용자의 특정 이벤트에 대한 개인 날짜 스케줄을 조회합니다. * @@ -170,7 +170,7 @@ public ResponseEntity> getMemberDateSchedu } /** - * 개인 날짜 스케줄 조회 API (로그인) + * 개인 날짜 스케줄 조회 API (로그인). * * 인증된 사용자의 특정 이벤트에 대한 개인 날짜 스케줄을 조회합니다. * @@ -188,7 +188,7 @@ public ResponseEntity> getUserDateSchedule } /** - * 멤버 필터링 날짜 스케줄 조회 API + * 멤버 필터링 날짜 스케줄 조회 API. * * 멤버 이름을 필터링하여 특정 이벤트의 날짜 스케줄을 조회합니다. * @@ -202,4 +202,4 @@ public ResponseEntity>> getFilteredDa List perDateSchedulesResponses = scheduleService.getFilteredDateSchedules(getFilteredSchedulesRequest); return ApiResponse.onSuccess(SuccessStatus._GET_FILTERED_DATE_SCHEDULES, perDateSchedulesResponses); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/controller/TokenController.java b/src/main/java/side/onetime/controller/TokenController.java index f0355f4..ea5813a 100644 --- a/src/main/java/side/onetime/controller/TokenController.java +++ b/src/main/java/side/onetime/controller/TokenController.java @@ -20,7 +20,7 @@ public class TokenController { private final TokenService tokenService; /** - * 액세스 토큰 재발행 API + * 액세스 토큰 재발행 API. * * 이 API는 유효한 리프레쉬 토큰을 제공받아 새 액세스 토큰과 리프레쉬 토큰을 재발행합니다. * 리프레쉬 토큰의 유효성을 검증하고, 인증 정보에 따라 토큰을 갱신합니다. @@ -35,4 +35,4 @@ public ResponseEntity> reissueToken( ReissueTokenResponse reissueTokenResponse = tokenService.reissueToken(reissueAccessTokenRequest); return ApiResponse.onSuccess(SuccessStatus._REISSUE_TOKENS, reissueTokenResponse); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/controller/UrlController.java b/src/main/java/side/onetime/controller/UrlController.java index 4ff0557..aa90dd4 100644 --- a/src/main/java/side/onetime/controller/UrlController.java +++ b/src/main/java/side/onetime/controller/UrlController.java @@ -22,7 +22,7 @@ public class UrlController { private final UrlService urlService; /** - * 원본 URL을 단축 URL로 변환하는 API + * 원본 URL을 단축 URL로 변환하는 API. * * 이 API는 제공된 원본 URL을 단축 URL로 변환합니다. * 주어진 URL에서 이벤트 ID를 추출하고, 해당 이벤트가 존재할 경우에만 단축 URL을 생성하여 반환합니다. @@ -39,7 +39,7 @@ public ResponseEntity> convertToShorten } /** - * 단축 URL을 원본 URL로 복원하는 API + * 단축 URL을 원본 URL로 복원하는 API. * * 이 API는 단축된 URL을 원래의 URL로 복원합니다. * 복원된 URL에서 이벤트 ID를 추출하여, 해당 이벤트가 존재하는지 확인 후 원본 URL을 반환합니다. @@ -54,4 +54,4 @@ public ResponseEntity> convertToOrigin ConvertToOriginalUrlResponse convertToOriginalUrlResponse = urlService.convertToOriginalUrl(convertToOriginalUrlRequest); return ApiResponse.onSuccess(SuccessStatus._CONVERT_TO_ORIGINAL_URL, convertToOriginalUrlResponse); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/controller/UserController.java b/src/main/java/side/onetime/controller/UserController.java index 93dad6d..9b6dcf3 100644 --- a/src/main/java/side/onetime/controller/UserController.java +++ b/src/main/java/side/onetime/controller/UserController.java @@ -19,7 +19,7 @@ public class UserController { private final UserService userService; /** - * 유저 온보딩 API + * 유저 온보딩 API. * * 회원가입 이후, 유저의 닉네임을 설정하고 온보딩을 완료하는 API입니다. * 주어진 레지스터 토큰을 통해 사용자 정보를 확인한 후, 액세스 토큰과 리프레쉬 토큰을 발급하여 반환합니다. @@ -36,7 +36,7 @@ public ResponseEntity> onboardUser( } /** - * 유저 정보 조회 API + * 유저 정보 조회 API. * * 로그인한 유저의 닉네임과 이메일 정보를 조회합니다. * @@ -52,7 +52,7 @@ public ResponseEntity> getUserProfile( } /** - * 유저 정보 수정 API + * 유저 정보 수정 API. * * 유저의 닉네임을 수정하는 API입니다. 수정된 닉네임은 최대 길이 제한을 받습니다. * @@ -70,7 +70,7 @@ public ResponseEntity> updateUserProfile( } /** - * 유저 서비스 탈퇴 API + * 유저 서비스 탈퇴 API. * * 유저의 계정을 삭제하여 서비스에서 탈퇴하는 API입니다. * @@ -84,4 +84,4 @@ public ResponseEntity> withdrawService( userService.withdrawService(authorizationHeader); return ApiResponse.onSuccess(SuccessStatus._WITHDRAW_SERVICE); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/domain/EventParticipation.java b/src/main/java/side/onetime/domain/EventParticipation.java index 2a7fc0d..f4e512b 100644 --- a/src/main/java/side/onetime/domain/EventParticipation.java +++ b/src/main/java/side/onetime/domain/EventParticipation.java @@ -36,4 +36,4 @@ public EventParticipation(Event event, User user, EventStatus eventStatus) { this.user = user; this.eventStatus = eventStatus; } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/domain/FixedSchedule.java b/src/main/java/side/onetime/domain/FixedSchedule.java index 6aa6cb9..4399d34 100644 --- a/src/main/java/side/onetime/domain/FixedSchedule.java +++ b/src/main/java/side/onetime/domain/FixedSchedule.java @@ -33,4 +33,4 @@ public FixedSchedule(String day, String time) { this.day = day; this.time = time; } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/domain/FixedSelection.java b/src/main/java/side/onetime/domain/FixedSelection.java index e839b59..aba1ae1 100644 --- a/src/main/java/side/onetime/domain/FixedSelection.java +++ b/src/main/java/side/onetime/domain/FixedSelection.java @@ -30,4 +30,4 @@ public FixedSelection(FixedEvent fixedEvent, FixedSchedule fixedSchedule) { this.fixedEvent = fixedEvent; this.fixedSchedule = fixedSchedule; } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/domain/Member.java b/src/main/java/side/onetime/domain/Member.java index 667ac21..446c03c 100644 --- a/src/main/java/side/onetime/domain/Member.java +++ b/src/main/java/side/onetime/domain/Member.java @@ -5,7 +5,6 @@ import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; -import org.hibernate.annotations.BatchSize; import side.onetime.global.common.dao.BaseEntity; import java.util.List; @@ -44,4 +43,4 @@ public Member(Event event, UUID memberId, String name, String pin) { this.name = name; this.pin = pin; } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/domain/RefreshToken.java b/src/main/java/side/onetime/domain/RefreshToken.java index 7d23d05..b851cb8 100644 --- a/src/main/java/side/onetime/domain/RefreshToken.java +++ b/src/main/java/side/onetime/domain/RefreshToken.java @@ -13,4 +13,4 @@ public RefreshToken(Long userId, String refreshToken) { this.userId = userId; this.refreshToken = refreshToken; } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/domain/Schedule.java b/src/main/java/side/onetime/domain/Schedule.java index 98f0e1a..2a2b909 100644 --- a/src/main/java/side/onetime/domain/Schedule.java +++ b/src/main/java/side/onetime/domain/Schedule.java @@ -5,10 +5,8 @@ import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; -import org.hibernate.annotations.BatchSize; import side.onetime.global.common.dao.BaseEntity; -import java.time.LocalTime; import java.util.List; @Entity @@ -44,4 +42,4 @@ public Schedule(Event event, String date, String day, String time) { this.day = day; this.time = time; } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/domain/Selection.java b/src/main/java/side/onetime/domain/Selection.java index 22c86f8..077b93b 100644 --- a/src/main/java/side/onetime/domain/Selection.java +++ b/src/main/java/side/onetime/domain/Selection.java @@ -35,4 +35,4 @@ public Selection(Member member, User user, Schedule schedule) { this.user = user; this.schedule = schedule; } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/domain/User.java b/src/main/java/side/onetime/domain/User.java index da438ae..621f33e 100644 --- a/src/main/java/side/onetime/domain/User.java +++ b/src/main/java/side/onetime/domain/User.java @@ -5,7 +5,6 @@ import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; -import org.hibernate.annotations.BatchSize; import side.onetime.global.common.dao.BaseEntity; import java.util.List; @@ -56,4 +55,4 @@ public User(String name, String email, String nickname, String provider, String public void updateNickName(String nickname) { this.nickname = nickname; } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/domain/enums/EventStatus.java b/src/main/java/side/onetime/domain/enums/EventStatus.java index 9f6328b..ecb7e63 100644 --- a/src/main/java/side/onetime/domain/enums/EventStatus.java +++ b/src/main/java/side/onetime/domain/enums/EventStatus.java @@ -3,4 +3,4 @@ public enum EventStatus { CREATOR, // 이벤트 생성자 PARTICIPANT // 이벤트 참여자 -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/dto/event/request/CreateEventRequest.java b/src/main/java/side/onetime/dto/event/request/CreateEventRequest.java index 805d251..b927a80 100644 --- a/src/main/java/side/onetime/dto/event/request/CreateEventRequest.java +++ b/src/main/java/side/onetime/dto/event/request/CreateEventRequest.java @@ -29,4 +29,4 @@ public Event toEntity() { .category(category) .build(); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/dto/event/request/ModifyUserCreatedEventTitleRequest.java b/src/main/java/side/onetime/dto/event/request/ModifyUserCreatedEventTitleRequest.java index 6cf98e6..22d684d 100644 --- a/src/main/java/side/onetime/dto/event/request/ModifyUserCreatedEventTitleRequest.java +++ b/src/main/java/side/onetime/dto/event/request/ModifyUserCreatedEventTitleRequest.java @@ -10,4 +10,4 @@ public record ModifyUserCreatedEventTitleRequest( @NotBlank(message = "변경할 제목은 필수 값입니다.") String title ) { -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/dto/event/response/CreateEventResponse.java b/src/main/java/side/onetime/dto/event/response/CreateEventResponse.java index db47eec..8472e2e 100644 --- a/src/main/java/side/onetime/dto/event/response/CreateEventResponse.java +++ b/src/main/java/side/onetime/dto/event/response/CreateEventResponse.java @@ -15,4 +15,4 @@ public record CreateEventResponse( public static CreateEventResponse of(Event event) { return new CreateEventResponse(event.getEventId()); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/dto/event/response/GetEventResponse.java b/src/main/java/side/onetime/dto/event/response/GetEventResponse.java index dda27c0..e7a1494 100644 --- a/src/main/java/side/onetime/dto/event/response/GetEventResponse.java +++ b/src/main/java/side/onetime/dto/event/response/GetEventResponse.java @@ -29,4 +29,4 @@ public static GetEventResponse of(Event event, List ranges, EventStatus eventStatus ); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/dto/event/response/GetMostPossibleTime.java b/src/main/java/side/onetime/dto/event/response/GetMostPossibleTime.java index 75b331b..45eee75 100644 --- a/src/main/java/side/onetime/dto/event/response/GetMostPossibleTime.java +++ b/src/main/java/side/onetime/dto/event/response/GetMostPossibleTime.java @@ -51,4 +51,4 @@ public GetMostPossibleTime updateEndTime(String endTime) { this.impossibleNames ); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/dto/event/response/GetParticipantsResponse.java b/src/main/java/side/onetime/dto/event/response/GetParticipantsResponse.java index d6db2c3..8b4c48c 100644 --- a/src/main/java/side/onetime/dto/event/response/GetParticipantsResponse.java +++ b/src/main/java/side/onetime/dto/event/response/GetParticipantsResponse.java @@ -19,4 +19,4 @@ public static GetParticipantsResponse of(List members, List users) names.addAll(users.stream().map(User::getNickname).collect(Collectors.toList())); return new GetParticipantsResponse(names); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/dto/event/response/GetUserParticipatedEventsResponse.java b/src/main/java/side/onetime/dto/event/response/GetUserParticipatedEventsResponse.java index 85e0a33..affac00 100644 --- a/src/main/java/side/onetime/dto/event/response/GetUserParticipatedEventsResponse.java +++ b/src/main/java/side/onetime/dto/event/response/GetUserParticipatedEventsResponse.java @@ -33,4 +33,4 @@ public static GetUserParticipatedEventsResponse of(Event event, EventParticipati mostPossibleTimes ); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/dto/fixed/response/FixedEventByDayResponse.java b/src/main/java/side/onetime/dto/fixed/response/FixedEventByDayResponse.java index ed86742..4dbbf74 100644 --- a/src/main/java/side/onetime/dto/fixed/response/FixedEventByDayResponse.java +++ b/src/main/java/side/onetime/dto/fixed/response/FixedEventByDayResponse.java @@ -20,4 +20,4 @@ public static FixedEventByDayResponse of(Long id, String title, String startTime endTime ); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/dto/fixed/response/FixedScheduleResponse.java b/src/main/java/side/onetime/dto/fixed/response/FixedScheduleResponse.java index 7b34d3b..ea2ad87 100644 --- a/src/main/java/side/onetime/dto/fixed/response/FixedScheduleResponse.java +++ b/src/main/java/side/onetime/dto/fixed/response/FixedScheduleResponse.java @@ -17,4 +17,4 @@ public static FixedScheduleResponse of(String timePoint, List times) { timePoint, times); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/dto/member/request/IsDuplicateRequest.java b/src/main/java/side/onetime/dto/member/request/IsDuplicateRequest.java index a5bb0dd..3ac18c7 100644 --- a/src/main/java/side/onetime/dto/member/request/IsDuplicateRequest.java +++ b/src/main/java/side/onetime/dto/member/request/IsDuplicateRequest.java @@ -10,4 +10,5 @@ public record IsDuplicateRequest( @NotBlank(message = "Event ID는 필수 값입니다.") String eventId, @NotBlank(message = "이름은 필수 값입니다.") String name -) {} \ No newline at end of file +) { +} diff --git a/src/main/java/side/onetime/dto/member/request/LoginMemberRequest.java b/src/main/java/side/onetime/dto/member/request/LoginMemberRequest.java index 438c4aa..d0ced20 100644 --- a/src/main/java/side/onetime/dto/member/request/LoginMemberRequest.java +++ b/src/main/java/side/onetime/dto/member/request/LoginMemberRequest.java @@ -11,4 +11,5 @@ public record LoginMemberRequest( @NotBlank(message = "Event ID는 필수 값입니다.") String eventId, @NotBlank(message = "이름은 필수 값입니다.") String name, @NotBlank(message = "PIN은 필수 값입니다.") String pin -) {} \ No newline at end of file +) { +} diff --git a/src/main/java/side/onetime/dto/member/request/RegisterMemberRequest.java b/src/main/java/side/onetime/dto/member/request/RegisterMemberRequest.java index c965413..200193c 100644 --- a/src/main/java/side/onetime/dto/member/request/RegisterMemberRequest.java +++ b/src/main/java/side/onetime/dto/member/request/RegisterMemberRequest.java @@ -28,4 +28,4 @@ public Member toEntity(Event event) { .pin(pin) .build(); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/dto/member/response/IsDuplicateResponse.java b/src/main/java/side/onetime/dto/member/response/IsDuplicateResponse.java index ea308f3..5b37502 100644 --- a/src/main/java/side/onetime/dto/member/response/IsDuplicateResponse.java +++ b/src/main/java/side/onetime/dto/member/response/IsDuplicateResponse.java @@ -12,4 +12,4 @@ public record IsDuplicateResponse( public static IsDuplicateResponse of(Boolean isPossible) { return new IsDuplicateResponse(isPossible); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/dto/member/response/LoginMemberResponse.java b/src/main/java/side/onetime/dto/member/response/LoginMemberResponse.java index 181de57..caf66b3 100644 --- a/src/main/java/side/onetime/dto/member/response/LoginMemberResponse.java +++ b/src/main/java/side/onetime/dto/member/response/LoginMemberResponse.java @@ -18,4 +18,4 @@ public static LoginMemberResponse of(Member member, Event event) { event.getCategory().name() ); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/dto/member/response/RegisterMemberResponse.java b/src/main/java/side/onetime/dto/member/response/RegisterMemberResponse.java index 2a84f90..1cf009c 100644 --- a/src/main/java/side/onetime/dto/member/response/RegisterMemberResponse.java +++ b/src/main/java/side/onetime/dto/member/response/RegisterMemberResponse.java @@ -18,4 +18,4 @@ public static RegisterMemberResponse of(Member member, Event event) { event.getCategory().name() ); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/dto/member/response/ScheduleResponse.java b/src/main/java/side/onetime/dto/member/response/ScheduleResponse.java index f3f713f..9643416 100644 --- a/src/main/java/side/onetime/dto/member/response/ScheduleResponse.java +++ b/src/main/java/side/onetime/dto/member/response/ScheduleResponse.java @@ -11,4 +11,5 @@ public record ScheduleResponse( String timePoint, List times -) {} \ No newline at end of file +) { +} diff --git a/src/main/java/side/onetime/dto/schedule/request/CreateDateScheduleRequest.java b/src/main/java/side/onetime/dto/schedule/request/CreateDateScheduleRequest.java index c94dd06..183a616 100644 --- a/src/main/java/side/onetime/dto/schedule/request/CreateDateScheduleRequest.java +++ b/src/main/java/side/onetime/dto/schedule/request/CreateDateScheduleRequest.java @@ -16,4 +16,5 @@ public record CreateDateScheduleRequest( @NotBlank(message = "Event ID는 필수 값입니다.") String eventId, String memberId, @JsonProperty("schedules") @NotNull(message = "스케줄 목록은 필수 값입니다.") List dateSchedules -) {} \ No newline at end of file +) { +} diff --git a/src/main/java/side/onetime/dto/schedule/request/CreateDayScheduleRequest.java b/src/main/java/side/onetime/dto/schedule/request/CreateDayScheduleRequest.java index 9d4d769..a690f38 100644 --- a/src/main/java/side/onetime/dto/schedule/request/CreateDayScheduleRequest.java +++ b/src/main/java/side/onetime/dto/schedule/request/CreateDayScheduleRequest.java @@ -16,4 +16,5 @@ public record CreateDayScheduleRequest( @NotBlank(message = "Event ID는 필수 값입니다.") String eventId, String memberId, @JsonProperty("schedules") @NotNull(message = "스케줄 목록은 필수 값입니다.") List daySchedules -) {} \ No newline at end of file +) { +} diff --git a/src/main/java/side/onetime/dto/schedule/request/GetFilteredSchedulesRequest.java b/src/main/java/side/onetime/dto/schedule/request/GetFilteredSchedulesRequest.java index 64f8e14..14d6eb1 100644 --- a/src/main/java/side/onetime/dto/schedule/request/GetFilteredSchedulesRequest.java +++ b/src/main/java/side/onetime/dto/schedule/request/GetFilteredSchedulesRequest.java @@ -13,4 +13,5 @@ public record GetFilteredSchedulesRequest( @NotBlank(message = "Event ID는 필수 값입니다.") String eventId, @NotNull(message = "이름 목록은 필수 값입니다.") List names -) {} \ No newline at end of file +) { +} diff --git a/src/main/java/side/onetime/dto/schedule/response/DateSchedule.java b/src/main/java/side/onetime/dto/schedule/response/DateSchedule.java index 4f78313..2570dd7 100644 --- a/src/main/java/side/onetime/dto/schedule/response/DateSchedule.java +++ b/src/main/java/side/onetime/dto/schedule/response/DateSchedule.java @@ -1,9 +1,9 @@ package side.onetime.dto.schedule.response; import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.PropertyNamingStrategies; import com.fasterxml.jackson.databind.annotation.JsonNaming; -import com.fasterxml.jackson.annotation.JsonProperty; import side.onetime.domain.Selection; import java.util.ArrayList; diff --git a/src/main/java/side/onetime/dto/schedule/response/DaySchedule.java b/src/main/java/side/onetime/dto/schedule/response/DaySchedule.java index c1f154a..0819c35 100644 --- a/src/main/java/side/onetime/dto/schedule/response/DaySchedule.java +++ b/src/main/java/side/onetime/dto/schedule/response/DaySchedule.java @@ -1,9 +1,9 @@ package side.onetime.dto.schedule.response; import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.PropertyNamingStrategies; import com.fasterxml.jackson.databind.annotation.JsonNaming; -import com.fasterxml.jackson.annotation.JsonProperty; import side.onetime.domain.Selection; import java.util.ArrayList; @@ -22,4 +22,4 @@ public static DaySchedule from(List selections) { } return new DaySchedule(selections.get(0).getSchedule().getDay(), times); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/dto/schedule/response/PerDaySchedulesResponse.java b/src/main/java/side/onetime/dto/schedule/response/PerDaySchedulesResponse.java index eb6042e..d12020b 100644 --- a/src/main/java/side/onetime/dto/schedule/response/PerDaySchedulesResponse.java +++ b/src/main/java/side/onetime/dto/schedule/response/PerDaySchedulesResponse.java @@ -16,4 +16,4 @@ public record PerDaySchedulesResponse( public static PerDaySchedulesResponse of(String name, List daySchedules) { return new PerDaySchedulesResponse(name, daySchedules); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/dto/token/request/ReissueTokenRequest.java b/src/main/java/side/onetime/dto/token/request/ReissueTokenRequest.java index 8a30ac4..ebc2397 100644 --- a/src/main/java/side/onetime/dto/token/request/ReissueTokenRequest.java +++ b/src/main/java/side/onetime/dto/token/request/ReissueTokenRequest.java @@ -9,4 +9,5 @@ @JsonInclude(JsonInclude.Include.NON_NULL) public record ReissueTokenRequest( @NotBlank(message = "리프레쉬 토큰은 필수 값입니다.") String refreshToken -) {} \ No newline at end of file +) { +} diff --git a/src/main/java/side/onetime/dto/token/response/ReissueTokenResponse.java b/src/main/java/side/onetime/dto/token/response/ReissueTokenResponse.java index d32787b..e079644 100644 --- a/src/main/java/side/onetime/dto/token/response/ReissueTokenResponse.java +++ b/src/main/java/side/onetime/dto/token/response/ReissueTokenResponse.java @@ -13,4 +13,4 @@ public record ReissueTokenResponse( public static ReissueTokenResponse of(String accessToken, String refreshToken) { return new ReissueTokenResponse(accessToken, refreshToken); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/dto/url/request/ConvertToOriginalUrlRequest.java b/src/main/java/side/onetime/dto/url/request/ConvertToOriginalUrlRequest.java index 214ca80..6ffc90d 100644 --- a/src/main/java/side/onetime/dto/url/request/ConvertToOriginalUrlRequest.java +++ b/src/main/java/side/onetime/dto/url/request/ConvertToOriginalUrlRequest.java @@ -9,4 +9,5 @@ @JsonInclude(JsonInclude.Include.NON_NULL) public record ConvertToOriginalUrlRequest( @NotBlank(message = "Shorten URL은 필수 값입니다.") String shortenUrl -) {} \ No newline at end of file +) { +} diff --git a/src/main/java/side/onetime/dto/url/request/ConvertToShortenUrlRequest.java b/src/main/java/side/onetime/dto/url/request/ConvertToShortenUrlRequest.java index 79a156c..305e40a 100644 --- a/src/main/java/side/onetime/dto/url/request/ConvertToShortenUrlRequest.java +++ b/src/main/java/side/onetime/dto/url/request/ConvertToShortenUrlRequest.java @@ -9,4 +9,5 @@ @JsonInclude(JsonInclude.Include.NON_NULL) public record ConvertToShortenUrlRequest( @NotBlank(message = "Original URL은 필수 값입니다.") String originalUrl -) {} \ No newline at end of file +) { +} diff --git a/src/main/java/side/onetime/dto/url/response/ConvertToOriginalUrlResponse.java b/src/main/java/side/onetime/dto/url/response/ConvertToOriginalUrlResponse.java index 5d5e4f7..44782ec 100644 --- a/src/main/java/side/onetime/dto/url/response/ConvertToOriginalUrlResponse.java +++ b/src/main/java/side/onetime/dto/url/response/ConvertToOriginalUrlResponse.java @@ -12,4 +12,4 @@ public record ConvertToOriginalUrlResponse( public static ConvertToOriginalUrlResponse of(String originalUrl) { return new ConvertToOriginalUrlResponse(originalUrl); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/dto/url/response/ConvertToShortenUrlResponse.java b/src/main/java/side/onetime/dto/url/response/ConvertToShortenUrlResponse.java index d9a5c38..2ef97d9 100644 --- a/src/main/java/side/onetime/dto/url/response/ConvertToShortenUrlResponse.java +++ b/src/main/java/side/onetime/dto/url/response/ConvertToShortenUrlResponse.java @@ -12,4 +12,4 @@ public record ConvertToShortenUrlResponse( public static ConvertToShortenUrlResponse of(String shortenUrl) { return new ConvertToShortenUrlResponse(shortenUrl); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/dto/user/request/OnboardUserRequest.java b/src/main/java/side/onetime/dto/user/request/OnboardUserRequest.java index 15dd35d..8649353 100644 --- a/src/main/java/side/onetime/dto/user/request/OnboardUserRequest.java +++ b/src/main/java/side/onetime/dto/user/request/OnboardUserRequest.java @@ -10,4 +10,5 @@ public record OnboardUserRequest( @NotBlank(message = "Register Token은 필수 값입니다.") String registerToken, @NotBlank(message = "Nickname은 필수 값입니다.") String nickname -) {} \ No newline at end of file +) { +} diff --git a/src/main/java/side/onetime/dto/user/request/UpdateUserProfileRequest.java b/src/main/java/side/onetime/dto/user/request/UpdateUserProfileRequest.java index ded1ffb..9ff4407 100644 --- a/src/main/java/side/onetime/dto/user/request/UpdateUserProfileRequest.java +++ b/src/main/java/side/onetime/dto/user/request/UpdateUserProfileRequest.java @@ -9,4 +9,5 @@ @JsonInclude(JsonInclude.Include.NON_NULL) public record UpdateUserProfileRequest( @NotBlank(message = "Nickname은 필수 값입니다.") String nickname -) {} \ No newline at end of file +) { +} diff --git a/src/main/java/side/onetime/dto/user/response/GetUserProfileResponse.java b/src/main/java/side/onetime/dto/user/response/GetUserProfileResponse.java index 66fc231..1f6aca4 100644 --- a/src/main/java/side/onetime/dto/user/response/GetUserProfileResponse.java +++ b/src/main/java/side/onetime/dto/user/response/GetUserProfileResponse.java @@ -14,4 +14,4 @@ public record GetUserProfileResponse( public static GetUserProfileResponse of(User user) { return new GetUserProfileResponse(user.getNickname(), user.getEmail()); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/dto/user/response/OnboardUserResponse.java b/src/main/java/side/onetime/dto/user/response/OnboardUserResponse.java index ce78901..78dbb12 100644 --- a/src/main/java/side/onetime/dto/user/response/OnboardUserResponse.java +++ b/src/main/java/side/onetime/dto/user/response/OnboardUserResponse.java @@ -13,4 +13,4 @@ public record OnboardUserResponse( public static OnboardUserResponse of(String accessToken, String refreshToken) { return new OnboardUserResponse(accessToken, refreshToken); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/exception/CustomException.java b/src/main/java/side/onetime/exception/CustomException.java index 9a03e27..4f9cf4d 100644 --- a/src/main/java/side/onetime/exception/CustomException.java +++ b/src/main/java/side/onetime/exception/CustomException.java @@ -22,4 +22,4 @@ public String getCode() { public HttpStatus getHttpStatus() { return errorCode.getReasonHttpStatus().getHttpStatus(); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/exception/GlobalExceptionHandler.java b/src/main/java/side/onetime/exception/GlobalExceptionHandler.java index c7f92fb..8ee0706 100644 --- a/src/main/java/side/onetime/exception/GlobalExceptionHandler.java +++ b/src/main/java/side/onetime/exception/GlobalExceptionHandler.java @@ -131,4 +131,4 @@ private String extractFieldErrors(List fieldErrors) { private void logError(String message, Object errorDetails) { log.error("{}: {}", message, errorDetails); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/exception/status/EventParticipationErrorStatus.java b/src/main/java/side/onetime/exception/status/EventParticipationErrorStatus.java index 447a4d1..d79e494 100644 --- a/src/main/java/side/onetime/exception/status/EventParticipationErrorStatus.java +++ b/src/main/java/side/onetime/exception/status/EventParticipationErrorStatus.java @@ -35,4 +35,4 @@ public ErrorReasonDto getReasonHttpStatus() { .message(message) .build(); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/exception/status/FixedErrorStatus.java b/src/main/java/side/onetime/exception/status/FixedErrorStatus.java index 8e767e9..f636cad 100644 --- a/src/main/java/side/onetime/exception/status/FixedErrorStatus.java +++ b/src/main/java/side/onetime/exception/status/FixedErrorStatus.java @@ -38,4 +38,4 @@ public ErrorReasonDto getReasonHttpStatus() { .message(message) .build(); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/exception/status/MemberErrorStatus.java b/src/main/java/side/onetime/exception/status/MemberErrorStatus.java index 0d4c788..9b7b5fc 100644 --- a/src/main/java/side/onetime/exception/status/MemberErrorStatus.java +++ b/src/main/java/side/onetime/exception/status/MemberErrorStatus.java @@ -37,4 +37,4 @@ public ErrorReasonDto getReasonHttpStatus() { .message(message) .build(); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/exception/status/ScheduleErrorStatus.java b/src/main/java/side/onetime/exception/status/ScheduleErrorStatus.java index 8bb98f4..44e9998 100644 --- a/src/main/java/side/onetime/exception/status/ScheduleErrorStatus.java +++ b/src/main/java/side/onetime/exception/status/ScheduleErrorStatus.java @@ -36,4 +36,4 @@ public ErrorReasonDto getReasonHttpStatus() { .message(message) .build(); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/exception/status/SelectionErrorStatus.java b/src/main/java/side/onetime/exception/status/SelectionErrorStatus.java index 87483d2..acdc487 100644 --- a/src/main/java/side/onetime/exception/status/SelectionErrorStatus.java +++ b/src/main/java/side/onetime/exception/status/SelectionErrorStatus.java @@ -34,4 +34,4 @@ public ErrorReasonDto getReasonHttpStatus() { .message(message) .build(); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/exception/status/TokenErrorStatus.java b/src/main/java/side/onetime/exception/status/TokenErrorStatus.java index 4edff09..15d2f73 100644 --- a/src/main/java/side/onetime/exception/status/TokenErrorStatus.java +++ b/src/main/java/side/onetime/exception/status/TokenErrorStatus.java @@ -37,4 +37,4 @@ public ErrorReasonDto getReasonHttpStatus() { .message(message) .build(); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/exception/status/UserErrorStatus.java b/src/main/java/side/onetime/exception/status/UserErrorStatus.java index 42f0a37..b7aa59a 100644 --- a/src/main/java/side/onetime/exception/status/UserErrorStatus.java +++ b/src/main/java/side/onetime/exception/status/UserErrorStatus.java @@ -35,4 +35,4 @@ public ErrorReasonDto getReasonHttpStatus() { .message(message) .build(); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/global/common/ApiResponse.java b/src/main/java/side/onetime/global/common/ApiResponse.java index f1744d9..01a0f3a 100644 --- a/src/main/java/side/onetime/global/common/ApiResponse.java +++ b/src/main/java/side/onetime/global/common/ApiResponse.java @@ -37,4 +37,4 @@ public static ResponseEntity onFailure(BaseErrorCode code, String me ApiResponse response = new ApiResponse<>(false, code.getReasonHttpStatus().getCode(), message, null); return ResponseEntity.status(code.getReasonHttpStatus().getHttpStatus()).body(response); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/global/common/code/BaseCode.java b/src/main/java/side/onetime/global/common/code/BaseCode.java index fe622d9..e4919e6 100644 --- a/src/main/java/side/onetime/global/common/code/BaseCode.java +++ b/src/main/java/side/onetime/global/common/code/BaseCode.java @@ -6,4 +6,4 @@ public interface BaseCode { public ReasonDto getReason(); public ReasonDto getReasonHttpStatus(); -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/global/common/code/BaseErrorCode.java b/src/main/java/side/onetime/global/common/code/BaseErrorCode.java index 59900e4..16b2464 100644 --- a/src/main/java/side/onetime/global/common/code/BaseErrorCode.java +++ b/src/main/java/side/onetime/global/common/code/BaseErrorCode.java @@ -6,4 +6,4 @@ public interface BaseErrorCode { public ErrorReasonDto getReason(); public ErrorReasonDto getReasonHttpStatus(); -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/global/common/dao/BaseEntity.java b/src/main/java/side/onetime/global/common/dao/BaseEntity.java index d7da2e9..b7f35af 100644 --- a/src/main/java/side/onetime/global/common/dao/BaseEntity.java +++ b/src/main/java/side/onetime/global/common/dao/BaseEntity.java @@ -1,6 +1,9 @@ package side.onetime.global.common.dao; -import jakarta.persistence.*; +import jakarta.persistence.Column; +import jakarta.persistence.Convert; +import jakarta.persistence.EntityListeners; +import jakarta.persistence.MappedSuperclass; import lombok.Getter; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; @@ -22,4 +25,4 @@ public abstract class BaseEntity { @Column @Convert(converter = Jsr310JpaConverters.LocalDateTimeConverter.class) private LocalDateTime updatedDate; -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/global/common/dto/ErrorReasonDto.java b/src/main/java/side/onetime/global/common/dto/ErrorReasonDto.java index 3d59c58..11549e3 100644 --- a/src/main/java/side/onetime/global/common/dto/ErrorReasonDto.java +++ b/src/main/java/side/onetime/global/common/dto/ErrorReasonDto.java @@ -11,4 +11,4 @@ public class ErrorReasonDto { private final boolean isSuccess; private final String code; private final String message; -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/global/common/dto/ReasonDto.java b/src/main/java/side/onetime/global/common/dto/ReasonDto.java index adc2ef1..6d8e06f 100644 --- a/src/main/java/side/onetime/global/common/dto/ReasonDto.java +++ b/src/main/java/side/onetime/global/common/dto/ReasonDto.java @@ -11,4 +11,4 @@ public class ReasonDto { private final boolean isSuccess; private final String code; private final String message; -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/global/common/status/ErrorStatus.java b/src/main/java/side/onetime/global/common/status/ErrorStatus.java index 0c3a7a0..a10c261 100644 --- a/src/main/java/side/onetime/global/common/status/ErrorStatus.java +++ b/src/main/java/side/onetime/global/common/status/ErrorStatus.java @@ -42,4 +42,4 @@ public ErrorReasonDto getReasonHttpStatus() { .message(message) .build(); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/global/config/JpaConfig.java b/src/main/java/side/onetime/global/config/JpaConfig.java index 929dd19..7cc1a42 100644 --- a/src/main/java/side/onetime/global/config/JpaConfig.java +++ b/src/main/java/side/onetime/global/config/JpaConfig.java @@ -6,4 +6,4 @@ @Configuration @EnableJpaAuditing public class JpaConfig { -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/global/config/QueryDslConfig.java b/src/main/java/side/onetime/global/config/QueryDslConfig.java index dd8e648..55b3ced 100644 --- a/src/main/java/side/onetime/global/config/QueryDslConfig.java +++ b/src/main/java/side/onetime/global/config/QueryDslConfig.java @@ -15,4 +15,4 @@ public class QueryDslConfig { public JPAQueryFactory jpaQueryFactory() { return new JPAQueryFactory(entityManager); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/global/config/SchedulerConfig.java b/src/main/java/side/onetime/global/config/SchedulerConfig.java index 2f18ecd..684c303 100644 --- a/src/main/java/side/onetime/global/config/SchedulerConfig.java +++ b/src/main/java/side/onetime/global/config/SchedulerConfig.java @@ -6,4 +6,4 @@ @Configuration @EnableScheduling public class SchedulerConfig { -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/global/config/SecurityConfig.java b/src/main/java/side/onetime/global/config/SecurityConfig.java index 586bfbf..09e46b8 100644 --- a/src/main/java/side/onetime/global/config/SecurityConfig.java +++ b/src/main/java/side/onetime/global/config/SecurityConfig.java @@ -76,4 +76,4 @@ public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Excepti return httpSecurity.build(); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/global/config/SwaggerConfig.java b/src/main/java/side/onetime/global/config/SwaggerConfig.java index f8de420..a6651be 100644 --- a/src/main/java/side/onetime/global/config/SwaggerConfig.java +++ b/src/main/java/side/onetime/global/config/SwaggerConfig.java @@ -70,4 +70,4 @@ public OpenAPI customOpenAPI() { return openAPI; } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/repository/EventParticipationRepository.java b/src/main/java/side/onetime/repository/EventParticipationRepository.java index 6d15e20..b69b7fb 100644 --- a/src/main/java/side/onetime/repository/EventParticipationRepository.java +++ b/src/main/java/side/onetime/repository/EventParticipationRepository.java @@ -11,4 +11,4 @@ public interface EventParticipationRepository extends JpaRepository findAllByEvent(Event event); List findAllByUser(User user); EventParticipation findByUserAndEvent(User user, Event event); -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/repository/EventRepository.java b/src/main/java/side/onetime/repository/EventRepository.java index 627c915..9910233 100644 --- a/src/main/java/side/onetime/repository/EventRepository.java +++ b/src/main/java/side/onetime/repository/EventRepository.java @@ -13,4 +13,4 @@ public interface EventRepository extends JpaRepository, EventReposit Optional findByEventId(UUID eventId); boolean existsByEventId(UUID eventId); List findByCreatedDateBefore(LocalDateTime twoWeeksAgo); -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/repository/FixedEventRepository.java b/src/main/java/side/onetime/repository/FixedEventRepository.java index c915949..a9e00e5 100644 --- a/src/main/java/side/onetime/repository/FixedEventRepository.java +++ b/src/main/java/side/onetime/repository/FixedEventRepository.java @@ -9,4 +9,4 @@ public interface FixedEventRepository extends JpaRepository, FixedEventRepositoryCustom { Optional findByUserAndId(User user, Long id); -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/repository/FixedScheduleRepository.java b/src/main/java/side/onetime/repository/FixedScheduleRepository.java index 62cba09..be5a6d5 100644 --- a/src/main/java/side/onetime/repository/FixedScheduleRepository.java +++ b/src/main/java/side/onetime/repository/FixedScheduleRepository.java @@ -8,4 +8,4 @@ public interface FixedScheduleRepository extends JpaRepository { Optional> findAllByDay(String day); -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/repository/FixedSelectionRepository.java b/src/main/java/side/onetime/repository/FixedSelectionRepository.java index e9c2e2d..b07f5e8 100644 --- a/src/main/java/side/onetime/repository/FixedSelectionRepository.java +++ b/src/main/java/side/onetime/repository/FixedSelectionRepository.java @@ -5,4 +5,4 @@ import side.onetime.repository.custom.FixedSelectionRepositoryCustom; public interface FixedSelectionRepository extends JpaRepository, FixedSelectionRepositoryCustom { -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/repository/MemberRepository.java b/src/main/java/side/onetime/repository/MemberRepository.java index 11e05fb..dc616c5 100644 --- a/src/main/java/side/onetime/repository/MemberRepository.java +++ b/src/main/java/side/onetime/repository/MemberRepository.java @@ -32,4 +32,4 @@ public interface MemberRepository extends JpaRepository { @Query("SELECT COUNT(m) FROM Member m WHERE m.event = :event") int countByEvent(@Param("event") Event event); -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/repository/RefreshTokenRepository.java b/src/main/java/side/onetime/repository/RefreshTokenRepository.java index d1686ed..6164710 100644 --- a/src/main/java/side/onetime/repository/RefreshTokenRepository.java +++ b/src/main/java/side/onetime/repository/RefreshTokenRepository.java @@ -14,30 +14,41 @@ @Repository @RequiredArgsConstructor public class RefreshTokenRepository { + @Value("${jwt.refresh-token.expiration-time}") - private long REFRESH_TOKEN_EXPIRATION_TIME; // 리프레쉬 토큰 유효기간 + private long REFRESH_TOKEN_EXPIRATION_TIME; // 리프레쉬 토큰 유효기간. - private static final int REFRESH_TOKEN_LIMIT = 5; // 최대 5개로 제한 + private static final int REFRESH_TOKEN_LIMIT = 5; // 최대 5개로 제한. private final RedisTemplate redisTemplate; - // RefreshToken 리스트에 새로운 토큰을 추가 + /** + * RefreshToken 저장 메서드. + * + * 유저 ID를 키로 하여 Redis에 RefreshToken 리스트를 저장합니다. + * 새로 추가된 토큰을 리스트의 맨 앞에 배치하며, 토큰 수를 최대 5개로 제한합니다. + * 저장된 키의 만료 시간은 리프레쉬 토큰의 유효기간에 맞춰 설정됩니다. + * + * @param refreshToken 저장할 RefreshToken 객체 + */ public void save(final RefreshToken refreshToken) { String key = "refreshToken:" + refreshToken.getUserId(); - // 맨 앞에 추가 redisTemplate.opsForList().leftPush(key, refreshToken.getRefreshToken()); - - // 가장 오래된 리프레쉬 토큰을 삭제 redisTemplate.opsForList().trim(key, 0, REFRESH_TOKEN_LIMIT - 1); - - // 만료 시간 설정 (전체 리스트의 키에 적용) redisTemplate.expire(key, REFRESH_TOKEN_EXPIRATION_TIME, TimeUnit.MILLISECONDS); } - // 유저 ID로 RefreshToken 리스트 조회 + /** + * 유저 ID로 RefreshToken 리스트 조회 메서드. + * + * 유저 ID를 기반으로 Redis에 저장된 RefreshToken 리스트를 조회합니다. + * 리스트가 없거나 비어 있을 경우 Optional.empty()를 반환합니다. + * + * @param userId 조회할 유저 ID + * @return RefreshToken 리스트를 포함하는 Optional 객체 + */ public Optional> findByUserId(final Long userId) { String key = "refreshToken:" + userId; - List refreshTokens = redisTemplate.opsForList().range(key, 0, -1); if (Objects.isNull(refreshTokens) || refreshTokens.isEmpty()) { diff --git a/src/main/java/side/onetime/repository/ScheduleRepository.java b/src/main/java/side/onetime/repository/ScheduleRepository.java index b50a31c..5bf1f96 100644 --- a/src/main/java/side/onetime/repository/ScheduleRepository.java +++ b/src/main/java/side/onetime/repository/ScheduleRepository.java @@ -11,4 +11,4 @@ public interface ScheduleRepository extends JpaRepository { Optional> findAllByEvent(Event event); Optional> findAllByEventAndDay(Event event, String day); Optional> findAllByEventAndDate(Event event, String date); -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/repository/SelectionRepository.java b/src/main/java/side/onetime/repository/SelectionRepository.java index db631c9..c30fe92 100644 --- a/src/main/java/side/onetime/repository/SelectionRepository.java +++ b/src/main/java/side/onetime/repository/SelectionRepository.java @@ -14,4 +14,4 @@ public interface SelectionRepository extends JpaRepository { List findAllSelectionsByEvent(@Param("event") Event event); @Query("SELECT COUNT(s) > 0 FROM Selection s WHERE s.user = :user AND s.schedule.event = :event") boolean existsByUserAndEventSchedules(@Param("user") User user, @Param("event") Event event); -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/repository/UserRepository.java b/src/main/java/side/onetime/repository/UserRepository.java index f22d4a1..10f7676 100644 --- a/src/main/java/side/onetime/repository/UserRepository.java +++ b/src/main/java/side/onetime/repository/UserRepository.java @@ -8,4 +8,4 @@ public interface UserRepository extends JpaRepository { Optional findById(Long id); User findByProviderId(String providerId); -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/repository/custom/EventRepositoryCustom.java b/src/main/java/side/onetime/repository/custom/EventRepositoryCustom.java index b3f2032..27cc87e 100644 --- a/src/main/java/side/onetime/repository/custom/EventRepositoryCustom.java +++ b/src/main/java/side/onetime/repository/custom/EventRepositoryCustom.java @@ -4,4 +4,4 @@ public interface EventRepositoryCustom { void deleteEvent(Event event); -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/repository/custom/EventRepositoryImpl.java b/src/main/java/side/onetime/repository/custom/EventRepositoryImpl.java index 521d29d..960c8e2 100644 --- a/src/main/java/side/onetime/repository/custom/EventRepositoryImpl.java +++ b/src/main/java/side/onetime/repository/custom/EventRepositoryImpl.java @@ -15,6 +15,15 @@ public class EventRepositoryImpl implements EventRepositoryCustom { private final JPAQueryFactory queryFactory; + /** + * 이벤트 삭제 메서드. + * + * 이벤트에 연결된 모든 관련 데이터를 삭제합니다. + * 삭제 순서는 외래 키 제약 조건을 고려하여, + * Selection → EventParticipation → Schedule → Member → Event 순으로 진행됩니다. + * + * @param e 삭제할 Event 객체 + */ @Override public void deleteEvent(Event e) { queryFactory.delete(selection) @@ -37,4 +46,4 @@ public void deleteEvent(Event e) { .where(event.eq(e)) .execute(); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/repository/custom/FixedEventRepositoryImpl.java b/src/main/java/side/onetime/repository/custom/FixedEventRepositoryImpl.java index 975fefa..a8bec82 100644 --- a/src/main/java/side/onetime/repository/custom/FixedEventRepositoryImpl.java +++ b/src/main/java/side/onetime/repository/custom/FixedEventRepositoryImpl.java @@ -17,7 +17,13 @@ public class FixedEventRepositoryImpl implements FixedEventRepositoryCustom { private final JPAQueryFactory queryFactory; - // 유저 고정 스케줄 목록 조회 + /** + * 유저 고정 스케줄 목록 조회 메서드. + * + * 특정 유저의 모든 고정 이벤트 및 관련 고정 선택, 고정 스케줄 데이터를 조회합니다. + * @param user 조회할 유저 객체 + * @return 유저의 고정 이벤트 리스트 + */ @Override @Transactional(readOnly = true) public List findAllByUser(User user) { @@ -30,7 +36,15 @@ public List findAllByUser(User user) { .fetch(); } - // 특정 고정 스케줄 상세 조회 + /** + * 특정 고정 스케줄 상세 조회 메서드. + * + * 특정 유저와 고정 이벤트 ID를 기반으로 고정 이벤트 데이터를 조회합니다. + * 고정 이벤트와 관련된 고정 선택 및 고정 스케줄 데이터를 포함하여 반환합니다. + * @param user 조회할 유저 객체 + * @param fixedEventId 조회할 고정 이벤트 ID + * @return 고정 이벤트 객체 + */ @Override @Transactional(readOnly = true) public FixedEvent findByUserAndFixedEventIdCustom(User user, Long fixedEventId) { @@ -44,7 +58,14 @@ public FixedEvent findByUserAndFixedEventIdCustom(User user, Long fixedEventId) .fetchOne(); } - // 고정 이벤트 & 스케줄 삭제 + /** + * 고정 이벤트 및 스케줄 삭제 메서드. + * + * 특정 유저와 고정 이벤트 ID를 기반으로 고정 선택 데이터를 먼저 삭제하고, + * 이후 고정 이벤트 데이터를 삭제합니다. + * @param user 삭제할 유저 객체 + * @param fixedEventId 삭제할 고정 이벤트 ID + */ @Override @Transactional public void deleteFixedEventAndSelections(User user, Long fixedEventId) { @@ -61,7 +82,15 @@ public void deleteFixedEventAndSelections(User user, Long fixedEventId) { .execute(); } - // 요일 별 고정 이벤트 조회 + /** + * 요일별 고정 이벤트 조회 메서드. + * + * 특정 유저와 요일을 기준으로 고정 이벤트 데이터를 조회합니다. + * 고정 이벤트와 관련된 고정 선택 및 고정 스케줄 데이터를 포함하여 반환합니다. + * @param user 조회할 유저 객체 + * @param day 조회할 요일 (예: "월", "화" 등) + * @return 요일에 해당하는 고정 이벤트 리스트 + */ @Override @Transactional(readOnly = true) public List findFixedEventsByUserAndDay(User user, String day) { diff --git a/src/main/java/side/onetime/repository/custom/FixedSelectionRepositoryCustom.java b/src/main/java/side/onetime/repository/custom/FixedSelectionRepositoryCustom.java index 4090ae4..105ba23 100644 --- a/src/main/java/side/onetime/repository/custom/FixedSelectionRepositoryCustom.java +++ b/src/main/java/side/onetime/repository/custom/FixedSelectionRepositoryCustom.java @@ -4,4 +4,4 @@ public interface FixedSelectionRepositoryCustom { void deleteFixedSelectionsByEvent(FixedEvent fixedEvent); -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/repository/custom/FixedSelectionRepositoryImpl.java b/src/main/java/side/onetime/repository/custom/FixedSelectionRepositoryImpl.java index be0ed32..d1dd857 100644 --- a/src/main/java/side/onetime/repository/custom/FixedSelectionRepositoryImpl.java +++ b/src/main/java/side/onetime/repository/custom/FixedSelectionRepositoryImpl.java @@ -11,11 +11,16 @@ public class FixedSelectionRepositoryImpl implements FixedSelectionRepositoryCus private final JPAQueryFactory queryFactory; - // 고정 이벤트 기반 고정 선택 스케줄 삭제 + /** + * 고정 이벤트 기반 고정 선택 스케줄 삭제 메서드. + * + * 주어진 고정 이벤트에 연결된 모든 고정 선택 데이터를 삭제합니다. + * @param fixedEvent 삭제할 고정 선택 데이터의 기준이 되는 고정 이벤트 객체 + */ @Override public void deleteFixedSelectionsByEvent(FixedEvent fixedEvent) { queryFactory.delete(fixedSelection) .where(fixedSelection.fixedEvent.eq(fixedEvent)) .execute(); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/service/EventCleanupScheduler.java b/src/main/java/side/onetime/service/EventCleanupScheduler.java index 5dd8d27..3efd8ac 100644 --- a/src/main/java/side/onetime/service/EventCleanupScheduler.java +++ b/src/main/java/side/onetime/service/EventCleanupScheduler.java @@ -16,13 +16,19 @@ public class EventCleanupScheduler { private final EventRepository eventRepository; + /** + * 오래된 이벤트 삭제 스케줄러. + * + * 매일 정해진 시간에 실행되어, 30일 이상 지난 이벤트 데이터를 삭제합니다. + * 삭제 기준은 이벤트 생성일(createdDate)이며, cron 표현식은 설정 파일에 정의됩니다. + */ @Scheduled(cron = "${scheduling.cron}") @Transactional public void deleteOldEvents() { LocalDateTime thirtyDaysAgo = LocalDateTime.now().minusDays(30); - // 30일 이상 지난 이벤트를 찾은 후 삭제 + // 30일 이상 지난 이벤트를 찾은 후 삭제. List oldEvents = eventRepository.findByCreatedDateBefore(thirtyDaysAgo); oldEvents.forEach(eventRepository::deleteEvent); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/service/MemberService.java b/src/main/java/side/onetime/service/MemberService.java index 5a31c29..97109f6 100644 --- a/src/main/java/side/onetime/service/MemberService.java +++ b/src/main/java/side/onetime/service/MemberService.java @@ -31,12 +31,21 @@ @Service @RequiredArgsConstructor public class MemberService { + private final EventRepository eventRepository; private final MemberRepository memberRepository; private final SelectionRepository selectionRepository; private final ScheduleRepository scheduleRepository; - // 멤버 등록 메서드 + /** + * 멤버 등록 메서드. + * + * 주어진 요청 데이터를 기반으로 멤버를 등록합니다. + * 등록된 멤버의 요일 또는 날짜 선택 데이터를 생성하여 저장합니다. + * + * @param registerMemberRequest 멤버 등록 요청 데이터 + * @return 멤버 등록 응답 데이터 + */ @Transactional public RegisterMemberResponse registerMember(RegisterMemberRequest registerMemberRequest) { UUID eventId = UUID.fromString(registerMemberRequest.eventId()); @@ -61,7 +70,16 @@ public RegisterMemberResponse registerMember(RegisterMemberRequest registerMembe return RegisterMemberResponse.of(member, event); } - // 멤버 요일 선택 목록을 만드는 메서드 + /** + * 멤버 요일 선택 목록 생성 메서드. + * + * 멤버가 선택한 요일과 시간을 기반으로 Selection 데이터를 생성합니다. + * + * @param event 이벤트 객체 + * @param member 멤버 객체 + * @param registerMemberRequest 멤버 등록 요청 데이터 + * @return 생성된 Selection 리스트 + */ private List createMembersDaySelections(Event event, Member member, RegisterMemberRequest registerMemberRequest) { List schedules = registerMemberRequest.schedules(); List selections = new ArrayList<>(); @@ -83,7 +101,16 @@ private List createMembersDaySelections(Event event, Member member, R return selections; } - // 멤버 날짜 선택 목록을 만드는 메서드 + /** + * 멤버 날짜 선택 목록 생성 메서드. + * + * 멤버가 선택한 날짜와 시간을 기반으로 Selection 데이터를 생성합니다. + * + * @param event 이벤트 객체 + * @param member 멤버 객체 + * @param registerMemberRequest 멤버 등록 요청 데이터 + * @return 생성된 Selection 리스트 + */ private List createMembersDateSelections(Event event, Member member, RegisterMemberRequest registerMemberRequest) { List schedules = registerMemberRequest.schedules(); List selections = new ArrayList<>(); @@ -105,7 +132,14 @@ private List createMembersDateSelections(Event event, Member member, return selections; } - // 멤버 로그인 메서드 + /** + * 멤버 로그인 메서드. + * + * 주어진 요청 데이터를 기반으로 멤버를 조회하여 로그인 처리합니다. + * + * @param loginMemberRequest 멤버 로그인 요청 데이터 + * @return 멤버 로그인 응답 데이터 + */ @Transactional(readOnly = true) public LoginMemberResponse loginMember(LoginMemberRequest loginMemberRequest) { UUID eventId = UUID.fromString(loginMemberRequest.eventId()); @@ -118,7 +152,14 @@ public LoginMemberResponse loginMember(LoginMemberRequest loginMemberRequest) { return LoginMemberResponse.of(member, event); } - // 멤버 이름 중복 체크 메서드 + /** + * 멤버 이름 중복 체크 메서드. + * + * 주어진 이벤트와 이름을 기반으로 멤버 이름이 중복되는지 확인합니다. + * + * @param isDuplicateRequest 중복 체크 요청 데이터 + * @return 중복 여부를 나타내는 응답 데이터 + */ @Transactional(readOnly = true) public IsDuplicateResponse isDuplicate(IsDuplicateRequest isDuplicateRequest) { UUID eventId = UUID.fromString(isDuplicateRequest.eventId()); @@ -126,4 +167,4 @@ public IsDuplicateResponse isDuplicate(IsDuplicateRequest isDuplicateRequest) { .orElseThrow(() -> new CustomException(EventErrorStatus._NOT_FOUND_EVENT)); return IsDuplicateResponse.of(!memberRepository.existsByEventAndName(event, isDuplicateRequest.name())); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/service/ScheduleService.java b/src/main/java/side/onetime/service/ScheduleService.java index 23fc331..d257e68 100644 --- a/src/main/java/side/onetime/service/ScheduleService.java +++ b/src/main/java/side/onetime/service/ScheduleService.java @@ -34,7 +34,14 @@ public class ScheduleService { private final JwtUtil jwtUtil; private final EventService eventService; - // 요일 스케줄 등록 메서드 (비로그인) + /** + * 요일 스케줄 등록 메서드 (비로그인). + * + * 비로그인 사용자가 요일 스케줄을 등록합니다. + * 기존 Selection 데이터를 삭제하고 새 Selection 데이터를 저장합니다. + * + * @param createDayScheduleRequest 요일 스케줄 등록 요청 데이터 + */ @Transactional public void createDaySchedulesForAnonymousUser(CreateDayScheduleRequest createDayScheduleRequest) { Event event = eventRepository.findByEventId(UUID.fromString(createDayScheduleRequest.eventId())) @@ -64,7 +71,15 @@ public void createDaySchedulesForAnonymousUser(CreateDayScheduleRequest createDa selectionRepository.saveAll(selections); } - // 요일 스케줄 등록 메서드 (로그인) + /** + * 요일 스케줄 등록 메서드 (로그인). + * + * 로그인 사용자가 요일 스케줄을 등록합니다. + * 기존 Selection 데이터를 삭제하고 새 Selection 데이터를 저장합니다. + * + * @param createDayScheduleRequest 요일 스케줄 등록 요청 데이터 + * @param authorizationHeader 사용자 인증 토큰 + */ @Transactional public void createDaySchedulesForAuthenticatedUser(CreateDayScheduleRequest createDayScheduleRequest, String authorizationHeader) { Event event = eventRepository.findByEventId(UUID.fromString(createDayScheduleRequest.eventId())) @@ -106,7 +121,14 @@ public void createDaySchedulesForAuthenticatedUser(CreateDayScheduleRequest crea selectionRepository.saveAll(newSelections); } - // 날짜 스케줄 등록 메서드 (비로그인) + /** + * 날짜 스케줄 등록 메서드 (비로그인). + * + * 비로그인 사용자가 날짜 스케줄을 등록합니다. + * 기존 Selection 데이터를 삭제하고 새 Selection 데이터를 저장합니다. + * + * @param createDateScheduleRequest 날짜 스케줄 등록 요청 데이터 + */ @Transactional public void createDateSchedulesForAnonymousUser(CreateDateScheduleRequest createDateScheduleRequest) { Event event = eventRepository.findByEventId(UUID.fromString(createDateScheduleRequest.eventId())) @@ -136,7 +158,15 @@ public void createDateSchedulesForAnonymousUser(CreateDateScheduleRequest create selectionRepository.saveAll(selections); } - // 날짜 스케줄 등록 메서드 (로그인) + /** + * 날짜 스케줄 등록 메서드 (로그인). + * + * 로그인 사용자가 날짜 스케줄을 등록합니다. + * 기존 Selection 데이터를 삭제하고 새 Selection 데이터를 저장합니다. + * + * @param createDateScheduleRequest 날짜 스케줄 등록 요청 데이터 + * @param authorizationHeader 사용자 인증 토큰 + */ @Transactional public void createDateSchedulesForAuthenticatedUser(CreateDateScheduleRequest createDateScheduleRequest, String authorizationHeader) { Event event = eventRepository.findByEventId(UUID.fromString(createDateScheduleRequest.eventId())) @@ -181,7 +211,14 @@ public void createDateSchedulesForAuthenticatedUser(CreateDateScheduleRequest cr selectionRepository.saveAll(newSelections); } - // 전체 요일 스케줄 반환 메서드 + /** + * 전체 요일 스케줄 반환 메서드. + * + * 이벤트에 참여하는 모든 사용자(멤버와 유저)의 요일 스케줄을 반환합니다. + * + * @param eventId 조회할 이벤트 ID + * @return 요일별 스케줄 응답 리스트 + */ @Transactional(readOnly = true) public List getAllDaySchedules(String eventId) { Event event = eventRepository.findByEventId(UUID.fromString(eventId)) @@ -237,7 +274,15 @@ public List getAllDaySchedules(String eventId) { return perDaySchedulesResponses; } - // 개인 요일 스케줄 반환 메서드 (비로그인) + /** + * 개인 요일 스케줄 반환 메서드 (비로그인). + * + * 비로그인 사용자의 개인 요일 스케줄을 반환합니다. + * + * @param eventId 조회할 이벤트 ID + * @param memberId 조회할 멤버 ID + * @return 개인 요일 스케줄 응답 + */ @Transactional(readOnly = true) public PerDaySchedulesResponse getMemberDaySchedules(String eventId, String memberId) { Event event = eventRepository.findByEventId(UUID.fromString(eventId)) @@ -260,7 +305,15 @@ public PerDaySchedulesResponse getMemberDaySchedules(String eventId, String memb return PerDaySchedulesResponse.of(member.getName(), daySchedules); } - // 개인 요일 스케줄 반환 메서드 (로그인) + /** + * 개인 요일 스케줄 반환 메서드 (로그인). + * + * 로그인 사용자의 개인 요일 스케줄을 반환합니다. + * + * @param eventId 조회할 이벤트 ID + * @param authorizationHeader 사용자 인증 토큰 + * @return 개인 요일 스케줄 응답 + */ @Transactional(readOnly = true) public PerDaySchedulesResponse getUserDaySchedules(String eventId, String authorizationHeader) { Event event = eventRepository.findByEventId(UUID.fromString(eventId)) @@ -283,7 +336,14 @@ public PerDaySchedulesResponse getUserDaySchedules(String eventId, String author return PerDaySchedulesResponse.of(user.getNickname(), daySchedules); } - // 전체 날짜 스케줄 반환 메서드 + /** + * 전체 날짜 스케줄 반환 메서드. + * + * 이벤트에 참여하는 모든 사용자(멤버와 유저)의 날짜 스케줄을 반환합니다. + * + * @param eventId 조회할 이벤트 ID + * @return 날짜별 스케줄 응답 리스트 + */ @Transactional(readOnly = true) public List getAllDateSchedules(String eventId) { Event event = eventRepository.findByEventId(UUID.fromString(eventId)) @@ -339,7 +399,15 @@ public List getAllDateSchedules(String eventId) { return perDateSchedulesResponses; } - // 개인 날짜 스케줄 반환 메서드 (비로그인) + /** + * 개인 날짜 스케줄 반환 메서드 (비로그인). + * + * 비로그인 사용자의 개인 날짜 스케줄을 반환합니다. + * + * @param eventId 조회할 이벤트 ID + * @param memberId 조회할 멤버 ID + * @return 개인 날짜 스케줄 응답 + */ @Transactional(readOnly = true) public PerDateSchedulesResponse getMemberDateSchedules(String eventId, String memberId) { Event event = eventRepository.findByEventId(UUID.fromString(eventId)) @@ -362,7 +430,15 @@ public PerDateSchedulesResponse getMemberDateSchedules(String eventId, String me return PerDateSchedulesResponse.of(member.getName(), dateSchedules); } - // 개인 날짜 스케줄 반환 메서드 (로그인) + /** + * 개인 날짜 스케줄 반환 메서드 (로그인). + * + * 로그인 사용자의 개인 날짜 스케줄을 반환합니다. + * + * @param eventId 조회할 이벤트 ID + * @param authorizationHeader 사용자 인증 토큰 + * @return 개인 날짜 스케줄 응답 + */ @Transactional(readOnly = true) public PerDateSchedulesResponse getUserDateSchedules(String eventId, String authorizationHeader) { Event event = eventRepository.findByEventId(UUID.fromString(eventId)) @@ -385,7 +461,14 @@ public PerDateSchedulesResponse getUserDateSchedules(String eventId, String auth return PerDateSchedulesResponse.of(user.getNickname(), dateSchedules); } - // 멤버 필터링 요일 스케줄 반환 메서드 + /** + * 멤버 필터링 요일 스케줄 반환 메서드. + * + * 주어진 이름 필터에 해당하는 멤버들의 요일 스케줄을 반환합니다. + * + * @param getFilteredSchedulesRequest 필터링 요청 데이터 + * @return 필터링된 요일 스케줄 응답 리스트 + */ @Transactional(readOnly = true) public List getFilteredDaySchedules(GetFilteredSchedulesRequest getFilteredSchedulesRequest) { Event event = eventRepository.findByEventId(UUID.fromString(getFilteredSchedulesRequest.eventId())) @@ -411,7 +494,14 @@ public List getFilteredDaySchedules(GetFilteredSchedule return perDaySchedulesResponses; } - // 멤버 필터링 날짜 스케줄 반환 메서드 + /** + * 멤버 필터링 날짜 스케줄 반환 메서드. + * + * 주어진 이름 필터에 해당하는 멤버들의 날짜 스케줄을 반환합니다. + * + * @param getFilteredSchedulesRequest 필터링 요청 데이터 + * @return 필터링된 날짜 스케줄 응답 리스트 + */ @Transactional(readOnly = true) public List getFilteredDateSchedules(GetFilteredSchedulesRequest getFilteredSchedulesRequest) { Event event = eventRepository.findByEventId(UUID.fromString(getFilteredSchedulesRequest.eventId())) @@ -436,4 +526,4 @@ public List getFilteredDateSchedules(GetFilteredSchedu } return perDateSchedulesResponses; } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/service/TokenService.java b/src/main/java/side/onetime/service/TokenService.java index 78c9941..58eef81 100644 --- a/src/main/java/side/onetime/service/TokenService.java +++ b/src/main/java/side/onetime/service/TokenService.java @@ -20,15 +20,23 @@ public class TokenService { @Value("${jwt.access-token.expiration-time}") - private long ACCESS_TOKEN_EXPIRATION_TIME; // 액세스 토큰 유효기간 + private long ACCESS_TOKEN_EXPIRATION_TIME; // 액세스 토큰 유효기간. @Value("${jwt.refresh-token.expiration-time}") - private long REFRESH_TOKEN_EXPIRATION_TIME; // 리프레쉬 토큰 유효기간 + private long REFRESH_TOKEN_EXPIRATION_TIME; // 리프레쉬 토큰 유효기간. private final RefreshTokenRepository refreshTokenRepository; private final JwtUtil jwtUtil; - // 액세스 & 리프레쉬 토큰 재발행 메서드 + /** + * 액세스 및 리프레쉬 토큰 재발행 메서드. + * + * 주어진 리프레쉬 토큰을 검증하고, 새로운 액세스 토큰과 리프레쉬 토큰을 생성 및 반환합니다. + * 새로운 리프레쉬 토큰은 저장소에 저장되며, 기존 리프레쉬 토큰은 삭제됩니다. + * + * @param reissueTokenRequest 토큰 재발행 요청 데이터 + * @return 새로운 액세스 토큰 및 리프레쉬 토큰을 포함한 응답 데이터 + */ public ReissueTokenResponse reissueToken(ReissueTokenRequest reissueTokenRequest) { String refreshToken = reissueTokenRequest.refreshToken(); @@ -37,18 +45,18 @@ public ReissueTokenResponse reissueToken(ReissueTokenRequest reissueTokenRequest .orElseThrow(() -> new CustomException(TokenErrorStatus._NOT_FOUND_REFRESH_TOKEN)); if (!existRefreshTokens.contains(refreshToken)) { - // RefreshToken이 존재하지 않으면 예외 발생 + // RefreshToken이 존재하지 않으면 예외 발생. throw new CustomException(TokenErrorStatus._NOT_FOUND_REFRESH_TOKEN); } - // 새로운 AccessToken 생성 + // 새로운 AccessToken 생성. String newAccessToken = jwtUtil.generateAccessToken(userId, ACCESS_TOKEN_EXPIRATION_TIME); - // 새로운 RefreshToken 생성 및 저장 + // 새로운 RefreshToken 생성 및 저장. String newRefreshToken = jwtUtil.generateRefreshToken(userId, REFRESH_TOKEN_EXPIRATION_TIME); refreshTokenRepository.save(new RefreshToken(userId, newRefreshToken)); log.info("토큰 재발행에 성공하였습니다."); return ReissueTokenResponse.of(newAccessToken, newRefreshToken); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/service/UrlService.java b/src/main/java/side/onetime/service/UrlService.java index 3bc0019..fe4ce73 100644 --- a/src/main/java/side/onetime/service/UrlService.java +++ b/src/main/java/side/onetime/service/UrlService.java @@ -16,9 +16,19 @@ @Service @RequiredArgsConstructor public class UrlService { + private final EventRepository eventRepository; - // URL 단축 메서드 + /** + * URL 단축 메서드. + * + * 주어진 원본 URL을 단축 URL로 변환합니다. + * 변환된 URL은 Base62 인코딩 방식으로 생성됩니다. + * URL에서 추출된 이벤트 ID가 유효한 이벤트인지 확인합니다. + * + * @param convertToShortenUrlRequest 단축 URL 요청 데이터 + * @return 단축 URL 응답 데이터 + */ public ConvertToShortenUrlResponse convertToShortenUrl(ConvertToShortenUrlRequest convertToShortenUrlRequest) { String originalUrl = convertToShortenUrlRequest.originalUrl(); @@ -30,7 +40,15 @@ public ConvertToShortenUrlResponse convertToShortenUrl(ConvertToShortenUrlReques return ConvertToShortenUrlResponse.of(Base62Util.convertToShortenUrl(originalUrl)); } - // URL 복원 메서드 + /** + * URL 복원 메서드. + * + * 주어진 단축 URL을 원본 URL로 복원합니다. + * 복원된 URL에서 추출된 이벤트 ID가 유효한 이벤트인지 확인합니다. + * + * @param convertToOriginalUrlRequest 원본 URL 요청 데이터 + * @return 원본 URL 응답 데이터 + */ public ConvertToOriginalUrlResponse convertToOriginalUrl(ConvertToOriginalUrlRequest convertToOriginalUrlRequest) { String shortenUrl = convertToOriginalUrlRequest.shortenUrl(); String originalUrl = Base62Util.convertToOriginalUrl(shortenUrl); @@ -43,9 +61,16 @@ public ConvertToOriginalUrlResponse convertToOriginalUrl(ConvertToOriginalUrlReq return ConvertToOriginalUrlResponse.of(originalUrl); } - // URL에서 Event ID 추출 + /** + * URL에서 Event ID 추출 메서드. + * + * 주어진 URL에서 마지막 부분에 포함된 이벤트 ID를 추출합니다. + * + * @param url 이벤트 ID를 추출할 URL + * @return 추출된 이벤트 ID + */ private UUID extractEventIdFromUrl(String url) { String[] parts = url.split("/"); return UUID.fromString(parts[parts.length - 1]); } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/service/UserService.java b/src/main/java/side/onetime/service/UserService.java index 2e17219..95cc7c3 100644 --- a/src/main/java/side/onetime/service/UserService.java +++ b/src/main/java/side/onetime/service/UserService.java @@ -32,7 +32,15 @@ public class UserService { private final UserRepository userRepository; private final JwtUtil jwtUtil; - // 유저 온보딩 메서드 + /** + * 유저 온보딩 메서드. + * + * 회원가입 및 초기 설정을 진행합니다. 제공된 레지스터 토큰을 이용하여 유저 정보를 검증하고 저장합니다. + * 저장된 유저 정보를 기반으로 새로운 액세스 토큰과 리프레쉬 토큰을 생성하고 반환합니다. + * + * @param onboardUserRequest 온보딩 요청 데이터 + * @return 액세스 토큰 및 리프레쉬 토큰 응답 데이터 + */ @Transactional public OnboardUserResponse onboardUser(OnboardUserRequest onboardUserRequest) { // 레지스터 토큰을 이용하여 사용자 정보 추출 @@ -69,7 +77,14 @@ public OnboardUserResponse onboardUser(OnboardUserRequest onboardUserRequest) { return OnboardUserResponse.of(accessToken, refreshToken); } - // 유저 정보 조회 메서드 + /** + * 유저 정보 조회 메서드. + * + * 인증된 유저의 프로필 정보를 반환합니다. + * + * @param authorizationHeader 인증 토큰 + * @return 유저 프로필 응답 데이터 + */ @Transactional(readOnly = true) public GetUserProfileResponse getUserProfile(String authorizationHeader) { User user = jwtUtil.getUserFromHeader(authorizationHeader); @@ -77,7 +92,15 @@ public GetUserProfileResponse getUserProfile(String authorizationHeader) { return GetUserProfileResponse.of(user); } - // 유저 정보 수정 메서드 + /** + * 유저 정보 수정 메서드. + * + * 인증된 유저의 닉네임을 수정합니다. + * 수정된 닉네임은 길이 제한을 검증하며 저장됩니다. + * + * @param authorizationHeader 인증 토큰 + * @param updateUserProfileRequest 유저 정보 수정 요청 데이터 + */ @Transactional public void updateUserProfile(String authorizationHeader, UpdateUserProfileRequest updateUserProfileRequest) { User user = jwtUtil.getUserFromHeader(authorizationHeader); @@ -90,7 +113,13 @@ public void updateUserProfile(String authorizationHeader, UpdateUserProfileReque userRepository.save(user); } - // 유저 서비스 탈퇴 메서드 + /** + * 유저 서비스 탈퇴 메서드. + * + * 인증된 유저의 계정을 삭제합니다. + * + * @param authorizationHeader 인증 토큰 + */ @Transactional public void withdrawService(String authorizationHeader) { User user = jwtUtil.getUserFromHeader(authorizationHeader); diff --git a/src/main/java/side/onetime/util/Base62Util.java b/src/main/java/side/onetime/util/Base62Util.java index ee09fa1..1a68118 100644 --- a/src/main/java/side/onetime/util/Base62Util.java +++ b/src/main/java/side/onetime/util/Base62Util.java @@ -9,7 +9,14 @@ public class Base62Util { private static final String SHORTEN_DOMAIN = "https://1-ti.me/"; private static final String ORIGINAL_DOMAIN = "https://www.onetime-with-members.com/"; - // Base62로 인코딩하는 메서드 + /** + * Base62로 인코딩하는 메서드. + * + * 주어진 숫자를 Base62 문자열로 변환합니다. + * + * @param number 변환할 숫자 (BigInteger) + * @return Base62로 인코딩된 문자열 + */ public static String encodeToBase62(BigInteger number) { if (number.equals(BigInteger.ZERO)) { return Character.toString(BASE62_CHARS.charAt(0)); @@ -25,7 +32,14 @@ public static String encodeToBase62(BigInteger number) { return sb.reverse().toString(); } - // Base62로 디코딩하는 메서드 + /** + * Base62로 디코딩하는 메서드. + * + * 주어진 Base62 문자열을 숫자(BigInteger)로 변환합니다. + * + * @param encodedString 디코딩할 Base62 문자열 + * @return 디코딩된 숫자 (BigInteger) + */ public static BigInteger decodeFromBase62(String encodedString) { BigInteger result = BigInteger.ZERO; BigInteger base = BigInteger.valueOf(62); @@ -35,7 +49,14 @@ public static BigInteger decodeFromBase62(String encodedString) { return result; } - // 원본 -> 단축 URL 변환 + /** + * 원본 URL을 단축 URL로 변환하는 메서드. + * + * 주어진 원본 URL에서 고유 식별자를 추출한 후, Base62로 인코딩하여 단축 URL을 생성합니다. + * + * @param originalUrl 단축할 원본 URL + * @return 단축된 URL + */ public static String convertToShortenUrl(String originalUrl) { // 마지막 부분 고유 식별자 추출 String[] parts = originalUrl.split("/"); @@ -48,7 +69,14 @@ public static String convertToShortenUrl(String originalUrl) { return SHORTEN_DOMAIN + encodedPart; } - // 단축 -> 원본 URL 변환 + /** + * 단축 URL을 원본 URL로 복원하는 메서드. + * + * 주어진 단축 URL에서 고유 인코딩된 부분을 추출한 후, 디코딩하여 원본 URL을 복원합니다. + * + * @param shortenUrl 복원할 단축 URL + * @return 복원된 원본 URL + */ public static String convertToOriginalUrl(String shortenUrl) { // 마지막 고유 인코딩된 부분 추출 String[] parts = shortenUrl.split("/"); @@ -73,4 +101,4 @@ public static String convertToOriginalUrl(String shortenUrl) { return ORIGINAL_DOMAIN + "events/" + restoredPart; } -} \ No newline at end of file +} diff --git a/src/main/java/side/onetime/util/DateUtil.java b/src/main/java/side/onetime/util/DateUtil.java index d03b371..3de011c 100644 --- a/src/main/java/side/onetime/util/DateUtil.java +++ b/src/main/java/side/onetime/util/DateUtil.java @@ -18,7 +18,16 @@ @RequiredArgsConstructor public class DateUtil { - // 30분 단위 타임 셋을 만드는 메서드 + /** + * 30분 단위 타임 셋 생성 메서드. + * + * 주어진 시작 시간과 종료 시간 사이의 모든 30분 간격의 시간을 리스트로 반환합니다. + * 종료 시간이 "24:00"인 경우 처리하여 23:30까지 포함합니다. + * + * @param start 시작 시간 (HH:mm 형식) + * @param end 종료 시간 (HH:mm 형식) + * @return 30분 간격의 시간 리스트 + */ public static List createTimeSets(String start, String end) { List timeSets = new ArrayList<>(); @@ -43,7 +52,16 @@ public static List createTimeSets(String start, String end) { return timeSets; } - // 날짜를 정렬된 문자열 리스트로 변환하는 메서드 + /** + * 날짜 리스트 정렬 메서드. + * + * 주어진 날짜 문자열 리스트를 지정된 패턴에 따라 파싱 후 정렬하여 반환합니다. + * 중복된 날짜는 제거합니다. + * + * @param dateStrings 날짜 문자열 리스트 + * @param pattern 날짜 형식 패턴 (예: yyyy.MM.dd) + * @return 정렬된 날짜 문자열 리스트 + */ public static List getSortedDateRanges(List dateStrings, String pattern) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); @@ -63,7 +81,15 @@ public static List getSortedDateRanges(List dateStrings, String .toList(); } - // 요일을 정렬된 문자열 리스트로 변환하는 메서드 + /** + * 요일 리스트 정렬 메서드. + * + * 주어진 요일 문자열 리스트를 일요일부터 토요일까지의 순서대로 정렬하여 반환합니다. + * 중복된 요일은 제거합니다. + * + * @param dayStrings 요일 문자열 리스트 + * @return 정렬된 요일 문자열 리스트 + */ public static List getSortedDayRanges(List dayStrings) { List dayOrder = Arrays.asList("일", "월", "화", "수", "목", "금", "토"); Map dayOrderMap = IntStream.range(0, dayOrder.size()) @@ -77,7 +103,16 @@ public static List getSortedDayRanges(List dayStrings) { .toList(); } - // 최적 시간대 리스트를 날짜 또는 요일별로 정렬 + /** + * 최적 시간대 정렬 메서드. + * + * 주어진 최적 시간대 리스트를 날짜 또는 요일 기준으로 정렬하여 반환합니다. + * 카테고리에 따라 날짜 또는 요일로 정렬 방식을 구분합니다. + * + * @param mostPossibleTimes 정렬할 최적 시간대 리스트 + * @param category 정렬 기준 카테고리 (DAY 또는 DATE) + * @return 정렬된 최적 시간대 리스트 + */ public static List sortMostPossibleTimes(List mostPossibleTimes, Category category) { DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy.MM.dd"); @@ -119,7 +154,15 @@ public static List sortMostPossibleTimes(List new CustomException(UserErrorStatus._NOT_FOUND_USER)); } - // 토큰에서 provider를 반환하는 메서드 + /** + * 토큰에서 provider 추출. + * + * @param token JWT 토큰 + * @return 제공자 문자열 + */ public String getProviderFromToken(String token) { try { validateTokenExpiration(token); @@ -121,7 +167,12 @@ public String getProviderFromToken(String token) { } } - // 토큰에서 providerId를 반환하는 메서드 + /** + * 토큰에서 providerId 추출. + * + * @param token JWT 토큰 + * @return 제공자 ID 문자열 + */ public String getProviderIdFromToken(String token) { try { validateTokenExpiration(token); @@ -140,7 +191,12 @@ public String getProviderIdFromToken(String token) { } } - // 토큰에서 이름을 반환하는 메서드 + /** + * 토큰에서 이름 추출. + * + * @param token JWT 토큰 + * @return 사용자 이름 + */ public String getNameFromToken(String token) { try { validateTokenExpiration(token); @@ -159,7 +215,12 @@ public String getNameFromToken(String token) { } } - // 토큰에서 이메일을 반환하는 메서드 + /** + * 토큰에서 이메일 추출. + * + * @param token JWT 토큰 + * @return 사용자 이메일 + */ public String getEmailFromToken(String token) { try { validateTokenExpiration(token); @@ -178,7 +239,11 @@ public String getEmailFromToken(String token) { } } - // Jwt 토큰의 유효기간을 확인하는 메서드 + /** + * JWT 토큰 만료 기간 확인. + * + * @param token JWT 토큰 + */ public void validateTokenExpiration(String token) { try { log.info("토큰의 유효기간을 확인합니다."); @@ -194,4 +259,4 @@ public void validateTokenExpiration(String token) { throw new CustomException(TokenErrorStatus._EXPIRED_TOKEN); } } -} \ No newline at end of file +}