Skip to content

Commit 3376e32

Browse files
authored
Merge pull request #24 from jeondain/feat/#23
[feat #23] 게시판 상세 조회 API 구현
2 parents 7c1e884 + 2f0a767 commit 3376e32

12 files changed

Lines changed: 180 additions & 9 deletions

File tree

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.fromm.leafmap.domain.comment.dto;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Getter;
6+
import lombok.NoArgsConstructor;
7+
8+
import java.time.LocalDateTime;
9+
10+
public class CommentResponseDTO {
11+
12+
@Builder
13+
@Getter
14+
@NoArgsConstructor
15+
@AllArgsConstructor
16+
public static class CommentDTO {
17+
private Long id;
18+
private String content;
19+
private String nickname;
20+
private Boolean isWriter;
21+
private LocalDateTime createdAt;
22+
}
23+
}

src/main/java/com/fromm/leafmap/domain/post/entity/Comment.java renamed to src/main/java/com/fromm/leafmap/domain/comment/entity/Comment.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
package com.fromm.leafmap.domain.post.entity;
1+
package com.fromm.leafmap.domain.comment.entity;
22

33
import com.fromm.leafmap.domain.member.entity.Member;
4+
import com.fromm.leafmap.domain.post.entity.Post;
45
import com.fromm.leafmap.global.common.BaseEntity;
56
import jakarta.persistence.*;
67
import lombok.*;

src/main/java/com/fromm/leafmap/domain/major/controller/MajorController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public class MajorController {
1818
private final MajorService majorService;
1919

2020
@PostMapping(value = "/{majorId}/curriculumUrl", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
21-
@Operation(summary = "전공 이수체계도 이미지 업로드", description = "연동 X")
21+
@Operation(summary = "전공 이수체계도 이미지 업로드 (연동 X)")
2222
public ApiResponse<String> uploadMajorImage( @PathVariable Long majorId,
2323
@RequestPart("image") MultipartFile image) {
2424
String imageUrl = majorService.uploadCurriculumUrl(majorId, image);
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.fromm.leafmap.domain.major.dto;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Getter;
6+
import lombok.NoArgsConstructor;
7+
8+
public class MajorResponseDTO {
9+
10+
@Builder
11+
@Getter
12+
@NoArgsConstructor
13+
@AllArgsConstructor
14+
public static class MajorDTO {
15+
private Long id;
16+
private String name;
17+
private String keywords;
18+
private String curriculumUrl;
19+
private String description;
20+
private String career;;
21+
}
22+
}

src/main/java/com/fromm/leafmap/domain/member/dto/MemberResponseDTO.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@
77

88
public class MemberResponseDTO {
99

10+
@Builder
11+
@Getter
12+
@NoArgsConstructor
13+
@AllArgsConstructor
14+
public static class MemberDTO {
15+
private Long id;
16+
private String nickname;
17+
}
18+
1019
@Builder
1120
@Getter
1221
@NoArgsConstructor

src/main/java/com/fromm/leafmap/domain/post/controller/PostController.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,14 @@ public ApiResponse<PostResponseDTO.PostListResultDTO> getPostList(
5858
return ApiResponse.onSuccess(postListResultDTO);
5959
}
6060

61+
@GetMapping(value = "/{boardType}/{postId}")
62+
@Operation(summary = "게시판 상세 조회")
63+
public ApiResponse<PostResponseDTO.PostDetailResultDTO> getPostDetail(
64+
@PathVariable BoardType boardType,
65+
@PathVariable Long postId,
66+
@CurrentMember Member member) {
67+
68+
PostResponseDTO.PostDetailResultDTO postDetailResultDTO = postService.getPostDetail(boardType, postId, member);
69+
return ApiResponse.onSuccess(postDetailResultDTO);
70+
}
6171
}

src/main/java/com/fromm/leafmap/domain/post/dto/PostResponseDTO.java

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package com.fromm.leafmap.domain.post.dto;
22

3-
import lombok.AllArgsConstructor;
4-
import lombok.Builder;
5-
import lombok.Getter;
6-
import lombok.NoArgsConstructor;
3+
import com.fromm.leafmap.domain.comment.dto.CommentResponseDTO;
4+
import com.fromm.leafmap.domain.major.dto.MajorResponseDTO;
5+
import com.fromm.leafmap.domain.member.dto.MemberResponseDTO;
6+
import com.fromm.leafmap.domain.post.entity.BoardType;
7+
import lombok.*;
78

9+
import java.time.LocalDateTime;
810
import java.util.List;
911

1012
public class PostResponseDTO {
@@ -20,7 +22,7 @@ public static class AddPostResultDTO {
2022
@Getter
2123
@Builder
2224
public static class PostPreviewDTO {
23-
private Long postId;
25+
private Long id;
2426
private String title;
2527
private String contentPreview; // 내용 첫 줄
2628

@@ -35,4 +37,28 @@ public static class PostListResultDTO {
3537
private Long nextCursor;
3638
private boolean hasNext;
3739
}
40+
41+
@Builder
42+
@Getter
43+
@NoArgsConstructor
44+
@AllArgsConstructor
45+
public static class PostDetailResultDTO {
46+
47+
private Long id;
48+
private BoardType boardType;
49+
private String title;
50+
private String content;
51+
private String address;
52+
private String imageUrl;
53+
private Boolean isPublic;
54+
private Integer likeCount;
55+
private Boolean badge;
56+
private Boolean isWriter;
57+
private LocalDateTime createdAt;
58+
59+
private MemberResponseDTO.MemberDTO member;
60+
private MajorResponseDTO.MajorDTO major;
61+
62+
private List<CommentResponseDTO.CommentDTO> comments;
63+
}
3864
}

src/main/java/com/fromm/leafmap/domain/post/entity/Post.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.fromm.leafmap.domain.post.entity;
22

3+
import com.fromm.leafmap.domain.comment.entity.Comment;
34
import com.fromm.leafmap.domain.major.entity.Major;
45
import com.fromm.leafmap.domain.member.entity.Member;
56
import com.fromm.leafmap.global.common.BaseEntity;

src/main/java/com/fromm/leafmap/domain/post/repository/PostRepository.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,14 @@
88
import org.springframework.data.repository.query.Param;
99

1010
import java.util.List;
11+
import java.util.Optional;
1112

1213
public interface PostRepository extends JpaRepository<Post, Long> {
1314

1415
boolean existsByMajorId(Long majorId);
1516

17+
Optional<Post> findByIdAndBoardType(Long id, BoardType boardType);
18+
1619
@Query("SELECT p FROM Post p " +
1720
"WHERE p.boardType = :boardType " +
1821
"AND p.id < :cursor " +

src/main/java/com/fromm/leafmap/domain/post/service/PostService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,6 @@ public interface PostService {
1111
PostResponseDTO.AddPostResultDTO addPost(BoardType boardType, PostRequestDTO.AddPostRequestDTO request, MultipartFile image, Member member);
1212

1313
PostResponseDTO.PostListResultDTO getPostList(BoardType boardType, Member member, Long cursor, int limit);
14+
15+
PostResponseDTO.PostDetailResultDTO getPostDetail(BoardType boardType, Long postId, Member member);
1416
}

0 commit comments

Comments
 (0)