From 37729115365f9abc25197218d59136ec40e28ff4 Mon Sep 17 00:00:00 2001 From: devbattery Date: Tue, 21 Jan 2025 10:21:38 +0900 Subject: [PATCH] =?UTF-8?q?Fix(be)=20#21:=20Member=EC=99=80=20GroupChatroo?= =?UTF-8?q?m=20=EC=97=B0=EA=B4=80=EA=B4=80=EA=B3=84=20=EC=9E=AC=EB=A7=A4?= =?UTF-8?q?=ED=95=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../be/member/domain/entity/MemberEntity.java | 9 +++-- .../convertor/ChatroomConvertor.java | 13 ++----- .../service/GroupChatroomService.java | 37 ++++++++++--------- .../chatRoom/domain/GroupChatroom.java | 11 ++++-- .../chatRoom/domain/MemberRChatroom.java | 19 ++++++---- .../repository/GroupChatRepository.java | 6 ++- .../persistence/GroupChatRepositoryImpl.java | 12 +++--- .../jpa/GroupChatroomJpaRepository.java | 20 +++++----- .../controller/ChatroomReadController.java | 26 ++++++------- 9 files changed, 82 insertions(+), 71 deletions(-) diff --git a/be/src/main/java/movlit/be/member/domain/entity/MemberEntity.java b/be/src/main/java/movlit/be/member/domain/entity/MemberEntity.java index 2f7a79ce..f1e70fdb 100644 --- a/be/src/main/java/movlit/be/member/domain/entity/MemberEntity.java +++ b/be/src/main/java/movlit/be/member/domain/entity/MemberEntity.java @@ -1,13 +1,16 @@ package movlit.be.member.domain.entity; +import jakarta.persistence.CascadeType; import jakarta.persistence.Column; import jakarta.persistence.Embedded; import jakarta.persistence.EmbeddedId; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; import jakarta.persistence.Table; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; import lombok.Builder; import lombok.Getter; @@ -65,8 +68,8 @@ public class MemberEntity { private boolean delYn; @Getter - @ManyToOne(fetch = FetchType.LAZY) - private MemberRChatroom memberRChatroom; + @OneToMany(mappedBy = "member", cascade = CascadeType.ALL, orphanRemoval = true) + private List memberRChatroom = new ArrayList<>(); @Builder public MemberEntity(MemberId memberId, String email, String nickname, String password, String dob, @@ -102,7 +105,7 @@ public List getMemberGenreEntityList() { } public void updateMemberRChatroom(MemberRChatroom memberRChatroom) { - this.memberRChatroom = memberRChatroom; + this.memberRChatroom.add(memberRChatroom); } } diff --git a/be/src/main/java/movlit/be/pub_sub/chatRoom/application/convertor/ChatroomConvertor.java b/be/src/main/java/movlit/be/pub_sub/chatRoom/application/convertor/ChatroomConvertor.java index 20d72668..f10bc171 100644 --- a/be/src/main/java/movlit/be/pub_sub/chatRoom/application/convertor/ChatroomConvertor.java +++ b/be/src/main/java/movlit/be/pub_sub/chatRoom/application/convertor/ChatroomConvertor.java @@ -4,7 +4,6 @@ import java.util.Objects; import movlit.be.common.exception.ContentTypeNotExistException; import movlit.be.common.util.IdFactory; -import movlit.be.common.util.IdGenerator; import movlit.be.member.domain.entity.MemberEntity; import movlit.be.pub_sub.chatRoom.domain.GroupChatroom; import movlit.be.pub_sub.chatRoom.domain.MemberRChatroom; @@ -15,19 +14,15 @@ public class ChatroomConvertor { private ChatroomConvertor() { } - public static MemberRChatroom makeMemberRChatroom(MemberEntity member) { - MemberRChatroom memberRChatroom = new MemberRChatroom(IdFactory.createMemberRChatroom(), LocalDateTime.now()); - memberRChatroom.addMember(member); - return memberRChatroom; + public static MemberRChatroom makeNonReMemberRChatroom() { + return new MemberRChatroom(IdFactory.createMemberRChatroom(), LocalDateTime.now()); } - public static GroupChatroom makeGroupChatroom(GroupChatroomRequest request, MemberRChatroom memberRChatroom) { - GroupChatroom groupChatroom = new GroupChatroom(IdFactory.createGroupChatroomId(), + public static GroupChatroom makeNonReGroupChatroom(GroupChatroomRequest request) { + return new GroupChatroom(IdFactory.createGroupChatroomId(), request.getRoomName(), generateContentId(request.getContentType(), request.getContentId()), LocalDateTime.now()); - groupChatroom.updateMemberRChatroom(memberRChatroom); - return groupChatroom; } private static String generateContentId(String contentType, Long contentId) { diff --git a/be/src/main/java/movlit/be/pub_sub/chatRoom/application/service/GroupChatroomService.java b/be/src/main/java/movlit/be/pub_sub/chatRoom/application/service/GroupChatroomService.java index 0a9eaab1..fae9038e 100644 --- a/be/src/main/java/movlit/be/pub_sub/chatRoom/application/service/GroupChatroomService.java +++ b/be/src/main/java/movlit/be/pub_sub/chatRoom/application/service/GroupChatroomService.java @@ -27,29 +27,32 @@ public class GroupChatroomService { private final GroupChatRepository groupChatRepository; private final MemberReadService memberReadService; - private final MemberRChatroomService memberRChatroomService; - public List fetchMyGroupChatList(MemberId memberId) { - if (memberId != null) { - - List myGroupChatList = groupChatRepository.findAllByMemberId(memberId); - log.info("::GroupChatroomService_fetchMyGroupChatList::"); - log.info(">> myGroupchatList : " + myGroupChatList.toString()); - - return myGroupChatList; - } else { - throw new ChatroomNotFoundException(); - } - } +// public List fetchMyGroupChatList(MemberId memberId) { +// if (memberId != null) { +// +// List myGroupChatList = groupChatRepository.findAllByMemberId(memberId); +// log.info("::GroupChatroomService_fetchMyGroupChatList::"); +// log.info(">> myGroupchatList : " + myGroupChatList.toString()); +// +// return myGroupChatList; +// } else { +// throw new ChatroomNotFoundException(); +// } +// } @Transactional public GroupChatroomResponse createGroupChatroom(GroupChatroomRequest request, MemberId memberId) { + GroupChatroom groupChatroom = ChatroomConvertor.makeNonReGroupChatroom(request); + MemberRChatroom memberRChatroom = ChatroomConvertor.makeNonReMemberRChatroom(); + MemberEntity member = memberReadService.findEntityByMemberId(memberId); - MemberRChatroom memberRChatroom = ChatroomConvertor.makeMemberRChatroom(member); - memberRChatroomService.save(memberRChatroom); - GroupChatroom groupChatroom = ChatroomConvertor.makeGroupChatroom(request, memberRChatroom); - return groupChatRepository.create(groupChatroom); + memberRChatroom.updateGroupChatRoom(groupChatroom); + memberRChatroom.updateMember(member); + groupChatroom.updateMemberRChatroom(memberRChatroom); // 그룹 채팅방에 멤버를 참여시킨다 + + return groupChatRepository.create(groupChatroom); } public List fetchMembersInGroupChatroom(GroupChatroomId groupChatroomId){ diff --git a/be/src/main/java/movlit/be/pub_sub/chatRoom/domain/GroupChatroom.java b/be/src/main/java/movlit/be/pub_sub/chatRoom/domain/GroupChatroom.java index 95aa6613..8880f60b 100644 --- a/be/src/main/java/movlit/be/pub_sub/chatRoom/domain/GroupChatroom.java +++ b/be/src/main/java/movlit/be/pub_sub/chatRoom/domain/GroupChatroom.java @@ -1,11 +1,15 @@ package movlit.be.pub_sub.chatRoom.domain; +import jakarta.persistence.CascadeType; import jakarta.persistence.EmbeddedId; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; import jakarta.persistence.Table; import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; @@ -23,8 +27,8 @@ public class GroupChatroom { private String contentId; // MV_uuid, BK_uuid private LocalDateTime regDt; - @ManyToOne(fetch = FetchType.LAZY) - private MemberRChatroom memberRChatroom; + @OneToMany(mappedBy = "groupChatroom", cascade = CascadeType.ALL, orphanRemoval = true) + private List memberRChatroom = new ArrayList<>(); public GroupChatroom(GroupChatroomId groupChatroomId, String roomName, String contentId, LocalDateTime regDt) { this.groupChatroomId = groupChatroomId; @@ -34,8 +38,7 @@ public GroupChatroom(GroupChatroomId groupChatroomId, String roomName, String co } public void updateMemberRChatroom(MemberRChatroom memberRChatroom) { - this.memberRChatroom = memberRChatroom; - memberRChatroom.getGroupChatRoom().add(this); + this.memberRChatroom.add(memberRChatroom); } } diff --git a/be/src/main/java/movlit/be/pub_sub/chatRoom/domain/MemberRChatroom.java b/be/src/main/java/movlit/be/pub_sub/chatRoom/domain/MemberRChatroom.java index 36db7069..7fdab4d6 100644 --- a/be/src/main/java/movlit/be/pub_sub/chatRoom/domain/MemberRChatroom.java +++ b/be/src/main/java/movlit/be/pub_sub/chatRoom/domain/MemberRChatroom.java @@ -3,6 +3,8 @@ import jakarta.persistence.CascadeType; import jakarta.persistence.EmbeddedId; import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.ManyToOne; import jakarta.persistence.OneToMany; import jakarta.persistence.Table; import java.time.LocalDateTime; @@ -23,11 +25,11 @@ public class MemberRChatroom { @EmbeddedId private MemberRChatroomId memberRChatroomId; - @OneToMany(mappedBy = "memberRChatroom", cascade = CascadeType.ALL, orphanRemoval = true) - private List member = new ArrayList<>(); + @ManyToOne(fetch = FetchType.LAZY) + private MemberEntity member; - @OneToMany(mappedBy = "memberRChatroom", cascade = CascadeType.ALL, orphanRemoval = true) - private List groupChatRoom = new ArrayList<>(); + @ManyToOne(fetch = FetchType.LAZY) + private GroupChatroom groupChatroom; private LocalDateTime regDt; @@ -36,9 +38,12 @@ public MemberRChatroom(MemberRChatroomId memberRChatroomId, LocalDateTime regDt) this.regDt = regDt; } - public void addMember(MemberEntity member) { - this.member.add(member); - member.updateMemberRChatroom(this); + public void updateMember(MemberEntity member) { + this.member = member; + } + + public void updateGroupChatRoom(GroupChatroom groupChatroom) { + this.groupChatroom = groupChatroom; } } diff --git a/be/src/main/java/movlit/be/pub_sub/chatRoom/domain/repository/GroupChatRepository.java b/be/src/main/java/movlit/be/pub_sub/chatRoom/domain/repository/GroupChatRepository.java index 05d279ff..6a186921 100644 --- a/be/src/main/java/movlit/be/pub_sub/chatRoom/domain/repository/GroupChatRepository.java +++ b/be/src/main/java/movlit/be/pub_sub/chatRoom/domain/repository/GroupChatRepository.java @@ -1,7 +1,6 @@ package movlit.be.pub_sub.chatRoom.domain.repository; import java.util.List; -import java.util.Optional; import movlit.be.common.util.ids.GroupChatroomId; import movlit.be.common.util.ids.MemberId; import movlit.be.pub_sub.chatRoom.domain.GroupChatroom; @@ -13,8 +12,11 @@ public interface GroupChatRepository { GroupChatroomResponse create(GroupChatroom groupChatroom); - List findAllByMemberId(MemberId memberId); + +// List findAllByMemberId(MemberId memberId); List findMembersByChatroomId(@Param("chatroomId") GroupChatroomId chatroomId); + GroupChatroom findByChatroomId(GroupChatroomId chatroomId); + } diff --git a/be/src/main/java/movlit/be/pub_sub/chatRoom/infra/persistence/GroupChatRepositoryImpl.java b/be/src/main/java/movlit/be/pub_sub/chatRoom/infra/persistence/GroupChatRepositoryImpl.java index 9fdd6ddf..e153c72f 100644 --- a/be/src/main/java/movlit/be/pub_sub/chatRoom/infra/persistence/GroupChatRepositoryImpl.java +++ b/be/src/main/java/movlit/be/pub_sub/chatRoom/infra/persistence/GroupChatRepositoryImpl.java @@ -47,11 +47,11 @@ public List findMembersByChatroomId(GroupChatroomId return members; } - public List findAllByMemberId(MemberId memberId) { - List myGroupChatList = groupChatroomJpaRepository.findAllByMemberId(memberId) - .orElseThrow(ChatroomNotFoundException::new); - - return myGroupChatList; - } +// public List findAllByMemberId(MemberId memberId) { +// List myGroupChatList = groupChatroomJpaRepository.findAllByMemberId(memberId) +// .orElseThrow(ChatroomNotFoundException::new); +// +// return myGroupChatList; +// } } diff --git a/be/src/main/java/movlit/be/pub_sub/chatRoom/infra/persistence/jpa/GroupChatroomJpaRepository.java b/be/src/main/java/movlit/be/pub_sub/chatRoom/infra/persistence/jpa/GroupChatroomJpaRepository.java index 0a9b990a..78c3dabe 100644 --- a/be/src/main/java/movlit/be/pub_sub/chatRoom/infra/persistence/jpa/GroupChatroomJpaRepository.java +++ b/be/src/main/java/movlit/be/pub_sub/chatRoom/infra/persistence/jpa/GroupChatroomJpaRepository.java @@ -25,16 +25,16 @@ public interface GroupChatroomJpaRepository extends JpaRepository findMembersByChatroomId(@Param("chatroomId") GroupChatroomId chatroomId); - @Query("SELECT NEW movlit.be.pub_sub.chatRoom.presentation.dto.GroupChatroomResponseDto( " - + "gc.groupChatroomId, " - + "gc.contentId, " - + "gc.roomName, " - + "gc.regDt " - + " ) FROM GroupChatroom gc " - + "LEFT JOIN MemberRChatroom mrc on mrc.memberRChatroomId = gc.memberRChatroom.memberRChatroomId " - + "LEFT JOIN MemberEntity m on m.memberRChatroom.memberRChatroomId = mrc.memberRChatroomId " - + "WHERE m.memberId = :memberId ") - Optional> findAllByMemberId(@Param("memberId") MemberId memberId); +// @Query("SELECT NEW movlit.be.pub_sub.chatRoom.presentation.dto.GroupChatroomResponseDto( " +// + "gc.groupChatroomId, " +// + "gc.contentId, " +// + "gc.roomName, " +// + "gc.regDt " +// + " ) FROM GroupChatroom gc " +// + "LEFT JOIN MemberRChatroom mrc ON mrc.memberRChatroomId = gc.memberRChatroom.memberRChatroomId " +// + "LEFT JOIN MemberEntity m ON m.memberRChatroom.memberRChatroomId = mrc.memberRChatroomId " +// + "WHERE m.memberId = :memberId ") +// Optional> findAllByMemberId(@Param("memberId") MemberId memberId); } diff --git a/be/src/main/java/movlit/be/pub_sub/chatRoom/presentation/controller/ChatroomReadController.java b/be/src/main/java/movlit/be/pub_sub/chatRoom/presentation/controller/ChatroomReadController.java index c6f567c0..436aa9ba 100644 --- a/be/src/main/java/movlit/be/pub_sub/chatRoom/presentation/controller/ChatroomReadController.java +++ b/be/src/main/java/movlit/be/pub_sub/chatRoom/presentation/controller/ChatroomReadController.java @@ -24,18 +24,18 @@ public class ChatroomReadController { - @GetMapping("/myGroupChatrooms") - public ResponseEntity fetchMyGroupChats(@AuthenticationPrincipal MyMemberDetails details){ - if(details != null){ - MemberId memberId = details.getMemberId(); - List myGroupChatListRes = groupChatroomService.fetchMyGroupChatList(memberId); - - return ResponseEntity.ok(myGroupChatListRes); - - }else{ - return ResponseEntity.badRequest().build(); - } - - } +// @GetMapping("/myGroupChatrooms") +// public ResponseEntity fetchMyGroupChats(@AuthenticationPrincipal MyMemberDetails details){ +// if(details != null){ +// MemberId memberId = details.getMemberId(); +// List myGroupChatListRes = groupChatroomService.fetchMyGroupChatList(memberId); +// +// return ResponseEntity.ok(myGroupChatListRes); +// +// }else{ +// return ResponseEntity.badRequest().build(); +// } +// +// } }