diff --git a/src/main/java/com/neighbors/tohero/application/baseResponse/BaseResponseMessage.java b/src/main/java/com/neighbors/tohero/application/baseResponse/BaseResponseMessage.java index b0a77d3..0d2b17b 100644 --- a/src/main/java/com/neighbors/tohero/application/baseResponse/BaseResponseMessage.java +++ b/src/main/java/com/neighbors/tohero/application/baseResponse/BaseResponseMessage.java @@ -24,7 +24,8 @@ public enum BaseResponseMessage { 유효하지_않은_토큰_입니다("유효하지 않은 토큰입니다"), //main page - 메인페이지_조회가_정상적으로_실행되었습니다("메인페이지 조회가 정상적으로 실행되었습니다"); + 메인페이지_조회가_정상적으로_실행되었습니다("메인페이지 조회가 정상적으로 실행되었습니다"), + 메인페이지_편지_무한페이징_조회가_정상적으로_실행되었습니다("메인페이지 편지 무한페이징 조회가 정상적으로 실행되었습니다"); private final String message; diff --git a/src/main/java/com/neighbors/tohero/application/mainPage/dto/GetMainPageInfoResponse.java b/src/main/java/com/neighbors/tohero/application/mainPage/dto/GetMainPageInfoResponse.java index beecff5..364701f 100644 --- a/src/main/java/com/neighbors/tohero/application/mainPage/dto/GetMainPageInfoResponse.java +++ b/src/main/java/com/neighbors/tohero/application/mainPage/dto/GetMainPageInfoResponse.java @@ -1,6 +1,5 @@ package com.neighbors.tohero.application.mainPage.dto; -import com.neighbors.tohero.domain.domain.mainPage.model.Letter; import com.neighbors.tohero.domain.domain.notice.model.Notice; import java.util.List; @@ -17,14 +16,4 @@ public static TopNotices from(Notice notice){ return new TopNotices(notice.getNoticeTitle()); } } - - public record OpenedLetter( - String to, - String from, - String content - ){ - public static OpenedLetter from(Letter letter){ - return new OpenedLetter(letter.getTargetName(), letter.getFromUserName(), letter.getLetterContent()); - } - } } diff --git a/src/main/java/com/neighbors/tohero/application/mainPage/dto/GetMainPageLetterInfoResponse.java b/src/main/java/com/neighbors/tohero/application/mainPage/dto/GetMainPageLetterInfoResponse.java new file mode 100644 index 0000000..06a9b94 --- /dev/null +++ b/src/main/java/com/neighbors/tohero/application/mainPage/dto/GetMainPageLetterInfoResponse.java @@ -0,0 +1,8 @@ +package com.neighbors.tohero.application.mainPage.dto; + +import java.util.List; + +public record GetMainPageLetterInfoResponse ( + List openedLetters +){ +} diff --git a/src/main/java/com/neighbors/tohero/application/mainPage/dto/OpenedLetter.java b/src/main/java/com/neighbors/tohero/application/mainPage/dto/OpenedLetter.java new file mode 100644 index 0000000..5363e18 --- /dev/null +++ b/src/main/java/com/neighbors/tohero/application/mainPage/dto/OpenedLetter.java @@ -0,0 +1,13 @@ +package com.neighbors.tohero.application.mainPage.dto; + +import com.neighbors.tohero.domain.domain.mainPage.model.Letter; + +public record OpenedLetter( + String to, + String from, + String content +){ + public static OpenedLetter from(Letter letter){ + return new OpenedLetter(letter.getTargetName(), letter.getFromUserName(), letter.getLetterContent()); + } +} diff --git a/src/main/java/com/neighbors/tohero/application/mainPage/service/MainPageService.java b/src/main/java/com/neighbors/tohero/application/mainPage/service/MainPageService.java index 4648162..d0396ad 100644 --- a/src/main/java/com/neighbors/tohero/application/mainPage/service/MainPageService.java +++ b/src/main/java/com/neighbors/tohero/application/mainPage/service/MainPageService.java @@ -4,6 +4,8 @@ import com.neighbors.tohero.application.baseResponse.BaseResponseMessage; import com.neighbors.tohero.application.baseResponse.BaseResponseStatus; import com.neighbors.tohero.application.mainPage.dto.GetMainPageInfoResponse; +import com.neighbors.tohero.application.mainPage.dto.GetMainPageLetterInfoResponse; +import com.neighbors.tohero.application.mainPage.dto.OpenedLetter; import com.neighbors.tohero.domain.domain.mainPage.model.Letter; import com.neighbors.tohero.domain.domain.mainPage.service.GetLetter; import com.neighbors.tohero.domain.domain.notice.model.Notice; @@ -27,7 +29,7 @@ public class MainPageService { public BaseResponse getMainPageInfo(Pageable pageable){ List topNotices = getTopNoticeFromDomain(); long writtenLetterNumber = getLetter.getTotalLetterNumber(); - List openedLetters = getLetterFromDomain(pageable); + List openedLetters = getLetterFromDomain(pageable); return new BaseResponse( BaseResponseStatus.OK, @@ -36,6 +38,16 @@ public BaseResponse getMainPageInfo(Pageable pageable){ ); } + public BaseResponse getMainPageLetterInfo(Pageable pageable){ + List openedLetters = getLetterFromDomain(pageable); + + return new BaseResponse( + BaseResponseStatus.OK, + BaseResponseMessage.메인페이지_편지_무한페이징_조회가_정상적으로_실행되었습니다.getMessage(), + new GetMainPageLetterInfoResponse(openedLetters) + ); + } + private List getTopNoticeFromDomain(){ List topNotices = getNotice.getTopNotices(EXPOSED_NOTICE_NUMBER); @@ -44,11 +56,11 @@ private List getTopNoticeFromDomain(){ .toList(); } - private List getLetterFromDomain(Pageable pageable){ + private List getLetterFromDomain(Pageable pageable){ List openedLetters = getLetter.getPageableLetter(pageable); return openedLetters.stream() - .map(GetMainPageInfoResponse.OpenedLetter::from) + .map(OpenedLetter::from) .toList(); } } diff --git a/src/main/java/com/neighbors/tohero/common/config/SecurityConfig.java b/src/main/java/com/neighbors/tohero/common/config/SecurityConfig.java index b3172a8..2a354a6 100644 --- a/src/main/java/com/neighbors/tohero/common/config/SecurityConfig.java +++ b/src/main/java/com/neighbors/tohero/common/config/SecurityConfig.java @@ -42,7 +42,9 @@ public WebSecurityCustomizer webSecurityCustomizer() { "/oauth/kakao/callback", "/oauth/kakao/callback2", "/auth/refreshToken", - "/address" + "/address", + "/notice/**", + "/mainPage/**" ); } @@ -72,7 +74,7 @@ SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { public CorsFilter corsFilter() { CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); // 쿠키 포함 허용 - config.setAllowedOrigins(List.of("http://localhost:5173")); // 허용할 도메인 + config.setAllowedOrigins(List.of("http://localhost:5173", "https://glittery-madeleine-215e2f.netlify.app")); // 허용할 도메인 config.setAllowedMethods(List.of("GET", "POST", "PUT", "DELETE", "OPTIONS")); // 허용할 HTTP 메서드 config.setAllowedHeaders(List.of("*")); // 모든 헤더 허용 config.setExposedHeaders(List.of("Authorization")); // 노출할 헤더 diff --git a/src/main/java/com/neighbors/tohero/presentation/controller/MainPageController.java b/src/main/java/com/neighbors/tohero/presentation/controller/MainPageController.java index 621f912..bc14cad 100644 --- a/src/main/java/com/neighbors/tohero/presentation/controller/MainPageController.java +++ b/src/main/java/com/neighbors/tohero/presentation/controller/MainPageController.java @@ -16,11 +16,17 @@ public class MainPageController { private final MainPageService mainPageService; - @Operation(summary = "메인 페이지 API", description = "메인 페이지에서 사용되는 API입니다. 최상단 공지 1건, 작성된 전체 편지 개수, 공개된 편지 무한 페이징 정보가 포함됩니다.") + @Operation(summary = "메인 페이지 API", description = "메인 페이지에서 사용되는 API입니다. 최상단 공지 5건, 작성된 전체 편지 개수, 공개된 편지 무한 페이징 정보가 포함됩니다.") @GetMapping("/mainPage") public ResponseEntity getMainPageInfo(@ParameterObject Pageable pageable){ return ResponseEntity.ok() .body(mainPageService.getMainPageInfo(pageable)); } + @Operation(summary = "메인 페이지 API", description = "메인 페이지에서 사용되는 API입니다. 아래로 스크롤 할 때 공개된 편지 무한 페이징 하는 API 입니다.") + @GetMapping("/mainPage/letter") + public ResponseEntity getMainPageLetterInfo(@ParameterObject Pageable pageable){ + return ResponseEntity.ok() + .body(mainPageService.getMainPageLetterInfo(pageable)); + } }