first commit

This commit is contained in:
hujun
2026-03-20 12:50:41 +08:00
commit 24fce055fd
88 changed files with 7655 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
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());
}
}