Skip to content

Commit 54b8458

Browse files
committed
Merge remote-tracking branch 'origin/feat/20' into feat/20
# Conflicts: # backend/src/test/java/io/f1/backend/domain/game/app/RoomServiceTests.java
2 parents ed66c38 + cfc104a commit 54b8458

File tree

2 files changed

+46
-44
lines changed

2 files changed

+46
-44
lines changed

backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java

Lines changed: 43 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,20 @@
3131
import io.f1.backend.domain.game.store.RoomRepository;
3232
import io.f1.backend.domain.quiz.app.QuizService;
3333
import io.f1.backend.domain.quiz.entity.Quiz;
34-
import java.util.List;
35-
import java.util.Map;
36-
import java.util.Optional;
37-
import java.util.concurrent.ConcurrentHashMap;
38-
import java.util.concurrent.atomic.AtomicLong;
34+
3935
import lombok.RequiredArgsConstructor;
4036
import lombok.extern.slf4j.Slf4j;
37+
4138
import org.hibernate.boot.model.naming.IllegalIdentifierException;
4239
import org.springframework.context.ApplicationEventPublisher;
4340
import org.springframework.stereotype.Service;
4441

42+
import java.util.List;
43+
import java.util.Map;
44+
import java.util.Optional;
45+
import java.util.concurrent.ConcurrentHashMap;
46+
import java.util.concurrent.atomic.AtomicLong;
47+
4548
@Slf4j
4649
@Service
4750
@RequiredArgsConstructor
@@ -69,7 +72,7 @@ public RoomCreateResponse saveRoom(RoomCreateRequest request) {
6972

7073
Room room = new Room(newId, roomSetting, gameSetting, host);
7174

72-
room.getUserIdSessionMap().put(host.id,PENDING_SESSION_ID);
75+
room.getUserIdSessionMap().put(host.id, PENDING_SESSION_ID);
7376

7477
roomRepository.saveRoom(room);
7578

@@ -85,7 +88,6 @@ public void enterRoom(RoomValidationRequest request) {
8588
Object lock = roomLocks.computeIfAbsent(roomId, k -> new Object());
8689

8790
synchronized (lock) {
88-
8991
Room room = findRoom(request.roomId());
9092

9193
if (room.getState().equals(RoomState.PLAYING)) {
@@ -99,7 +101,7 @@ public void enterRoom(RoomValidationRequest request) {
99101
}
100102

101103
if (room.getRoomSetting().locked()
102-
&& !room.getRoomSetting().password().equals(request.password())) {
104+
&& !room.getRoomSetting().password().equals(request.password())) {
103105
throw new IllegalArgumentException("401 비밀번호가 일치하지 않습니다.");
104106
}
105107

@@ -116,7 +118,7 @@ public RoomInitialData initializeRoomSocket(Long roomId, String sessionId) {
116118
Map<String, Player> playerSessionMap = room.getPlayerSessionMap();
117119
Map<Long, String> userIdSessionMap = room.getUserIdSessionMap();
118120

119-
if(room.isHost(player.getId())) {
121+
if (room.isHost(player.getId())) {
120122
player.toggleReady();
121123
}
122124

@@ -133,47 +135,46 @@ public RoomInitialData initializeRoomSocket(Long roomId, String sessionId) {
133135
Quiz quiz = quizService.getQuizById(quizId);
134136

135137
GameSettingResponse gameSettingResponse =
136-
toGameSettingResponse(room.getGameSetting(), quiz);
138+
toGameSettingResponse(room.getGameSetting(), quiz);
137139

138140
PlayerListResponse playerListResponse = toPlayerListResponse(room);
139141

140142
SystemNoticeResponse systemNoticeResponse = ofPlayerEvent(player, RoomEventType.ENTER);
141143

142144
return new RoomInitialData(
143-
getDestination(roomId),
144-
roomSettingResponse,
145-
gameSettingResponse,
146-
playerListResponse,
147-
systemNoticeResponse);
145+
getDestination(roomId),
146+
roomSettingResponse,
147+
gameSettingResponse,
148+
playerListResponse,
149+
systemNoticeResponse);
148150
}
149151

150152
public RoomExitData exitRoom(Long roomId, String sessionId) {
151153

152154
Object lock = roomLocks.computeIfAbsent(roomId, k -> new Object());
153155

154156
synchronized (lock) {
155-
156157
Room room = findRoom(roomId);
157158

158159
String destination = getDestination(roomId);
159160

160-
Player removePlayer = getRemovePlayer(room,sessionId);
161+
Player removePlayer = getRemovePlayer(room, sessionId);
161162

162163
/* 방 삭제 */
163-
if (isLastPlayer(room,sessionId)) {
164-
return removeRoom(room,destination);
164+
if (isLastPlayer(room, sessionId)) {
165+
return removeRoom(room, destination);
165166
}
166167

167168
/* 방장 변경 */
168169
if (room.isHost(removePlayer.getId())) {
169-
changeHost(room,sessionId);
170+
changeHost(room, sessionId);
170171
}
171172

172173
/* 플레이어 삭제 */
173-
removePlayer(room,sessionId,removePlayer);
174+
removePlayer(room, sessionId, removePlayer);
174175

175176
SystemNoticeResponse systemNoticeResponse =
176-
ofPlayerEvent(removePlayer, RoomEventType.EXIT);
177+
ofPlayerEvent(removePlayer, RoomEventType.EXIT);
177178

178179
PlayerListResponse playerListResponse = toPlayerListResponse(room);
179180

@@ -184,15 +185,15 @@ public RoomExitData exitRoom(Long roomId, String sessionId) {
184185
public RoomListResponse getAllRooms() {
185186
List<Room> rooms = roomRepository.findAll();
186187
List<RoomResponse> roomResponses =
187-
rooms.stream()
188-
.map(
189-
room -> {
190-
Long quizId = room.getGameSetting().getQuizId();
191-
Quiz quiz = quizService.getQuizById(quizId);
192-
193-
return toRoomResponse(room, quiz);
194-
})
195-
.toList();
188+
rooms.stream()
189+
.map(
190+
room -> {
191+
Long quizId = room.getGameSetting().getQuizId();
192+
Quiz quiz = quizService.getQuizById(quizId);
193+
194+
return toRoomResponse(room, quiz);
195+
})
196+
.toList();
196197
return new RoomListResponse(roomResponses);
197198
}
198199

@@ -215,8 +216,8 @@ private Player createPlayer() {
215216

216217
private Room findRoom(Long roomId) {
217218
return roomRepository
218-
.findRoom(roomId)
219-
.orElseThrow(() -> new IllegalArgumentException("404 존재하지 않는 방입니다."));
219+
.findRoom(roomId)
220+
.orElseThrow(() -> new IllegalArgumentException("404 존재하지 않는 방입니다."));
220221
}
221222

222223
private boolean isLastPlayer(Room room, String sessionId) {
@@ -235,15 +236,17 @@ private RoomExitData removeRoom(Room room, String destination) {
235236
private void changeHost(Room room, String hostSessionId) {
236237
Map<String, Player> playerSessionMap = room.getPlayerSessionMap();
237238

238-
Optional<String> nextHostSessionId = playerSessionMap.keySet().stream()
239-
.filter(key -> !key.equals(hostSessionId)).findFirst();
239+
Optional<String> nextHostSessionId =
240+
playerSessionMap.keySet().stream()
241+
.filter(key -> !key.equals(hostSessionId))
242+
.findFirst();
240243

241244
Player nextHost =
242-
playerSessionMap.get(
243-
nextHostSessionId.orElseThrow(
244-
() ->
245-
new IllegalArgumentException(
246-
"방장 교체 불가 - 404 해당 세션 플레이어는 존재하지않습니다.")));
245+
playerSessionMap.get(
246+
nextHostSessionId.orElseThrow(
247+
() ->
248+
new IllegalArgumentException(
249+
"방장 교체 불가 - 404 해당 세션 플레이어는 존재하지않습니다.")));
247250

248251
room.updateHost(nextHost);
249252
log.info("user_id:{} 방장 변경 완료 ", nextHost.getId());
@@ -253,5 +256,4 @@ private void removePlayer(Room room, String sessionId, Player removePlayer) {
253256
room.removeUserId(removePlayer.getId());
254257
room.removeSessionId(sessionId);
255258
}
256-
257259
}

backend/src/main/java/io/f1/backend/domain/game/model/Room.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,19 @@ public Room(Long id, RoomSetting roomSetting, GameSetting gameSetting, Player ho
3838
this.host = host;
3939
}
4040

41-
public boolean isHost(Long id){
41+
public boolean isHost(Long id) {
4242
return this.host.getId().equals(id);
4343
}
4444

4545
public void updateHost(Player nextHost) {
4646
this.host = nextHost;
4747
}
4848

49-
public void removeUserId(Long id){
49+
public void removeUserId(Long id) {
5050
this.userIdSessionMap.remove(id);
5151
}
5252

53-
public void removeSessionId(String sessionId){
53+
public void removeSessionId(String sessionId) {
5454
this.playerSessionMap.remove(sessionId);
5555
}
5656
}

0 commit comments

Comments
 (0)