fix: 暂存

This commit is contained in:
2026-06-23 14:44:07 +08:00
parent 2a311ca25f
commit c5e9a149f4
2 changed files with 15 additions and 8 deletions

View File

@@ -239,10 +239,9 @@ public class GameServiceImpl implements GameService {
List<RoomPlayerEntity> remaining = roomPlayerRepository.findByRoomId(roomId);
if (remaining.isEmpty()) {
// 无人了,房间标记为结束
room.setStatus("finished");
gameRoomRepository.save(room);
log.info("[游戏服务] 房间无人,标记为结束, roomId={}", roomId);
// 无人了,物理删除房间(对局记录和走棋记录保留用于历史查询)
gameRoomRepository.delete(room);
log.info("[游戏服务] 房间无人,已删除, roomId={}", roomId);
} else if (userId.equals(room.getCreatorId())) {
// 房主离开,顺位转让给下一个玩家
RoomPlayerEntity nextOwner = remaining.get(0);

View File

@@ -229,10 +229,16 @@ public class GomokuGameServiceImpl implements GomokuGameService {
)));
if (remaining.isEmpty()) {
// 无人了,房间标记为结束
room.setStatus("finished");
gameRoomRepository.save(room);
log.info("[五子棋] 房间无人,标记为结束, roomId={}", roomId);
// 无人了,关闭对局记录(如果进行中)并删除房间
if ("playing".equals(room.getStatus())) {
gameRecordRepository.findByRoomId(roomId).ifPresent(record -> {
record.setEndedAt(LocalDateTime.now());
record.setResultType("abandoned");
gameRecordRepository.save(record);
});
}
gameRoomRepository.delete(room);
log.info("[五子棋] 房间无人,已删除, roomId={}", roomId);
// SSE: 大厅移除房间
sseEventPublisher.broadcast(SseEventType.ROOM_REMOVED, Map.of("roomId", roomId));
} else if (userId.equals(room.getCreatorId())) {
@@ -382,6 +388,8 @@ public class GomokuGameServiceImpl implements GomokuGameService {
log.info("[五子棋] 断线超时:对局中自动判负, roomId={}, userId={}", roomId, userId);
// 自动认输
resign(roomId, userId, sessionManager);
// 移除断线玩家记录(对手仍留在房间,离开时触发删除)
leaveRoom(roomId, userId, sessionManager);
} else {
log.info("[五子棋] 断线超时:等待中自动离开, roomId={}, userId={}", roomId, userId);
// 自动离开房间