Files
xzmaster/backend/src/main/java/com/xuezhanmaster/room/controller/RoomController.java
2026-03-20 12:50:41 +08:00

58 lines
2.0 KiB
Java

package com.xuezhanmaster.room.controller;
import com.xuezhanmaster.common.api.ApiResponse;
import com.xuezhanmaster.room.dto.CreateRoomRequest;
import com.xuezhanmaster.room.dto.JoinRoomRequest;
import com.xuezhanmaster.room.dto.RoomSummaryResponse;
import com.xuezhanmaster.room.dto.ToggleReadyRequest;
import com.xuezhanmaster.room.service.RoomService;
import jakarta.validation.Valid;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.PathVariable;
@RestController
@RequestMapping("/api/rooms")
public class RoomController {
private final RoomService roomService;
public RoomController(RoomService roomService) {
this.roomService = roomService;
}
@PostMapping
public ApiResponse<RoomSummaryResponse> create(@Valid @RequestBody CreateRoomRequest request) {
return ApiResponse.success(roomService.createRoom(request));
}
@GetMapping("/{roomId}")
public ApiResponse<RoomSummaryResponse> detail(@PathVariable String roomId) {
return ApiResponse.success(roomService.getRoomSummary(roomId));
}
@PostMapping("/{roomId}/join")
public ApiResponse<RoomSummaryResponse> join(
@PathVariable String roomId,
@Valid @RequestBody JoinRoomRequest request
) {
return ApiResponse.success(roomService.joinRoom(roomId, request));
}
@PostMapping("/{roomId}/ready")
public ApiResponse<RoomSummaryResponse> ready(
@PathVariable String roomId,
@Valid @RequestBody ToggleReadyRequest request
) {
return ApiResponse.success(roomService.toggleReady(roomId, request));
}
@GetMapping("/demo")
public ApiResponse<RoomSummaryResponse> demo() {
return ApiResponse.success(roomService.createDemoRoom());
}
}