-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #4 from Hey-Porori/fix/userRequest
User 서버 request 변경에 따른 수정사항 반영, 댓글 달기 및 조회 API
- Loading branch information
Showing
15 changed files
with
297 additions
and
95 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
## 🔥 Summary | ||
<!-- 작업 내용 요약 --> | ||
- line1 | ||
- line2 | ||
|
||
|
||
|
||
## ✏️ Describe your changes | ||
<!-- 변경 사항과 해당 되는 커밋을 링크로 걸기 --> | ||
|
||
|
||
|
||
## 📖 Review Point | ||
<!-- 리뷰가 필요한 포인트 설명 --> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
34 changes: 34 additions & 0 deletions
34
src/main/java/porori/backend/community/controller/CommentController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
package porori.backend.community.controller; | ||
|
||
import io.swagger.v3.oas.annotations.Operation; | ||
import io.swagger.v3.oas.annotations.tags.Tag; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.web.bind.annotation.*; | ||
import porori.backend.community.config.BaseResponse; | ||
import porori.backend.community.dto.CommentReqDto.*; | ||
import porori.backend.community.dto.CommentResDto.*; | ||
import porori.backend.community.service.CommentService; | ||
|
||
import java.util.List; | ||
|
||
@RequiredArgsConstructor | ||
@RequestMapping("/api/communities") | ||
@RestController | ||
@Tag(name = "Comment API", description = "댓글 API") | ||
public class CommentController { | ||
private final CommentService commentService; | ||
|
||
@Operation(summary = "게시글에 댓글 작성", description = "postId로 게시글의 댓글을 작성합니다.") | ||
@PostMapping("/comments/{postId}") | ||
public BaseResponse<String> createComments(@RequestHeader("Authorization") String token, @PathVariable Long postId, | ||
@RequestBody CommentContentReq comment){ | ||
commentService.createComment(token, postId, comment.getContent()); | ||
return new BaseResponse<>("postId가 "+postId+"인 게시글에 댓글이 작성되었습니다."); | ||
} | ||
|
||
@Operation(summary = "게시글의 댓글 조회", description = "postId로 게시글의 댓글을 조회합니다.") | ||
@GetMapping("/comments/{postId}") | ||
public BaseResponse<List<CommentDetailRes>> getComments(@RequestHeader("Authorization") String token, @PathVariable Long postId){ | ||
return new BaseResponse<>(commentService.getComments(token, postId)); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
37 changes: 37 additions & 0 deletions
37
src/main/java/porori/backend/community/domain/Comment.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
package porori.backend.community.domain; | ||
|
||
import lombok.*; | ||
import org.hibernate.annotations.DynamicInsert; | ||
import porori.backend.community.domain.core.BaseTimeEntity; | ||
|
||
import javax.persistence.*; | ||
|
||
@Entity | ||
@Getter | ||
@Setter | ||
@NoArgsConstructor(access = AccessLevel.PROTECTED) | ||
@Table(name = "comment") | ||
@DynamicInsert | ||
public class Comment extends BaseTimeEntity { | ||
@Id | ||
@GeneratedValue(strategy = GenerationType.IDENTITY) | ||
@Column(name = "comment_id") | ||
private Long commentId; | ||
|
||
@ManyToOne(fetch = FetchType.LAZY, optional = false) | ||
@JoinColumn(name = "post_id") | ||
private Post postId; | ||
|
||
@Column(nullable = false, name = "user_id") | ||
private Long userId; | ||
|
||
@Column(nullable = false, columnDefinition = "TEXT") | ||
private String content; | ||
|
||
@Builder | ||
public Comment(Post postId, Long userId, String content) { | ||
this.postId = postId; | ||
this.userId = userId; | ||
this.content = content; | ||
} | ||
} |
12 changes: 12 additions & 0 deletions
12
src/main/java/porori/backend/community/dto/CommentReqDto.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
package porori.backend.community.dto; | ||
|
||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
|
||
@NoArgsConstructor | ||
public class CommentReqDto { | ||
@Getter | ||
public static class CommentContentReq{ | ||
String content; | ||
} | ||
} |
33 changes: 33 additions & 0 deletions
33
src/main/java/porori/backend/community/dto/CommentResDto.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package porori.backend.community.dto; | ||
|
||
import lombok.AllArgsConstructor; | ||
import lombok.Builder; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
import porori.backend.community.domain.Comment; | ||
|
||
import java.time.LocalDateTime; | ||
|
||
@NoArgsConstructor | ||
public class CommentResDto { | ||
|
||
@Getter | ||
@AllArgsConstructor | ||
@NoArgsConstructor | ||
public static class CommentDetailRes{ | ||
private String content; | ||
private LocalDateTime createdAt; | ||
private String nickname; | ||
private String image; | ||
private String backgroundColor; | ||
|
||
@Builder | ||
public CommentDetailRes(Comment comment, UserResDto.CommunityUserInfo userInfo){ | ||
this.content = comment.getContent(); | ||
this.createdAt = comment.getCreatedAt(); | ||
this.nickname = userInfo.getNickname(); | ||
this.image = userInfo.getImage(); | ||
this.backgroundColor = userInfo.getBackgroundColor(); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
23 changes: 0 additions & 23 deletions
23
src/main/java/porori/backend/community/dto/UserReqDto.java
This file was deleted.
Oops, something went wrong.
11 changes: 11 additions & 0 deletions
11
src/main/java/porori/backend/community/repository/CommentRepository.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package porori.backend.community.repository; | ||
|
||
import org.springframework.data.jpa.repository.JpaRepository; | ||
import porori.backend.community.domain.Comment; | ||
import porori.backend.community.domain.Post; | ||
|
||
import java.util.List; | ||
|
||
public interface CommentRepository extends JpaRepository<Comment, Long> { | ||
List<Comment> findAllByPostIdOrderByCreatedAt(Post post); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
58 changes: 58 additions & 0 deletions
58
src/main/java/porori/backend/community/service/CommentService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
package porori.backend.community.service; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.stereotype.Service; | ||
import porori.backend.community.config.exception.post.NotFoundPostIdException; | ||
import porori.backend.community.domain.Comment; | ||
import porori.backend.community.domain.Post; | ||
import porori.backend.community.dto.CommentResDto; | ||
import porori.backend.community.dto.CommentResDto.*; | ||
import porori.backend.community.dto.UserResDto; | ||
import porori.backend.community.repository.CommentRepository; | ||
import porori.backend.community.repository.PostRepository; | ||
|
||
import javax.transaction.Transactional; | ||
import java.util.HashMap; | ||
import java.util.List; | ||
import java.util.stream.Collectors; | ||
|
||
@Service | ||
@RequiredArgsConstructor | ||
@Transactional | ||
public class CommentService { | ||
private final PostRepository postRepository; | ||
private final CommentRepository commentRepository; | ||
|
||
private final UserService userService; | ||
|
||
//게시글에 댓글 달기 | ||
public void createComment(String token, Long postId, String content) { | ||
Long userId = userService.getUserId(token); | ||
|
||
Post post = postRepository.findByPostIdAndStatus(postId, "ACTIVE").orElseThrow(NotFoundPostIdException::new); | ||
|
||
Comment comment = Comment.builder().userId(userId).postId(post).content(content).build(); | ||
|
||
commentRepository.save(comment); | ||
} | ||
|
||
//게시글 댓글 조회 (분리) | ||
public List<CommentDetailRes> getComments(String token, Long postId) { | ||
Post post = postRepository.findByPostIdAndStatus(postId, "ACTIVE").orElseThrow(NotFoundPostIdException::new); | ||
|
||
List<Comment> commentList = commentRepository.findAllByPostIdOrderByCreatedAt(post); | ||
List<Long> userIdList = commentList.stream().map(Comment::getUserId).collect(Collectors.toList()); | ||
|
||
List<UserResDto.CommunityUserInfo> commentUserInfoBlocks = userService.sendCommunitiesInfoRequest(token, userIdList); | ||
|
||
HashMap<Long, UserResDto.CommunityUserInfo> commentUserInfoHashMap = new HashMap<>(); | ||
commentUserInfoBlocks.forEach(communityUserInfo -> { | ||
commentUserInfoHashMap.put(communityUserInfo.getUserId(), communityUserInfo); | ||
}); | ||
|
||
return commentList.stream().map(comment -> CommentResDto.CommentDetailRes.builder() | ||
.comment(comment) | ||
.userInfo(commentUserInfoHashMap.get(comment.getUserId())).build()).collect(Collectors.toList()); | ||
} | ||
|
||
} |
Oops, something went wrong.