feat: CreateRoomRequest 和 RoomItemResponse 新增 allowSpectate 字段

This commit is contained in:
2026-06-23 11:03:17 +08:00
parent e72fbff6e6
commit 5209df46d1
3 changed files with 20 additions and 5 deletions

View File

@@ -30,5 +30,16 @@ public record CreateRoomRequest(
/** 最大玩家数 */ /** 最大玩家数 */
@NotNull(message = "最大玩家数不能为空") @NotNull(message = "最大玩家数不能为空")
@Positive(message = "最大玩家数必须为正数") @Positive(message = "最大玩家数必须为正数")
Integer maxPlayers Integer maxPlayers,
) {}
/** 是否允许观战,默认 true */
Boolean allowSpectate
) {
/**
* 获取观战开关值,未传时默认为 true
*/
public Boolean allowSpectate() {
return allowSpectate != null ? allowSpectate : true;
}
}

View File

@@ -19,7 +19,8 @@ public record RoomItemResponse(
String statusText, String statusText,
int stakes, int stakes,
String mode, String mode,
String creatorName String creatorName,
Boolean allowSpectate
) { ) {
/** 状态 → 展示文本映射 */ /** 状态 → 展示文本映射 */
private static final Map<String, String> STATUS_TEXT_MAP = Map.of( private static final Map<String, String> STATUS_TEXT_MAP = Map.of(
@@ -53,7 +54,8 @@ public record RoomItemResponse(
STATUS_TEXT_MAP.getOrDefault(room.getStatus(), "未知"), STATUS_TEXT_MAP.getOrDefault(room.getStatus(), "未知"),
room.getStakes(), room.getStakes(),
room.getMode(), room.getMode(),
creatorName creatorName,
room.getAllowSpectate()
); );
} }
} }

View File

@@ -35,6 +35,7 @@ public class GameServiceImpl implements GameService {
private final UserRepository userRepository; private final UserRepository userRepository;
private final BCryptPasswordEncoder passwordEncoder; private final BCryptPasswordEncoder passwordEncoder;
private final SseEventPublisher sseEventPublisher; private final SseEventPublisher sseEventPublisher;
private final GameMoveRepository gameMoveRepository;
@Override @Override
public GameListResponse getGameList() { public GameListResponse getGameList() {
@@ -123,7 +124,8 @@ public class GameServiceImpl implements GameService {
.setMode(request.mode()) .setMode(request.mode())
.setStakes(request.stakes()) .setStakes(request.stakes())
.setStatus("waiting") .setStatus("waiting")
.setCreatorId(creatorId); .setCreatorId(creatorId)
.setAllowSpectate(request.allowSpectate());
// 密码加密(如果提供了密码) // 密码加密(如果提供了密码)
if (request.password() != null && !request.password().isBlank()) { if (request.password() != null && !request.password().isBlank()) {