Skip to content

Commit a0a0e53

Browse files
authored
Merge pull request #113 from prgrms-web-devcourse-final-project/Feature/QFEED-168-GrouPostComment
[QFEED-147] feature : 그룹 게시물/댓글 작성 시 그룹 멤버 여부 확인 로직 추가
2 parents 1b18972 + 9e9842a commit a0a0e53

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

module-application/src/main/java/com/wsws/moduleapplication/group/service/GroupCommentService.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@
88
import com.wsws.moduleapplication.group.event.GroupCommentLikedEvent;
99
import com.wsws.moduleapplication.group.exception.GroupCommentNotFoundException;
1010
import com.wsws.moduleapplication.group.exception.GroupPostNotFoundException;
11+
import com.wsws.moduleapplication.group.exception.MemberNotInGroupException;
1112
import com.wsws.moduleapplication.group.exception.NotOwnerException;
1213
import com.wsws.moduleapplication.usercontext.user.exception.AlreadyLikedException;
1314
import com.wsws.moduleapplication.usercontext.user.exception.NotLikedException;
1415
import com.wsws.moduledomain.group.GroupComment;
1516
import com.wsws.moduledomain.group.GroupPost;
1617
import com.wsws.moduledomain.group.repo.GroupCommentRepository;
18+
import com.wsws.moduledomain.group.repo.GroupMemberRepository;
1719
import com.wsws.moduledomain.group.repo.GroupPostRepository;
1820
import com.wsws.moduledomain.feed.like.Like;
1921
import com.wsws.moduledomain.feed.like.LikeRepository;
@@ -37,6 +39,7 @@ public class GroupCommentService {
3739
private final LikeRepository likeRepository;
3840
private final GroupPostRepository groupPostRepository;
3941
private final ApplicationEventPublisher eventPublisher;
42+
private final GroupMemberRepository groupMemberRepository;
4043

4144

4245

@@ -45,6 +48,8 @@ public class GroupCommentService {
4548
public void createGroupComment(CreateGroupCommentRequest request, Long groupPostId, String userId) {
4649
GroupPost groupPost = getGroupPost(groupPostId);
4750

51+
validateGroupMembership(userId, groupPost.getGroupId().getValue());
52+
4853
GroupComment groupComment = GroupComment.create(
4954
null,
5055
request.content(),
@@ -165,11 +170,19 @@ private GroupPost getGroupPost(Long groupPostId) {
165170
.orElseThrow(() -> GroupPostNotFoundException.EXCEPTION);
166171
}
167172

173+
168174
private GroupComment getGroupComment(Long groupCommentId) {
169175
return groupCommentRepository.findById(groupCommentId)
170176
.orElseThrow(() -> GroupCommentNotFoundException.EXCEPTION);
171177
}
172178

179+
// 그룹 멤버 여부 확인
180+
private void validateGroupMembership(String userId, Long groupId) {
181+
boolean isMember = groupMemberRepository.existsByUserIdAndGroupId(userId, groupId);
182+
if (!isMember) {
183+
throw MemberNotInGroupException.EXCEPTION; }
184+
}
185+
173186
// 본인 여부 확인
174187
private void validateUser(GroupComment groupComment, String userId) {
175188
if (!groupComment.getUserId().equals(UserId.of(userId))) {
@@ -181,4 +194,3 @@ private void validateUser(GroupComment groupComment, String userId) {
181194

182195

183196

184-

module-application/src/main/java/com/wsws/moduleapplication/group/service/GroupPostService.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.wsws.moduleapplication.feed.dto.LikeServiceRequest;
77
import com.wsws.moduleapplication.group.event.GroupPostLikeEvent;
88
import com.wsws.moduleapplication.group.exception.GroupPostNotFoundException;
9+
import com.wsws.moduleapplication.group.exception.MemberNotInGroupException;
910
import com.wsws.moduleapplication.group.exception.NotOwnerException;
1011
import com.wsws.moduleapplication.usercontext.user.exception.AlreadyLikedException;
1112
import com.wsws.moduleapplication.usercontext.user.exception.NotLikedException;
@@ -16,6 +17,7 @@
1617
import com.wsws.moduledomain.group.dto.GroupCommentDto;
1718
import com.wsws.moduledomain.group.dto.GroupPostDetailDto;
1819
import com.wsws.moduledomain.group.repo.GroupCommentRepository;
20+
import com.wsws.moduledomain.group.repo.GroupMemberRepository;
1921
import com.wsws.moduledomain.group.repo.GroupPostRepository;
2022
import com.wsws.moduledomain.feed.like.Like;
2123
import com.wsws.moduledomain.feed.like.LikeRepository;
@@ -38,10 +40,15 @@ public class GroupPostService {
3840
private final LikeRepository likeRepository;
3941
private final GroupCommentRepository groupCommentRepository;
4042
private final ApplicationEventPublisher eventPublisher;
43+
private final GroupMemberRepository groupMemberRepository;
44+
4145

4246
// 게시물 생성
4347
@Transactional
4448
public void createGroupPost(CreateGroupPostRequest request, Long groupId, String userId) {
49+
50+
validateGroupMembership(userId, groupId);
51+
4552
GroupPost post = GroupPost.create(
4653
null, groupId, request.content(),
4754
processGroupPostImage(request.url()), userId, 0L, 0L
@@ -150,6 +157,14 @@ private boolean isAlreadyLiked(Long targetId, String userId, TargetType targetTy
150157
return likeRepository.existsByTargetIdAndUserIdAndTargetType(targetId, userId, targetType);
151158
}
152159

160+
161+
// 그룹 멤버 여부 확인
162+
private void validateGroupMembership(String userId, Long groupId) {
163+
boolean isMember = groupMemberRepository.existsByUserIdAndGroupId(userId, groupId);
164+
if (!isMember) {
165+
throw MemberNotInGroupException.EXCEPTION; }
166+
}
167+
153168
// 게시글 이미지
154169
private String processGroupPostImage(MultipartFile groupImageFile) {
155170
if (groupImageFile != null && !groupImageFile.isEmpty()) {

0 commit comments

Comments
 (0)