Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package com.back.catchmate.domain.chat.controller;

import com.back.catchmate.domain.chat.dto.ChatResponse;
import com.back.catchmate.domain.chat.service.ChatRoomServiceImpl;
import com.back.catchmate.domain.chat.service.ChatRoomService;
import com.back.catchmate.domain.chat.service.UserChatRoomService;
import com.back.catchmate.domain.user.dto.UserResponse.UserInfoList;
import com.back.catchmate.global.dto.StateResponse;
import com.back.catchmate.global.jwt.JwtValidation;
import io.swagger.v3.oas.annotations.Operation;
Expand All @@ -22,7 +24,8 @@
@RequiredArgsConstructor
@RequestMapping("/chat-rooms")
public class ChatRoomController {
private final ChatRoomServiceImpl chatRoomService;
private final ChatRoomService chatRoomService;
private final UserChatRoomService userChatRoomService;

@GetMapping("/list")
@Operation(summary = "내가 속한 채팅방 조회 API", description = "내가 속해있는 채팅방을 조회하는 API 입니다.")
Expand All @@ -38,4 +41,10 @@ public StateResponse leaveChatRoom(@JwtValidation Long userId,
@PathVariable Long chatRoomId) {
return chatRoomService.leaveChatRoom(userId, chatRoomId);
}

@GetMapping("/{chatRoomId}/user-list")
@Operation(summary = "채팅방에 참여한 유저 정보 리스트 반환 API", description = "채팅방에 참여한 유저 정보 리스트 반환 API 입니다.")
public UserInfoList getUsersInChatRoom(@PathVariable Long chatRoomId) {
return userChatRoomService.getUserInfoList(chatRoomId);
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
package com.back.catchmate.domain.chat.converter;

import com.back.catchmate.domain.board.converter.BoardConverter;
import com.back.catchmate.domain.board.dto.BoardResponse;
import com.back.catchmate.domain.board.dto.BoardResponse.BoardInfo;
import com.back.catchmate.domain.board.entity.Board;
import com.back.catchmate.domain.chat.dto.ChatResponse;
import com.back.catchmate.domain.chat.dto.ChatResponse.ChatRoomInfo;
import com.back.catchmate.domain.chat.dto.ChatResponse.PagedChatRoomInfo;
import com.back.catchmate.domain.chat.entity.ChatRoom;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,32 @@

import com.back.catchmate.domain.chat.entity.ChatRoom;
import com.back.catchmate.domain.chat.entity.UserChatRoom;
import com.back.catchmate.domain.user.converter.UserConverter;
import com.back.catchmate.domain.user.dto.UserResponse.UserInfoList;
import com.back.catchmate.domain.user.entity.User;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;

@Component
@RequiredArgsConstructor
public class UserChatRoomConverter {
private final UserConverter userConverter;

public UserChatRoom toEntity(User user, ChatRoom chatRoom) {
return UserChatRoom.builder()
.user(user)
.chatRoom(chatRoom)
.joinedAt(LocalDateTime.now())
.build();
}

public UserInfoList toUserInfoList(List<UserChatRoom> userChatRoomList) {
return new UserInfoList(userChatRoomList.stream()
.map(userChatRoom -> userConverter.toUserInfo(userChatRoom.getUser()))
.collect(Collectors.toList()));
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.back.catchmate.domain.chat.dto;

import com.back.catchmate.domain.board.dto.BoardResponse.BoardInfo;
import com.back.catchmate.domain.notification.dto.NotificationResponse;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
package com.back.catchmate.domain.chat.repository;

import com.back.catchmate.domain.chat.entity.ChatMessage;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.repository.Query;
import org.springframework.data.mongodb.repository.ReactiveMongoRepository;
import reactor.core.publisher.Flux;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.back.catchmate.domain.chat.repository;

import com.back.catchmate.domain.chat.entity.ChatRoom;
import kotlin.OptIn;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.Optional;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import java.util.List;
import java.util.Optional;

public interface UserChatRoomRepository extends JpaRepository<UserChatRoom, Long> {
Expand All @@ -18,4 +19,6 @@ public interface UserChatRoomRepository extends JpaRepository<UserChatRoom, Long
"WHERE ucr.user.id = :userId " +
"ORDER BY cr.lastMessageAt DESC")
Page<UserChatRoom> findAllByUserId(Long userId, Pageable pageable);

List<UserChatRoom> findByChatRoomId(Long chatRoomId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.back.catchmate.domain.chat.service;

import com.back.catchmate.domain.user.dto.UserResponse.UserInfoList;

public interface UserChatRoomService {
UserInfoList getUserInfoList(Long chatRoomId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.back.catchmate.domain.chat.service;

import com.back.catchmate.domain.chat.converter.UserChatRoomConverter;
import com.back.catchmate.domain.chat.entity.UserChatRoom;
import com.back.catchmate.domain.chat.repository.UserChatRoomRepository;
import com.back.catchmate.domain.user.dto.UserResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@RequiredArgsConstructor
public class UserChatRoomServiceImpl implements UserChatRoomService {
private final UserChatRoomRepository userChatRoomRepository;
private final UserChatRoomConverter userChatRoomConverter;

@Override
@Transactional(readOnly = true)
public UserResponse.UserInfoList getUserInfoList(Long chatRoomId) {
List<UserChatRoom> userChatRoomList = userChatRoomRepository.findByChatRoomId(chatRoomId);
return userChatRoomConverter.toUserInfoList(userChatRoomList);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

public abstract class UserResponse {
@Getter
Expand Down Expand Up @@ -41,6 +42,14 @@ public static class UserInfo {
private String watchStyle;
}

@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class UserInfoList {
private List<UserInfo> userInfoList;
}

@Getter
@Builder
@AllArgsConstructor
Expand Down