package com.smartreview.controller; import com.smartreview.enums.QuestionType; import com.smartreview.service.QuestionService; import com.smartreview.utils.SecurityUtil; import com.smartreview.vo.Response; import com.smartreview.vo.question.QuestionGenerationResponseVO; import com.smartreview.vo.question.QuestionVO; import com.smartreview.vo.question.SubmitAnswerRequestVO; import com.smartreview.vo.question.SubmitAnswerResponseVO; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.List; /** * 题目Checkpoint */ @RestController @RequestMapping("/api/checkpoint") @RequiredArgsConstructor public class CheckpointController { private final QuestionService questionService; private final SecurityUtil securityUtil; /** * 获取或生成题目(异步) * * @param blockId 块ID * @param forceNew 是否强制生成新题目(默认false) * @return 生成响应(包含状态和题目) */ @GetMapping("/generate/{blockId}") public Response getOrGenerateQuestions( @PathVariable Long blockId, @RequestParam(required = false, defaultValue = "false") boolean forceNew) { Long userId = securityUtil.getCurrentUserId(); QuestionGenerationResponseVO response = questionService.getOrGenerateQuestions(blockId, userId, forceNew); return Response.success(response); } /** * 提交答案并批改 */ @PostMapping("/submit") public Response submitAnswer(@RequestBody SubmitAnswerRequestVO request) { Long userId = securityUtil.getCurrentUserId(); SubmitAnswerResponseVO response = questionService.submitAnswer( request.getQuestionId(), request.getAnswer(), userId, request.getIsWeak()); return Response.success(response); } /** * 批量提交答案并批改 */ @PostMapping("/submit/batch") public Response> submitAnswers(@RequestBody List requests) { Long userId = securityUtil.getCurrentUserId(); List response = questionService.submitAnswers(requests, userId); return Response.success(response); } /** * 重新生成题目 */ @PostMapping("/regenerate/{questionId}") public Response regenerateQuestion(@PathVariable Long questionId, @RequestParam(required = false) QuestionType type) { Long userId = securityUtil.getCurrentUserId(); QuestionVO response = questionService.regenerateQuestion(questionId, userId,type); return Response.success(response); } }