diff --git a/src/main/java/com/example/be/repository/PostRepository.java b/src/main/java/com/example/be/repository/PostRepository.java index 37c050a..19633f0 100644 --- a/src/main/java/com/example/be/repository/PostRepository.java +++ b/src/main/java/com/example/be/repository/PostRepository.java @@ -1,6 +1,7 @@ package com.example.be.repository; import com.example.be.domain.Post; +import com.example.be.domain.User; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.EntityGraph; @@ -17,4 +18,6 @@ public interface PostRepository extends JpaRepository { Optional findById(Long id); Optional findByIdAndUserId(Long id, Long userId); + + Page findPostsByUserOrderByCreateDateDesc(User user, Pageable pageable); } diff --git a/src/main/java/com/example/be/service/PostServiceImpl.java b/src/main/java/com/example/be/service/PostServiceImpl.java index 4150efa..86af5ad 100644 --- a/src/main/java/com/example/be/service/PostServiceImpl.java +++ b/src/main/java/com/example/be/service/PostServiceImpl.java @@ -159,4 +159,33 @@ public CommonDTO.IsSuccessDTO deletePost(Long postId, HttpServletRequest request return CommonDTO.IsSuccessDTO.builder().isSuccess(true).build(); } + + public PostDTO.PageResponseDTO getMyPosts(int page, int size, HttpServletRequest request) { + User user= getUserFromRequest(request); + + Pageable pageable = PageRequest.of(page, size); + Page postPage = postRepository.findPostsByUserOrderByCreateDateDesc(user, pageable); + + List postDtoList = postPage.getContent().stream() + .map(post -> PostDTO.postResponseDTO.builder() + .id(post.getId()) + .title(post.getTitle()) + .content(post.getContent()) + .userName(post.getUser().getName()) + .createDate(post.getCreateDate().toLocalDate()) + .commentCount(post.getComments() != null ? post.getComments().size() : 0) + .likeCount(postLikeService.getPostLikeCount(post)) + .build()) + .collect(Collectors.toList()); + + return PostDTO.PageResponseDTO.builder() + .posts(postDtoList) + .currentPage(postPage.getNumber()) + .totalPages(postPage.getTotalPages()) + .totalElements(postPage.getTotalElements()) + .first(postPage.isFirst()) + .last(postPage.isLast()) + .build(); + + } } diff --git a/src/main/java/com/example/be/web/controller/PostController.java b/src/main/java/com/example/be/web/controller/PostController.java index 9d85196..3b0f032 100644 --- a/src/main/java/com/example/be/web/controller/PostController.java +++ b/src/main/java/com/example/be/web/controller/PostController.java @@ -66,4 +66,13 @@ public ApiResponse delete( return ApiResponse.onSuccess(postService.deletePost(postId, request)); } + @GetMapping("/mypost") + @Operation(summary = "내가 작성한 게시글 조회 API", description = "내가 작성한 게시글들을 조회합니다.") + public ApiResponse getMyPosts( + @Parameter(description = "페이지 번호 (0부터 시작)") @RequestParam(defaultValue = "0") int page, + HttpServletRequest request) { + return ApiResponse.onSuccess(postService.getMyPosts(page, 4, request)); + } + + }