From e06646e4e32c7b27abd6350b2e93dc9aa77602b1 Mon Sep 17 00:00:00 2001 From: junyong Date: Thu, 12 Feb 2026 20:30:15 +0900 Subject: [PATCH 1/3] =?UTF-8?q?[Refactor]=20=ED=8C=80=EB=B3=B4=EB=93=9C=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=95=20=EB=B0=A9=EB=B2=95=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../team/workspace/service/PostService.java | 57 +++++++++++++------ .../team/workspace/PostRepository.java | 8 +++ 2 files changed, 48 insertions(+), 17 deletions(-) diff --git a/nect-api/src/main/java/com/nect/api/domain/team/workspace/service/PostService.java b/nect-api/src/main/java/com/nect/api/domain/team/workspace/service/PostService.java index 89980a67..77dfdca5 100644 --- a/nect-api/src/main/java/com/nect/api/domain/team/workspace/service/PostService.java +++ b/nect-api/src/main/java/com/nect/api/domain/team/workspace/service/PostService.java @@ -275,34 +275,57 @@ public PostListResDto getPostList(Long projectId, Long userId, PostType type, in return new PostListResDto(mapped, pageInfo); } + // FREE만 조회 요청일 때는 FREE만 페이징 (DB Pageable 사용 금지) + if (type == PostType.FREE) { + List freePosts = postRepository.findFreePosts(projectId, baseSort); + return paginatePosts(sortPosts(freePosts), page, fixedSize); + } - // FREE만 페이지네이션 - Pageable pageable = PageRequest.of(page, fixedSize, baseSort); - Page freePage = postRepository.findFreePosts(projectId, pageable); + // 공지 + FREE 전체를 합쳐서 페이징 (type == null) + List notices = postRepository.findAllNotices(projectId, baseSort); + List freePosts = postRepository.findFreePosts(projectId, baseSort); - List result = new java.util.ArrayList<>(); + List combined = new ArrayList<>(notices.size() + freePosts.size()); + combined.addAll(sortPosts(notices)); + combined.addAll(sortPosts(freePosts)); - // page==0 일 때만 공지 전부 상단에 붙이기 - List notices = postRepository.findAllNotices(projectId, baseSort); - if (type == null && page == 0) { - result.addAll(notices.stream().map(this::toSummary).toList()); - } + return paginatePosts(combined, page, fixedSize); + } - // FREE 페이징 결과 붙이기 - result.addAll(freePage.getContent().stream().map(this::toSummary).toList()); + private PostListResDto paginatePosts(List posts, int page, int size) { + int totalElements = posts.size(); + int totalPages = totalElements == 0 ? 0 : (int) Math.ceil((double) totalElements / size); + int start = page * size; + int end = Math.min(start + size, totalElements); + boolean hasNext = end < totalElements; + + List result = (start >= totalElements) + ? List.of() + : posts.subList(start, end).stream() + .map(this::toSummary) + .toList(); - // pageInfo는 FREE 기준으로만 계산 (공지는 제외) PostListResDto.PageInfo pageInfo = new PostListResDto.PageInfo( - freePage.getNumber(), - freePage.getSize(), - freePage.getTotalElements() + + notices.size(), - freePage.getTotalPages(), - freePage.hasNext() + page, + size, + totalElements, + totalPages, + hasNext ); return new PostListResDto(result, pageInfo); } + private List sortPosts(List posts) { + return posts.stream() + .sorted((a, b) -> { + int cmp = b.getCreatedAt().compareTo(a.getCreatedAt()); + if (cmp != 0) return cmp; + return b.getId().compareTo(a.getId()); + }) + .toList(); + } + private PostListResDto.PostSummaryDto toSummary(Post p) { var u = p.getAuthor(); PostListResDto.AuthorDto authorDto = (u == null) diff --git a/nect-core/src/main/java/com/nect/core/repository/team/workspace/PostRepository.java b/nect-core/src/main/java/com/nect/core/repository/team/workspace/PostRepository.java index 3353970a..9c7fb7b8 100644 --- a/nect-core/src/main/java/com/nect/core/repository/team/workspace/PostRepository.java +++ b/nect-core/src/main/java/com/nect/core/repository/team/workspace/PostRepository.java @@ -33,6 +33,14 @@ public interface PostRepository extends JpaRepository { """) Page findFreePosts(@Param("projectId") Long projectId, Pageable pageable); + @Query(""" + select p from Post p + where p.project.id = :projectId + and p.deletedAt is null + and p.postType <> com.nect.core.entity.team.workspace.enums.PostType.NOTICE + """) + List findFreePosts(@Param("projectId") Long projectId, Sort sort); + @Query(""" select p from Post p where p.project.id = :projectId From 2832877f47df99305daff7482cfc472b67db25d6 Mon Sep 17 00:00:00 2001 From: junyong Date: Thu, 12 Feb 2026 21:11:37 +0900 Subject: [PATCH 2/3] =?UTF-8?q?[Fix]=20DM=20=EC=B1=84=ED=8C=85=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20=EC=83=81=ED=83=9C=20=ED=94=84=EB=A1=9C=ED=95=84=20?= =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EB=9C=A8=EA=B2=8C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/nect/api/domain/dm/dto/DmRoomSummaryDto.java | 2 +- .../main/java/com/nect/api/domain/dm/service/DmService.java | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/nect-api/src/main/java/com/nect/api/domain/dm/dto/DmRoomSummaryDto.java b/nect-api/src/main/java/com/nect/api/domain/dm/dto/DmRoomSummaryDto.java index 9a839cb2..5001577a 100644 --- a/nect-api/src/main/java/com/nect/api/domain/dm/dto/DmRoomSummaryDto.java +++ b/nect-api/src/main/java/com/nect/api/domain/dm/dto/DmRoomSummaryDto.java @@ -49,7 +49,7 @@ public static DmRoomSummaryDto fromOtherUser(Long userId, DirectMessage message) .build(); } - public void setImageUrl(String url) { + public void otherUserImageUrl(String url) { this.otherUserImageUrl = url; } diff --git a/nect-api/src/main/java/com/nect/api/domain/dm/service/DmService.java b/nect-api/src/main/java/com/nect/api/domain/dm/service/DmService.java index ff0e48a5..d10bc618 100644 --- a/nect-api/src/main/java/com/nect/api/domain/dm/service/DmService.java +++ b/nect-api/src/main/java/com/nect/api/domain/dm/service/DmService.java @@ -126,7 +126,10 @@ public DmRoomListResponse getRooms(Long userId, Long cursor, int size) { List messages = latest.stream() .map(message -> { DmRoomSummaryDto dto = DmRoomSummaryDto.fromOtherUser(userId, message); - dto.setImageUrl(s3Service.getPresignedGetUrl(message.getSender().getProfileImageName())); + User otherUser = userId.equals(message.getSender().getUserId()) + ? message.getReceiver() + : message.getSender(); + dto.otherUserImageUrl(s3Service.getPresignedGetUrl(otherUser.getProfileImageName())); return dto; }) .toList(); From 8c5a69aa0f4e127b567cc6122ec66924f66ee8f2 Mon Sep 17 00:00:00 2001 From: junyong Date: Thu, 12 Feb 2026 21:23:05 +0900 Subject: [PATCH 3/3] =?UTF-8?q?[Fix]=20=ED=8C=80=EC=B1=84=ED=8C=85=20?= =?UTF-8?q?=EB=AA=A9=EB=A1=9D=EC=97=90=EC=84=9C=20=EC=B1=84=ED=8C=85?= =?UTF-8?q?=EB=B0=A9=20=EC=9C=A0=EC=A0=80=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20?= =?UTF-8?q?=EB=B0=98=ED=99=98=20=EC=A0=95=EC=83=81=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../team/chat/converter/ChatConverter.java | 33 ++++++++++--------- .../team/chat/converter/FileConverter.java | 31 +++++++++-------- .../team/chat/service/ChatFileService.java | 11 ++++--- .../domain/team/chat/service/ChatService.java | 16 +++++---- .../team/chat/service/TeamChatService.java | 15 +++++---- 5 files changed, 59 insertions(+), 47 deletions(-) diff --git a/nect-api/src/main/java/com/nect/api/domain/team/chat/converter/ChatConverter.java b/nect-api/src/main/java/com/nect/api/domain/team/chat/converter/ChatConverter.java index 4945af08..1d251b2a 100644 --- a/nect-api/src/main/java/com/nect/api/domain/team/chat/converter/ChatConverter.java +++ b/nect-api/src/main/java/com/nect/api/domain/team/chat/converter/ChatConverter.java @@ -5,6 +5,7 @@ import com.nect.api.domain.team.chat.dto.res.ChatNoticeResponseDto; import com.nect.api.domain.team.chat.dto.res.ChatRoomResponseDto; import com.nect.api.domain.team.chat.dto.res.ProjectMemberResponseDto; +import com.nect.api.global.infra.S3Service; import com.nect.core.entity.team.Project; import com.nect.core.entity.team.chat.ChatMessage; import com.nect.core.entity.team.chat.ChatRoom; @@ -12,6 +13,7 @@ import com.nect.core.entity.user.User; import com.nect.core.entity.team.chat.enums.ChatRoomType; import com.nect.core.entity.team.chat.enums.MessageType; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import java.time.LocalDateTime; @@ -19,18 +21,19 @@ import java.util.stream.Collectors; @Component +@RequiredArgsConstructor public class ChatConverter { - + private final S3Service s3Service; //ChatMessage -> ChatMessageDto - public static ChatMessageDto toMessageDto(ChatMessage message) { + public ChatMessageDto toMessageDto(ChatMessage message) { return ChatMessageDto.builder() .messageId(message.getId()) .roomId(message.getChatRoom().getId()) .userId(message.getUser().getUserId()) .userName(message.getUser().getName()) - .profileImage(message.getUser().getProfileImageName()) + .profileImage(s3Service.getPresignedGetUrl(message.getUser().getProfileImageName())) .content(message.getContent()) .messageType(message.getMessageType()) .isPinned(message.getIsPinned()) @@ -39,7 +42,7 @@ public static ChatMessageDto toMessageDto(ChatMessage message) { } //DTO -> ChatMessage - public static ChatMessage toMessage(ChatMessageDto dto, User user, ChatRoom chatRoom) { + public ChatMessage toMessage(ChatMessageDto dto, User user, ChatRoom chatRoom) { return ChatMessage.builder() .chatRoom(chatRoom) .user(user) @@ -50,7 +53,7 @@ public static ChatMessage toMessage(ChatMessageDto dto, User user, ChatRoom chat } //텍스트 메시지 생성 - public static ChatMessage toTextMessage(ChatRoom chatRoom, User user, String content) { + public ChatMessage toTextMessage(ChatRoom chatRoom, User user, String content) { return ChatMessage.builder() .chatRoom(chatRoom) .user(user) @@ -62,7 +65,7 @@ public static ChatMessage toTextMessage(ChatRoom chatRoom, User user, String con //ChatRoom 변환 //ChatRoom-> DTO - public static ChatRoomDto toRoomDto(ChatRoom room) { + public ChatRoomDto toRoomDto(ChatRoom room) { ChatRoomDto dto = new ChatRoomDto(); dto.setRoomId(room.getId()); dto.setProjectId(room.getProject() != null ? room.getProject().getId() : null); @@ -72,7 +75,7 @@ public static ChatRoomDto toRoomDto(ChatRoom room) { return dto; } //ChatRoom -> >DTO(멤버포함) - public static ChatRoomDto toRoomDto(ChatRoom room, List members) { + public ChatRoomDto toRoomDto(ChatRoom room, List members) { ChatRoomDto dto = toRoomDto(room); // ChatRoomMember에서 userId 추출 @@ -84,7 +87,7 @@ public static ChatRoomDto toRoomDto(ChatRoom room, List members) { return dto; } - public static ChatRoom toChatRoomEntity(Project project, String roomName, ChatRoomType type) { + public ChatRoom toChatRoomEntity(Project project, String roomName, ChatRoomType type) { ChatRoom chatRoom = new ChatRoom(); chatRoom.setProject(project); chatRoom.setName(roomName); @@ -92,7 +95,7 @@ public static ChatRoom toChatRoomEntity(Project project, String roomName, ChatRo return chatRoom; } - public static ChatRoomUser toChatRoomMemberEntity(ChatRoom chatRoom, User user, LocalDateTime lastReadAt) { + public ChatRoomUser toChatRoomMemberEntity(ChatRoom chatRoom, User user, LocalDateTime lastReadAt) { ChatRoomUser member = new ChatRoomUser(); member.setChatRoom(chatRoom); member.setUser(user); @@ -103,7 +106,7 @@ public static ChatRoomUser toChatRoomMemberEntity(ChatRoom chatRoom, User user, return member; } - public static ChatRoomResponseDto toResponseDTO(ChatRoom chatRoom, List profileImages) { + public ChatRoomResponseDto toResponseDTO(ChatRoom chatRoom, List profileImages) { return ChatRoomResponseDto.builder() .roomId(chatRoom.getId()) .projectId(chatRoom.getProject() != null ? chatRoom.getProject().getId() : null) @@ -114,22 +117,22 @@ public static ChatRoomResponseDto toResponseDTO(ChatRoom chatRoom, List .build(); } - public static ProjectMemberResponseDto toProjectMemberResponseDTO(User user) { + public ProjectMemberResponseDto toProjectMemberResponseDTO(User user) { return ProjectMemberResponseDto.builder() .userId(user.getUserId()) .username(user.getNickname()) .build(); } - public static List toProjectMemberResponseDTOList(List users) { + public List toProjectMemberResponseDTOList(List users) { return users.stream() - .map(ChatConverter::toProjectMemberResponseDTO) + .map(this::toProjectMemberResponseDTO) .collect(Collectors.toList()); } //ChatMessage -> ChatNoticeResponseDTO - public static ChatNoticeResponseDto toNoticeResponseDTO(ChatMessage message) { + public ChatNoticeResponseDto toNoticeResponseDTO(ChatMessage message) { return ChatNoticeResponseDto.builder() .messageId(message.getId()) .roomId(message.getChatRoom().getId()) @@ -143,7 +146,7 @@ public static ChatNoticeResponseDto toNoticeResponseDTO(ChatMessage message) { } - public static List toChatRoomUserList(ChatRoom chatRoom, List users) { + public List toChatRoomUserList(ChatRoom chatRoom, List users) { return users.stream() .map(user -> { ChatRoomUser chatRoomUser = new ChatRoomUser(); diff --git a/nect-api/src/main/java/com/nect/api/domain/team/chat/converter/FileConverter.java b/nect-api/src/main/java/com/nect/api/domain/team/chat/converter/FileConverter.java index caaff24b..67eb392d 100644 --- a/nect-api/src/main/java/com/nect/api/domain/team/chat/converter/FileConverter.java +++ b/nect-api/src/main/java/com/nect/api/domain/team/chat/converter/FileConverter.java @@ -11,16 +11,21 @@ import com.nect.core.entity.team.chat.enums.MessageType; import com.nect.core.entity.user.User; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + import java.util.List; import java.util.stream.Collectors; -import static com.nect.api.domain.team.chat.converter.ChatConverter.toMessageDto; - +@Component +@RequiredArgsConstructor public class FileConverter { + private final ChatConverter chatConverter; + // ChatFile Entity -> ChatFileUploadResponseDTO - public static ChatFileUploadResponseDto toFileUploadResponseDTO(ChatFile chatFile) { + public ChatFileUploadResponseDto toFileUploadResponseDTO(ChatFile chatFile) { return new ChatFileUploadResponseDto( chatFile.getId(), chatFile.getOriginalFileName(), @@ -31,16 +36,16 @@ public static ChatFileUploadResponseDto toFileUploadResponseDTO(ChatFile chatFil } - public static ChatMessageDto toFileMessageDto(ChatMessage message, ChatFile chatFile) { + public ChatMessageDto toFileMessageDto(ChatMessage message, ChatFile chatFile) { // 기본 메시지 정보 변환 - ChatMessageDto dto = toMessageDto(message); + ChatMessageDto dto = chatConverter.toMessageDto(message); // 파일 정보 추가 - dto.setFileInfo(FileConverter.toFileUploadResponseDTO(chatFile)); + dto.setFileInfo(toFileUploadResponseDTO(chatFile)); return dto; } //파일 메시지 엔티티 생성 - public static ChatMessage toFileMessage(ChatRoom chatRoom, User user) { + public ChatMessage toFileMessage(ChatRoom chatRoom, User user) { return ChatMessage.builder() .chatRoom(chatRoom) .user(user) @@ -51,7 +56,7 @@ public static ChatMessage toFileMessage(ChatRoom chatRoom, User user) { } // ChatFile 엔티티 생성 - public static ChatFile toFileEntity( + public ChatFile toFileEntity( String originalFileName, String storedFileName, String fileUrl, @@ -70,7 +75,7 @@ public static ChatFile toFileEntity( } // 사진첩 조회를 위한 단건 DTO 변환 - public static ChatFileResponseDto toFileResponseDto(ChatFile chatFile) { + public ChatFileResponseDto toFileResponseDto(ChatFile chatFile) { return new ChatFileResponseDto( chatFile.getId(), chatFile.getOriginalFileName(), @@ -80,13 +85,13 @@ public static ChatFileResponseDto toFileResponseDto(ChatFile chatFile) { } // 파일 조회를 위한 리스트 DTO 변환 (스트림 로직 이동) - public static List toFileResponseDtoList(List chatFiles) { + public List toFileResponseDtoList(List chatFiles) { return chatFiles.stream() - .map(FileConverter::toFileResponseDto) + .map(this::toFileResponseDto) .collect(Collectors.toList()); } - public static ChatRoomAlbumResponseDto toChatRoomAlbumDto( + public ChatRoomAlbumResponseDto toChatRoomAlbumDto( ChatRoom room, List files, int totalFileCount) { @@ -99,7 +104,7 @@ public static ChatRoomAlbumResponseDto toChatRoomAlbumDto( toFileResponseDtoList(files) ); } - public static ChatRoomAlbumDetailDto toChatRoomAlbumDetailDto( + public ChatRoomAlbumDetailDto toChatRoomAlbumDetailDto( ChatRoom room, List files, int totalCount, diff --git a/nect-api/src/main/java/com/nect/api/domain/team/chat/service/ChatFileService.java b/nect-api/src/main/java/com/nect/api/domain/team/chat/service/ChatFileService.java index 45b12195..dfb44d0d 100644 --- a/nect-api/src/main/java/com/nect/api/domain/team/chat/service/ChatFileService.java +++ b/nect-api/src/main/java/com/nect/api/domain/team/chat/service/ChatFileService.java @@ -61,6 +61,7 @@ public class ChatFileService { private final ProjectUserRepository projectUserRepository; private final ProjectRepository projectRepository; private final SharedDocumentRepository sharedDocumentRepository; + private final FileConverter fileConverter; private String uploadDir; @@ -81,10 +82,10 @@ public ChatMessageDto uploadAndSendFile(Long roomId, MultipartFile file, Long us String storedFileName = s3Service.uploadFile(file); String fileUrl = getSafePresignedUrl(storedFileName); - ChatMessage message = FileConverter.toFileMessage(chatRoom, user); + ChatMessage message = fileConverter.toFileMessage(chatRoom, user); chatMessageRepository.save(message); - ChatFile chatFile = FileConverter.toFileEntity( + ChatFile chatFile = fileConverter.toFileEntity( file.getOriginalFilename(), storedFileName, fileUrl, @@ -99,7 +100,7 @@ public ChatMessageDto uploadAndSendFile(Long roomId, MultipartFile file, Long us chatRoomUser.setLastReadAt(LocalDateTime.now()); // 7. DTO 변환 - ChatMessageDto messageDto = FileConverter.toFileMessageDto(message, chatFile); + ChatMessageDto messageDto = fileConverter.toFileMessageDto(message, chatFile); int totalMembers = chatRoomUserRepository.countByChatRoomId(roomId); messageDto.setReadCount(totalMembers - 1); @@ -152,7 +153,7 @@ public List getChatAlbum(Long projectId, int limitPerR List filesWithRefreshedUrls = refreshPresignedUrls(chatFiles); - return FileConverter.toChatRoomAlbumDto( + return fileConverter.toChatRoomAlbumDto( room, filesWithRefreshedUrls, totalFileCount); @@ -187,7 +188,7 @@ public ChatRoomAlbumDetailDto getChatRoomAlbumDetail(Long roomId, int page, int int totalPages = (int) Math.ceil((double) totalCount / size); boolean hasNext = page < totalPages - 1; - return FileConverter.toChatRoomAlbumDetailDto( + return fileConverter.toChatRoomAlbumDetailDto( chatRoom, filesWithRefreshedUrls, totalCount, diff --git a/nect-api/src/main/java/com/nect/api/domain/team/chat/service/ChatService.java b/nect-api/src/main/java/com/nect/api/domain/team/chat/service/ChatService.java index a41b7097..732104ab 100644 --- a/nect-api/src/main/java/com/nect/api/domain/team/chat/service/ChatService.java +++ b/nect-api/src/main/java/com/nect/api/domain/team/chat/service/ChatService.java @@ -47,6 +47,8 @@ public class ChatService { private final RedisPublisher redisPublisher; private final UserRepository userRepository; private final ChatFileRepository chatFileRepository; + private final ChatConverter chatConverter; + private final FileConverter fileConverter; @Transactional public ChatMessageDto sendMessage(Long roomId, Long userId, String content) { @@ -58,7 +60,7 @@ public ChatMessageDto sendMessage(Long roomId, Long userId, String content) { .orElseThrow(() -> new ChatException(ChatErrorCode.CHAT_MEMBER_NOT_FOUND)); // 메시지 생성 및 저장 - ChatMessage message = ChatConverter.toTextMessage(chatRoom, user, content); + ChatMessage message = chatConverter.toTextMessage(chatRoom, user, content); chatMessageRepository.save(message); // 발신자의 lastReadMessageId 업데이트 (본인은 이미 읽음) @@ -70,7 +72,7 @@ public ChatMessageDto sendMessage(Long roomId, Long userId, String content) { senderRoomUser.setLastReadAt(LocalDateTime.now()); // DTO 변환 - ChatMessageDto messageDto = ChatConverter.toMessageDto(message); + ChatMessageDto messageDto = chatConverter.toMessageDto(message); //Redis 발행 String channel = "chatroom:" + roomId; @@ -140,12 +142,12 @@ public ChatRoomMessagesResponseDto getChatMessages(Long roomId, Long userId,Long Optional fileOpt = chatFileRepository .findByChatMessageId(message.getId()); if (fileOpt.isPresent()) { - dto = FileConverter.toFileMessageDto(message, fileOpt.get()); + dto = fileConverter.toFileMessageDto(message, fileOpt.get()); } else { - dto = ChatConverter.toMessageDto(message); + dto = chatConverter.toMessageDto(message); } } else { - dto = ChatConverter.toMessageDto(message); + dto = chatConverter.toMessageDto(message); } // readCount = 안 읽은 사람 수 @@ -190,7 +192,7 @@ public ChatNoticeResponseDto createNotice(Long messageId, Boolean isPinned,Long message.setIsPinned(isPinned); - return ChatConverter.toNoticeResponseDTO(message); + return chatConverter.toNoticeResponseDTO(message); } @@ -217,7 +219,7 @@ public ChatMessageSearchResponseDto searchMessages( List messageDtos = messagesPage.getContent().stream() - .map(ChatConverter::toMessageDto) + .map(chatConverter::toMessageDto) .collect(Collectors.toList()); diff --git a/nect-api/src/main/java/com/nect/api/domain/team/chat/service/TeamChatService.java b/nect-api/src/main/java/com/nect/api/domain/team/chat/service/TeamChatService.java index f93bb87c..8b465a86 100644 --- a/nect-api/src/main/java/com/nect/api/domain/team/chat/service/TeamChatService.java +++ b/nect-api/src/main/java/com/nect/api/domain/team/chat/service/TeamChatService.java @@ -43,10 +43,11 @@ public class TeamChatService { private final ProjectRepository projectRepository; private final ChatService chatService; private final S3Service s3Service; + private final ChatConverter chatConverter; public List getProjectMembers(Long projectId) { List members = projectUserRepository.findAllUsersByProjectId(projectId); - return ChatConverter.toProjectMemberResponseDTOList(members); + return chatConverter.toProjectMemberResponseDTOList(members); } // 팀 채팅방 생성 @@ -95,7 +96,7 @@ public ChatRoomResponseDto createGroupChatRoom(Long currentUserId, GroupChatRoom } - ChatRoom chatRoom = ChatConverter.toChatRoomEntity( + ChatRoom chatRoom = chatConverter.toChatRoomEntity( project, request.getRoomName(), ChatRoomType.GROUP @@ -103,10 +104,10 @@ public ChatRoomResponseDto createGroupChatRoom(Long currentUserId, GroupChatRoom chatRoomRepository.save(chatRoom); List members = new ArrayList<>(); - members.add(ChatConverter.toChatRoomMemberEntity(chatRoom, me, LocalDateTime.now())); + members.add(chatConverter.toChatRoomMemberEntity(chatRoom, me, LocalDateTime.now())); for (User user : targetUsers) { - members.add(ChatConverter.toChatRoomMemberEntity(chatRoom, user, null)); + members.add(chatConverter.toChatRoomMemberEntity(chatRoom, user, null)); } chatRoomUserRepository.saveAll(members); @@ -119,7 +120,7 @@ public ChatRoomResponseDto createGroupChatRoom(Long currentUserId, GroupChatRoom .limit(4) .collect(Collectors.toList()); - return ChatConverter.toResponseDTO(chatRoom, profileImages); + return chatConverter.toResponseDTO(chatRoom, profileImages); } @@ -171,7 +172,7 @@ public ChatRoomInviteResponseDto inviteMembers( List newMembers = userRepository.findAllByUserIdIn(newMemberIds); List chatRoomUsers = newMembers.stream() - .map(user -> ChatConverter.toChatRoomMemberEntity(chatRoom, user, null)) + .map(user -> chatConverter.toChatRoomMemberEntity(chatRoom, user, null)) .collect(Collectors.toList()); chatRoomUserRepository.saveAll(chatRoomUsers); @@ -262,4 +263,4 @@ public List getProjectMembers(Long projectId, Long currentUser } -} \ No newline at end of file +}