Skip to content

Commit c6971e2

Browse files
authored
Merge pull request #132 from EFUB5-RoomListener/develop
[Deploy] 방 내부 사용자 조회 반영
2 parents 4f617df + 599fe12 commit c6971e2

5 files changed

Lines changed: 68 additions & 2 deletions

File tree

mavve/src/main/java/com/efub/mavve/room/controller/RoomController.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,13 @@ public ResponseEntity<RoomEnterResponse> getRoomEnterInfo(@PathVariable("roomId"
111111
return ResponseEntity.ok(response);
112112
}
113113

114+
// 방 내부 사용자 조회
115+
@GetMapping("/{roomId}/users")
116+
public ResponseEntity<RoomUserResponse> getUserInRoom(@PathVariable("roomId") Long roomId){
117+
RoomUserResponse response = roomService.getUserInRoom(roomId);
118+
return ResponseEntity.ok(response);
119+
}
120+
114121
// 방에 플레이리스트 추가
115122
@PostMapping("/{roomId}/playlists")
116123
public void addPlaylistInRoom(@PathVariable("roomId") Long roomId,
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.efub.mavve.room.dto.response;
2+
3+
import com.efub.mavve.auth.domain.User;
4+
import com.efub.mavve.room.dto.summary.RoomUserSummary;
5+
import lombok.AccessLevel;
6+
import lombok.AllArgsConstructor;
7+
import lombok.Builder;
8+
import lombok.Getter;
9+
10+
import java.util.List;
11+
12+
@Builder
13+
@Getter
14+
@AllArgsConstructor(access = AccessLevel.PRIVATE)
15+
public class RoomUserResponse {
16+
private List<RoomUserSummary> users;
17+
18+
public static RoomUserResponse from(List<RoomUserSummary> users){
19+
return RoomUserResponse.builder()
20+
.users(users)
21+
.build();
22+
}
23+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.efub.mavve.room.dto.summary;
2+
3+
import com.efub.mavve.auth.domain.User;
4+
import lombok.AccessLevel;
5+
import lombok.AllArgsConstructor;
6+
import lombok.Builder;
7+
import lombok.Getter;
8+
9+
@Builder
10+
@Getter
11+
@AllArgsConstructor(access = AccessLevel.PRIVATE)
12+
public class RoomUserSummary {
13+
private String profileImg;
14+
private String nickname;
15+
16+
public static RoomUserSummary from(User user){
17+
return RoomUserSummary.builder()
18+
.profileImg(user.getUserImageUrl())
19+
.nickname(user.getUsername())
20+
.build();
21+
}
22+
}

mavve/src/main/java/com/efub/mavve/room/service/RoomService.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.efub.mavve.room.service;
22

33
import com.efub.mavve.auth.domain.User;
4+
import com.efub.mavve.auth.repository.UserRepository;
45
import com.efub.mavve.global.exception.ExceptionCode;
56
import com.efub.mavve.global.exception.MavveException;
67
import com.efub.mavve.room.domain.Room;
@@ -11,6 +12,8 @@
1112
import com.efub.mavve.room.dto.response.RoomEnterResponse;
1213
import com.efub.mavve.room.dto.response.RoomListResponse;
1314
import com.efub.mavve.room.dto.response.RoomResponse;
15+
import com.efub.mavve.room.dto.response.RoomUserResponse;
16+
import com.efub.mavve.room.dto.summary.RoomUserSummary;
1417
import com.efub.mavve.room.payload.summary.CurrentSongSummary;
1518
import com.efub.mavve.room.payload.summary.SongRedis;
1619
import com.efub.mavve.room.repository.RoomRepository;
@@ -38,6 +41,7 @@ public class RoomService {
3841
private final RoomSongWebsocketService roomSongWebsocketService;
3942
private final RoomPlaylistService roomPlaylistService;
4043
private final RoomLikeRepository roomLikeRepository;
44+
private final UserRepository userRepository;
4145

4246
// 방 생성
4347
@Transactional
@@ -226,4 +230,14 @@ private String getTotalDurationTime(List<SongRedis> songs){
226230
else if (minutes > 0) return String.format("%d분 %d초", minutes, seconds);
227231
else return String.format("%d초", seconds);
228232
}
233+
234+
public RoomUserResponse getUserInRoom(Long roomId) {
235+
List<String> userIds = roomUserRedisService.getAllUsers(roomId);
236+
List<RoomUserSummary> users = userIds.stream().map(userId -> {
237+
User user = userRepository.findByUserId(Long.parseLong(userId))
238+
.orElseThrow(() -> new MavveException(ExceptionCode.USER_NOT_FOUND));
239+
return RoomUserSummary.from(user);
240+
}).collect(Collectors.toList());
241+
return RoomUserResponse.from(users);
242+
}
229243
}

mavve/src/main/java/com/efub/mavve/room/service/redis/RoomUserRedisService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,11 @@ public boolean hasUsers(Long roomCode){
4040
}
4141

4242
// 현재 방에 남이있는 사용자 전체 조회
43-
private List<String> getAllUsers(Long roomCode) {
43+
public List<String> getAllUsers(Long roomCode) {
4444
String key = RoomRedisKeyUtils.getUserListKey(roomCode);
4545
List<String> userList = stringRedisTemplate.opsForList().range(key, 0, -1);
4646

47-
if(userList == null) return Collections.emptyList();
47+
if(userList == null || userList.isEmpty()) return Collections.emptyList();
4848
return userList;
4949
}
5050

0 commit comments

Comments
 (0)