diff --git a/src/main/java/efub/back/jupjup/domain/userHeart/dto/request/UserHeartReqDto.java b/src/main/java/efub/back/jupjup/domain/userHeart/dto/request/UserHeartReqDto.java index 2bc06af..421a0c2 100644 --- a/src/main/java/efub/back/jupjup/domain/userHeart/dto/request/UserHeartReqDto.java +++ b/src/main/java/efub/back/jupjup/domain/userHeart/dto/request/UserHeartReqDto.java @@ -1,5 +1,7 @@ package efub.back.jupjup.domain.userHeart.dto.request; +import java.util.List; + import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; @@ -8,5 +10,5 @@ @NoArgsConstructor(access = AccessLevel.PROTECTED) public class UserHeartReqDto { private Long postId; - private Long targetId; + private List targetIds; } diff --git a/src/main/java/efub/back/jupjup/domain/userHeart/repository/UserHeartRepository.java b/src/main/java/efub/back/jupjup/domain/userHeart/repository/UserHeartRepository.java index 0609aaf..a7e0c0b 100644 --- a/src/main/java/efub/back/jupjup/domain/userHeart/repository/UserHeartRepository.java +++ b/src/main/java/efub/back/jupjup/domain/userHeart/repository/UserHeartRepository.java @@ -7,6 +7,6 @@ import efub.back.jupjup.domain.userHeart.domain.UserHeart; public interface UserHeartRepository extends JpaRepository { - @Query("SELECT COUNT(u) FROM UserHeart u WHERE u.id = :memberId") + @Query("SELECT COUNT(u) FROM UserHeart u WHERE u.member.id = :memberId") Long countUserHeartsByMemberId(@Param("memberId") Long memberId); } diff --git a/src/main/java/efub/back/jupjup/domain/userHeart/service/UserHeartService.java b/src/main/java/efub/back/jupjup/domain/userHeart/service/UserHeartService.java index 4469170..2e221e9 100644 --- a/src/main/java/efub/back/jupjup/domain/userHeart/service/UserHeartService.java +++ b/src/main/java/efub/back/jupjup/domain/userHeart/service/UserHeartService.java @@ -35,15 +35,19 @@ public class UserHeartService { private final PostRepository postRepository; private final PostjoinRepository postjoinRepository; - public ResponseEntity giveUserHeart(Member member, UserHeartReqDto userHeartReqDto) { - Member target = memberRepository.findById(userHeartReqDto.getTargetId()) - .orElseThrow(MemberNotFoundException::new); - Post post = postRepository.findById(userHeartReqDto.getPostId()).orElseThrow(PostNotFoundException::new); + public ResponseEntity giveUserHeart(Member writer, UserHeartReqDto userHeartReqDto) { + Post post = postRepository.findById(userHeartReqDto.getPostId()) + .orElseThrow(PostNotFoundException::new); - checkPloggingMember(userHeartReqDto, member, target, post); + userHeartReqDto.getTargetIds().forEach(id -> { + Member target = memberRepository.findById(id) + .orElseThrow(MemberNotFoundException::new); - UserHeart userHeart = new UserHeart(target, post); - userHeartRepository.save(userHeart); + checkPloggingMember(writer, target, post); + + UserHeart userHeart = new UserHeart(target, post); + userHeartRepository.save(userHeart); + }); return ResponseEntity.ok() .body(StatusResponse.builder() @@ -66,7 +70,7 @@ public ResponseEntity getUserHearts(Long memberId) { } // 플로깅에 참여한 유저들인지 확인 - private void checkPloggingMember(UserHeartReqDto userHeartReqDto, Member member, Member target, Post post) { + private void checkPloggingMember(Member writer, Member target, Post post) { List joinedMembers = postjoinRepository.findAllByPost(post) .stream() .map(Postjoin::getMember) @@ -75,16 +79,16 @@ private void checkPloggingMember(UserHeartReqDto userHeartReqDto, Member member, joinedMembers.add(author); Optional memberOptional = joinedMembers.stream() - .filter(m -> m.getId().equals(member.getId())) + .filter(m -> m.getId().equals(writer.getId())) .findFirst(); Optional targetOptional = joinedMembers.stream() .filter(m -> m.getId().equals(target.getId())) .findFirst(); if (memberOptional.isEmpty() && targetOptional.isEmpty()) { - throw new PostjoinNotFoundException(member.getId(), target.getId()); + throw new PostjoinNotFoundException(writer.getId(), target.getId()); } else if (memberOptional.isEmpty()) { - throw new PostjoinNotFoundException(member.getId()); + throw new PostjoinNotFoundException(writer.getId()); } else if (targetOptional.isEmpty()) { throw new PostjoinNotFoundException(target.getId()); }