@@ -31,9 +31,11 @@ public class PostServiceImpl {
3131 private final JwtUtilServiceImpl jwtUtilService ;
3232 private final UserRepository userRepository ;
3333 private final PostRepository postRepository ;
34+ private final PostLikeServiceImpl postLikeService ;
3435
35- public CommonDTO .IsSuccessDTO write (PostDTO .postRequestDTO request , HttpServletRequest req ) {
3636
37+ //글 작성 메서드
38+ public CommonDTO .IsSuccessDTO write (PostDTO .postRequestDTO request , HttpServletRequest req ) {
3739 String accessToken = jwtUtilService .extractTokenFromCookie (req , "accessToken" );
3840
3941 // 토큰이 없는 경우 처리
@@ -63,7 +65,7 @@ public CommonDTO.IsSuccessDTO write(PostDTO.postRequestDTO request, HttpServletR
6365
6466 public PostDTO .PageResponseDTO getPosts (int page , int size ) {
6567 Pageable pageable = PageRequest .of (page , size );
66- Page <Post > postPage = postRepository .findAllWithCommentsOrderByCreateDateDesc (pageable );
68+ Page <Post > postPage = postRepository .findAllByOrderByCreateDateDesc (pageable );
6769
6870 List <PostDTO .postResponseDTO > postDtoList = postPage .getContent ().stream ()
6971 .map (post -> PostDTO .postResponseDTO .builder ()
@@ -73,8 +75,8 @@ public PostDTO.PageResponseDTO getPosts(int page, int size) {
7375 .userName (post .getUser ().getName ())
7476 .createDate (post .getCreateDate ().toLocalDate ())
7577 .isDone (post .isDone ())
76- // 댓글 개수 추가
7778 .commentCount (post .getComments () != null ? post .getComments ().size () : 0 )
79+ .likeCount (postLikeService .getPostLikeCount (post ))
7880 .build ())
7981 .collect (Collectors .toList ());
8082
@@ -89,10 +91,29 @@ public PostDTO.PageResponseDTO getPosts(int page, int size) {
8991 }
9092
9193 // 게시글 상세 조회 메서드
92- public PostDTO .PostDetailResponseDTO getPostDetail (Long postId ) {
94+ public PostDTO .PostDetailResponseDTO getPostDetail (Long postId , HttpServletRequest request ) {
9395 Post post = postRepository .findById (postId )
9496 .orElseThrow (() -> new UserHandler (ErrorStatus ._NOT_FOUND_POST ));
9597
98+ // 현재 로그인한 사용자 정보 가져오기 (좋아요 여부 확인용)
99+ User currentUser = null ;
100+ boolean isLiked = false ;
101+
102+ try {
103+ String accessToken = jwtUtilService .extractTokenFromCookie (request , "accessToken" );
104+ if (accessToken != null ) {
105+ String userId = jwtUtilService .getUserIdFromToken (accessToken );
106+ currentUser = userRepository .findByUserId (UUID .fromString (userId )).orElse (null );
107+
108+ // 현재 사용자가 이 게시글에 좋아요를 눌렀는지 확인
109+ if (currentUser != null ) {
110+ isLiked = postLikeService .isPostLikedByUser (post , currentUser );
111+ }
112+ }
113+ } catch (Exception e ) {
114+ // 비로그인 사용자도 게시글을 볼 수 있도록 예외를 무시하고 진행
115+ }
116+
96117 // 댓글 목록 변환
97118 List <PostDTO .CommentResponseDTO > commentDtoList = post .getComments ().stream ()
98119 .map (comment -> PostDTO .CommentResponseDTO .builder ()
@@ -104,6 +125,9 @@ public PostDTO.PostDetailResponseDTO getPostDetail(Long postId) {
104125 .build ())
105126 .collect (Collectors .toList ());
106127
128+ // 좋아요 수 조회
129+ long likeCount = postLikeService .getPostLikeCount (post );
130+
107131 // 게시글 상세 정보 변환
108132 return PostDTO .PostDetailResponseDTO .builder ()
109133 .id (post .getId ())
@@ -114,6 +138,9 @@ public PostDTO.PostDetailResponseDTO getPostDetail(Long postId) {
114138 .isDone (post .isDone ())
115139 .commentCount (commentDtoList .size ())
116140 .comments (commentDtoList )
141+ // 좋아요 정보 추가
142+ .likeCount (likeCount )
143+ .liked (isLiked )
117144 .build ();
118145 }
119146}
0 commit comments