Skip to content

Commit 598e29e

Browse files
authored
Merge pull request #83 from Team-Shaka/feature/75
Feature/75 - 트리하우스 정보 조회 API 및 하드코딩으로 채워뒀던 코드들 수정
2 parents 412bcf3 + ff16f04 commit 598e29e

File tree

15 files changed

+95
-24
lines changed

15 files changed

+95
-24
lines changed

src/main/java/treehouse/server/api/comment/business/CommentMapper.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import treehouse.server.api.member.business.MemberMapper;
55
import treehouse.server.api.reaction.presentation.dto.ReactionResponseDTO;
66
import treehouse.server.global.common.util.TimeFormatter;
7+
import treehouse.server.global.entity.branch.Branch;
78
import treehouse.server.global.entity.comment.Comment;
89
import treehouse.server.global.entity.comment.CommentType;
910
import treehouse.server.global.entity.member.Member;
@@ -14,26 +15,26 @@
1415
public class CommentMapper {
1516

1617

17-
public static CommentResponseDTO.CommentInfoDto toCommentInfoDto(Comment comment, ReactionResponseDTO.getReactionList reactionList,
18+
public static CommentResponseDTO.CommentInfoDto toCommentInfoDto(Member member, List<Branch> branches, Comment comment, ReactionResponseDTO.getReactionList reactionList,
1819
List<CommentResponseDTO.ReplyInfoDto> replyInfoDtoList) {
1920
return CommentResponseDTO.CommentInfoDto.builder()
2021
.commentedAt(TimeFormatter.format(comment.getCreatedAt()))
2122
.commentId(comment.getId())
2223
.context(comment.getContent())
2324
.reactionList(reactionList)
2425
.replyList(replyInfoDtoList)
25-
.memberProfile(MemberMapper.toGetWriterProfile(comment.getWriter()))
26+
.memberProfile(MemberMapper.toGetWriterProfile(member, comment.getWriter(), branches))
2627
.build();
2728

2829
}
2930

30-
public static CommentResponseDTO.ReplyInfoDto toReplyInfoDto(Comment comment, ReactionResponseDTO.getReactionList reactionList) {
31+
public static CommentResponseDTO.ReplyInfoDto toReplyInfoDto(Member member, List<Branch> branches, Comment comment, ReactionResponseDTO.getReactionList reactionList) {
3132
return CommentResponseDTO.ReplyInfoDto.builder()
3233
.commentedAt(TimeFormatter.format(comment.getCreatedAt()))
3334
.commentId(comment.getId())
3435
.context(comment.getContent())
3536
.reactionList(reactionList)
36-
.memberProfile(MemberMapper.toGetWriterProfile(comment.getWriter()))
37+
.memberProfile(MemberMapper.toGetWriterProfile(member, comment.getWriter(), branches))
3738
.build();
3839

3940
}

src/main/java/treehouse/server/api/comment/business/CommentService.java

+7-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.springframework.data.domain.Sort;
88
import org.springframework.stereotype.Service;
99
import org.springframework.transaction.annotation.Transactional;
10+
import treehouse.server.api.branch.implementation.BranchQueryAdapter;
1011
import treehouse.server.api.comment.implementation.CommentCommandAdapter;
1112
import treehouse.server.api.comment.implementation.CommentQueryAdapter;
1213
import treehouse.server.api.comment.presentation.dto.CommentRequestDTO;
@@ -23,6 +24,7 @@
2324
import treehouse.server.api.treehouse.implementation.TreehouseQueryAdapter;
2425
import treehouse.server.api.user.implement.UserQueryAdapter;
2526
import treehouse.server.global.entity.User.User;
27+
import treehouse.server.global.entity.branch.Branch;
2628
import treehouse.server.global.entity.comment.Comment;
2729
import treehouse.server.global.entity.comment.CommentType;
2830
import treehouse.server.global.entity.member.Member;
@@ -59,6 +61,8 @@ public class CommentService {
5961
private final ReactionCommandAdapter reactionCommandAdapter;
6062
private final ReactionQueryAdapter reactionQueryAdapter;
6163

64+
private final BranchQueryAdapter branchQueryAdapter;
65+
6266

6367
public void reportComment(User user, CommentRequestDTO.reportComment request, Long treehouseId, Long postId, Long commentId){
6468

@@ -86,6 +90,7 @@ public CommentResponseDTO.CommentListDto getCommentResponseList(User user, Long
8690

8791
TreeHouse treehouse = treehouseQueryAdapter.getTreehouseById(treehouseId);
8892
Member member = memberQueryAdapter.findByUserAndTreehouse(user, treehouse);
93+
List<Branch> branches = branchQueryAdapter.findAllByTreeHouse(treehouse);
8994

9095
Pageable pageable = PageRequest.of(page, 10, Sort.by(Sort.Direction.DESC, "createdAt"));
9196
// List<Comment> commentListByPostId = commentQueryAdapter.getCommentListByPostId(postId, pageable);
@@ -134,11 +139,11 @@ public CommentResponseDTO.CommentListDto getCommentResponseList(User user, Long
134139
));
135140
ReactionResponseDTO.getReactionList replyReactionDtoList = ReactionMapper.toGetReactionList(replyReactionMap);
136141

137-
return CommentMapper.toReplyInfoDto(reply, replyReactionDtoList);
142+
return CommentMapper.toReplyInfoDto(member, branches, reply, replyReactionDtoList);
138143
})
139144
.collect(Collectors.toList());
140145

141-
return CommentMapper.toCommentInfoDto(comment, reactionDtoList,replyInfoDtoList);
146+
return CommentMapper.toCommentInfoDto(member, branches, comment, reactionDtoList,replyInfoDtoList);
142147
})
143148
.collect(Collectors.toList());
144149

src/main/java/treehouse/server/api/invitation/business/InvitationMapper.java

+2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class InvitationMapper {
2323
public static InvitationResponseDTO.getInvitation toGetInvitation (Invitation invitation, List<String> treeMemberProfileImages) {
2424
return InvitationResponseDTO.getInvitation.builder()
2525
.invitationId(invitation.getId())
26+
.treehouseId(invitation.getTreeHouse().getId())
2627
.treehouseName(invitation.getTreeHouse().getName())
2728
.senderName(invitation.getSender().getName())
2829
.senderProfileImageUrl(invitation.getSender().getProfileImageUrl())
@@ -63,6 +64,7 @@ public static Invitation toInvitation(String phoneNumber, Member sender, User re
6364
.phone(phoneNumber)
6465
.expiredAt(sevenDaysLater)
6566
.status(InvitationStatus.PENDING)
67+
.treeHouse(treeHouse)
6668
.build();
6769
}
6870

src/main/java/treehouse/server/api/invitation/business/InvitationService.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
import treehouse.server.global.entity.User.User;
1616
import treehouse.server.global.entity.member.Member;
1717
import treehouse.server.global.entity.treeHouse.TreeHouse;
18+
import treehouse.server.global.exception.GlobalErrorCode;
19+
import treehouse.server.global.exception.ThrowClass.InvitationException;
1820
import treehouse.server.global.exception.ThrowClass.UserException;
1921

2022
import java.util.List;
@@ -64,7 +66,6 @@ public InvitationResponseDTO.myInvitationInfo getMyInvitationInfo(User user){
6466

6567
@Transactional
6668
public InvitationResponseDTO.createInvitation createInvitation(User user, InvitationRequestDTO.createInvitation request){
67-
6869
// 트리 찾기
6970
TreeHouse treehouse = treehouseQueryAdapter.getTreehouseById(request.getTreehouseId());
7071
// 초대 멤버 찾기
@@ -92,8 +93,10 @@ public InvitationResponseDTO.createInvitation createInvitation(User user, Invita
9293
public InvitationResponseDTO.invitationAccept decisionInvitation(User user, InvitationRequestDTO.invitationAcceptDecision request){
9394
// 해당 User 에게 온 초대장인지 검증하는 로직 추가
9495
Long treehouseId = 0L;
96+
Invitation invitation = invitationQueryAdapter.findById(request.getInvitationId());
97+
9598
if (request.isAcceptDecision()==true) {
96-
treehouseId = 1L; // treehouse 관련 로직 개발 후, invitation.getTreeHouse.getId() 등으로 바꾸기
99+
treehouseId = invitation.getTreeHouse().getId(); // treehouse 관련 로직 개발 후, invitation.getTreeHouse.getId() 등으로 바꾸기
97100
}
98101
return InvitationMapper.toInvitationResult(treehouseId);
99102
}

src/main/java/treehouse/server/api/invitation/implement/InvitationQueryAdapter.java

+6
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import treehouse.server.global.entity.Invitation.Invitation;
99
import treehouse.server.global.entity.User.User;
1010
import treehouse.server.global.exception.GlobalErrorCode;
11+
import treehouse.server.global.exception.ThrowClass.InvitationException;
1112
import treehouse.server.global.exception.ThrowClass.UserException;
1213

1314
import java.util.List;
@@ -26,4 +27,9 @@ public List<Invitation> findAllByPhone(String phone) {
2627
public Boolean existByPhoneNumber(String phoneNumber) {
2728
return invitationRepository.existsByPhone(phoneNumber);
2829
}
30+
31+
public Invitation findById(Long invitationId) {
32+
return invitationRepository.findById(invitationId)
33+
.orElseThrow(() -> new InvitationException(GlobalErrorCode.INVITATION_NOT_FOUND));
34+
}
2935
}

src/main/java/treehouse/server/api/invitation/presentation/dto/InvitationResponseDTO.java

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public class InvitationResponseDTO {
1313
@AllArgsConstructor
1414
public static class getInvitation {
1515
private Long invitationId;
16+
private Long treehouseId;
1617
private String treehouseName;
1718
private String senderName;
1819
private String senderProfileImageUrl;

src/main/java/treehouse/server/api/member/business/MemberMapper.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,12 @@ public static MemberResponseDTO.registerMember toRegister(Member member) {
3838
.build();
3939
}
4040

41-
public static MemberResponseDTO.getWriterProfile toGetWriterProfile(Member member) {
41+
public static MemberResponseDTO.getWriterProfile toGetWriterProfile(Member member, Member writer, List<Branch> branches) {
4242
return MemberResponseDTO.getWriterProfile.builder()
43-
.memberId(member.getId())
44-
.memberName(member.getName())
45-
.memberProfileImageUrl(member.getProfileImageUrl())
46-
.memberBranch(3) // Branch 기능 개발 이후 변경 예정
43+
.memberId(writer.getId())
44+
.memberName(writer.getName())
45+
.memberProfileImageUrl(writer.getProfileImageUrl())
46+
.memberBranch(BranchUtil.calculateBranchDegree(branches, member.getId(), writer.getId()))
4747
.build();
4848
}
4949

src/main/java/treehouse/server/api/post/business/PostMapper.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import treehouse.server.api.member.business.MemberMapper;
88
import treehouse.server.api.reaction.presentation.dto.ReactionResponseDTO;
99
import treehouse.server.global.common.util.TimeFormatter;
10+
import treehouse.server.global.entity.branch.Branch;
1011
import treehouse.server.global.entity.member.Member;
1112
import treehouse.server.global.entity.post.Post;
1213
import treehouse.server.global.entity.post.PostImage;
@@ -19,9 +20,9 @@
1920
@NoArgsConstructor(access = AccessLevel.PRIVATE)
2021
public class PostMapper {
2122

22-
public static PostResponseDTO.getPostDetails toGetPostDetails(Post post, List<String> postImageUrlList, ReactionResponseDTO.getReactionList reactionList) {
23+
public static PostResponseDTO.getPostDetails toGetPostDetails(Member member, List<Branch> branches, Post post, List<String> postImageUrlList, ReactionResponseDTO.getReactionList reactionList) {
2324
return PostResponseDTO.getPostDetails.builder()
24-
.memberProfile(MemberMapper.toGetWriterProfile(post.getWriter()))
25+
.memberProfile(MemberMapper.toGetWriterProfile(member, post.getWriter(), branches))
2526
.postId(post.getId())
2627
.context(post.getContent())
2728
.pictureUrlList(postImageUrlList)
@@ -42,9 +43,9 @@ public static PostResponseDTO.getOnlyPostDetail toGetOnlyPostDetails(Post post,
4243
.build();
4344
}
4445

45-
public static PostResponseDTO.getMemberPostList toGetMemberPostList(Member targetMember, List<PostResponseDTO.getOnlyPostDetail> onlyPostDetailList) {
46+
public static PostResponseDTO.getMemberPostList toGetMemberPostList(Member member, Member targetMember, List<PostResponseDTO.getOnlyPostDetail> onlyPostDetailList, List<Branch> branches) {
4647
return PostResponseDTO.getMemberPostList.builder()
47-
.memberProfile(MemberMapper.toGetWriterProfile(targetMember))
48+
.memberProfile(MemberMapper.toGetWriterProfile(member, targetMember, branches))
4849
.postList(onlyPostDetailList)
4950
.build();
5051
}

src/main/java/treehouse/server/api/post/business/PostService.java

+11-3
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.springframework.stereotype.Service;
1010
import org.springframework.transaction.annotation.Isolation;
1111
import org.springframework.transaction.annotation.Transactional;
12+
import treehouse.server.api.branch.implementation.BranchQueryAdapter;
1213
import treehouse.server.api.member.implementation.MemberQueryAdapter;
1314
import treehouse.server.api.post.implement.PostCommandAdapter;
1415
import treehouse.server.api.post.implement.PostImageCommandAdapter;
@@ -25,6 +26,7 @@
2526
import treehouse.server.api.treehouse.implementation.TreehouseQueryAdapter;
2627
import treehouse.server.global.constants.Consts;
2728
import treehouse.server.global.entity.User.User;
29+
import treehouse.server.global.entity.branch.Branch;
2830
import treehouse.server.global.entity.member.Member;
2931
import treehouse.server.global.entity.post.Post;
3032
import treehouse.server.global.entity.post.PostImage;
@@ -65,6 +67,9 @@ public class PostService {
6567
private final ReactionQueryAdapter reactionQueryAdapter;
6668

6769
private final ReportQueryAdapter reportQueryAdapter;
70+
71+
private final BranchQueryAdapter branchQueryAdapter;
72+
6873
/**
6974
* 게시글 상세조회
7075
*
@@ -100,7 +105,8 @@ public PostResponseDTO.getPostDetails getPostDetails(User user, Long postId, Lon
100105

101106
ReactionResponseDTO.getReactionList reactionDtoList = ReactionMapper.toGetReactionList(reactionMap);
102107

103-
return PostMapper.toGetPostDetails(post, postImageUrlList, reactionDtoList);
108+
List<Branch> branches = branchQueryAdapter.findAllByTreeHouse(treehouse); // 트리하우스 내 모든 브랜치 조회
109+
return PostMapper.toGetPostDetails(member, branches, post, postImageUrlList, reactionDtoList);
104110
}
105111

106112
public PostResponseDTO.createPostResult createPost(User user, PostRequestDTO.createPost request, Long treehouseId) {
@@ -142,6 +148,7 @@ public List<PostResponseDTO.getPostDetails> getPosts (User user, Long treehouseI
142148

143149
TreeHouse treehouse = treehouseQueryAdapter.getTreehouseById(treehouseId);
144150
Member member = memberQueryAdapter.findByUserAndTreehouse(user, treehouse);
151+
List<Branch> branches = branchQueryAdapter.findAllByTreeHouse(treehouse);
145152

146153
Pageable pageable = PageRequest.of(page, 10, Sort.by(Sort.Direction.DESC, "createdAt"));
147154
List<Post> postList = postQueryAdapter.findAllByTreehouse(treehouse, pageable);
@@ -170,7 +177,7 @@ public List<PostResponseDTO.getPostDetails> getPosts (User user, Long treehouseI
170177
));
171178

172179
ReactionResponseDTO.getReactionList reactionDtoList = ReactionMapper.toGetReactionList(reactionMap);
173-
return PostMapper.toGetPostDetails(post, postImageUrlList, reactionDtoList);
180+
return PostMapper.toGetPostDetails(member, branches, post, postImageUrlList, reactionDtoList);
174181
})
175182
.collect(Collectors.toList());
176183

@@ -183,6 +190,7 @@ public PostResponseDTO.getMemberPostList getMemberPosts(User user, Long targetMe
183190
TreeHouse treehouse = treehouseQueryAdapter.getTreehouseById(treehouseId);
184191
Member member = memberQueryAdapter.findByUserAndTreehouse(user, treehouse);
185192
Member targetMember = memberQueryAdapter.findById(targetMemberId);
193+
List<Branch> branches = branchQueryAdapter.findAllByTreeHouse(treehouse);
186194

187195
List<Post> postListByMember = postQueryAdapter.findAllByTreeHouseAndWriter(treehouse, targetMember, pageable);
188196

@@ -211,7 +219,7 @@ public PostResponseDTO.getMemberPostList getMemberPosts(User user, Long targetMe
211219
})
212220
.collect(Collectors.toList());
213221

214-
return PostMapper.toGetMemberPostList(targetMember, postDtoList);
222+
return PostMapper.toGetMemberPostList(member, targetMember, postDtoList, branches);
215223
}
216224

217225

src/main/java/treehouse/server/api/treehouse/business/TreehouseMapper.java

+9
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,13 @@ public static TreehouseResponseDTO.createTreehouse toCreateTreehouse(TreeHouse t
2020
.treehouseId(treehouse.getId())
2121
.build();
2222
}
23+
24+
public static TreehouseResponseDTO.getTreehouseDetails toGetTreehouseDetails(TreeHouse treehouse) {
25+
return TreehouseResponseDTO.getTreehouseDetails.builder()
26+
.treehouseId(treehouse.getId())
27+
.treehouseName(treehouse.getName())
28+
.treehouseSize(treehouse.getMemberList().size())
29+
.treehouseImageUrl(null) //TODO: 이미지 URL 설정
30+
.build();
31+
}
2332
}

src/main/java/treehouse/server/api/treehouse/business/TreehouseService.java

+7
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.springframework.transaction.annotation.Transactional;
77
import treehouse.server.api.member.implementation.MemberQueryAdapter;
88
import treehouse.server.api.treehouse.implementation.TreehouseCommandAdapter;
9+
import treehouse.server.api.treehouse.implementation.TreehouseQueryAdapter;
910
import treehouse.server.api.treehouse.presentation.dto.TreehouseRequestDTO;
1011
import treehouse.server.api.treehouse.presentation.dto.TreehouseResponseDTO;
1112
import treehouse.server.global.entity.treeHouse.TreeHouse;
@@ -17,6 +18,7 @@
1718
public class TreehouseService {
1819

1920
private final TreehouseCommandAdapter treehouseCommandAdapter;
21+
private final TreehouseQueryAdapter treehouseQueryAdapter;
2022

2123
private final MemberQueryAdapter memberQueryAdapter;
2224

@@ -28,5 +30,10 @@ public TreehouseResponseDTO.createTreehouse createTreehouse(TreehouseRequestDTO.
2830
return TreehouseMapper.toCreateTreehouse(savedTreehouse);
2931
}
3032

33+
public TreehouseResponseDTO.getTreehouseDetails getTreehouseDetails(Long treehouseId) {
34+
TreeHouse treehouse = treehouseQueryAdapter.getTreehouseById(treehouseId);
35+
return TreehouseMapper.toGetTreehouseDetails(treehouse);
36+
}
37+
3138

3239
}

src/main/java/treehouse/server/api/treehouse/presentation/TreehouseApi.java

+9-4
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,7 @@
55
import lombok.RequiredArgsConstructor;
66
import lombok.extern.slf4j.Slf4j;
77
import org.springframework.validation.annotation.Validated;
8-
import org.springframework.web.bind.annotation.PostMapping;
9-
import org.springframework.web.bind.annotation.RequestBody;
10-
import org.springframework.web.bind.annotation.RequestMapping;
11-
import org.springframework.web.bind.annotation.RestController;
8+
import org.springframework.web.bind.annotation.*;
129
import treehouse.server.api.treehouse.business.TreehouseService;
1310
import treehouse.server.api.treehouse.presentation.dto.TreehouseRequestDTO;
1411
import treehouse.server.api.treehouse.presentation.dto.TreehouseResponseDTO;
@@ -31,4 +28,12 @@ public CommonResponse<TreehouseResponseDTO.createTreehouse> createTreehouse(
3128
) {
3229
return CommonResponse.onSuccess(treehouseService.createTreehouse(request));
3330
}
31+
32+
@GetMapping("/{treehouseId}")
33+
@Operation(summary = "트리하우스 조회 🔑", description = "트리하우스 정보를 조회합니다.")
34+
public CommonResponse<TreehouseResponseDTO.getTreehouseDetails> getTreehouseDetails(
35+
@PathVariable Long treehouseId
36+
) {
37+
return CommonResponse.onSuccess(treehouseService.getTreehouseDetails(treehouseId));
38+
}
3439
}

src/main/java/treehouse/server/api/treehouse/presentation/dto/TreehouseResponseDTO.java

+12
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,16 @@ public static class createTreehouse {
1313

1414
private Long treehouseId;
1515
}
16+
17+
@Builder
18+
@Getter
19+
@NoArgsConstructor
20+
@AllArgsConstructor
21+
public static class getTreehouseDetails {
22+
23+
private Long treehouseId;
24+
private String treehouseName;
25+
private Integer treehouseSize;
26+
private String treehouseImageUrl;
27+
}
1628
}

src/main/java/treehouse/server/global/entity/Invitation/Invitation.java

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class Invitation extends BaseDateTimeEntity {
2323
private String phone;
2424

2525
@Setter
26+
@Enumerated(EnumType.STRING)
2627
private InvitationStatus status;
2728

2829
private LocalDateTime expiredAt; //초대장 만료일자
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package treehouse.server.global.exception.ThrowClass;
2+
3+
import treehouse.server.global.exception.BaseErrorCode;
4+
5+
public class InvitationException extends GeneralException{
6+
7+
public InvitationException(BaseErrorCode errorCode) {
8+
super(errorCode);
9+
}
10+
}

0 commit comments

Comments
 (0)