| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- 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<QuestionGenerationResponseVO> 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<SubmitAnswerResponseVO> 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<List<SubmitAnswerResponseVO>> submitAnswers(@RequestBody List<SubmitAnswerRequestVO> requests) {
- Long userId = securityUtil.getCurrentUserId();
- List<SubmitAnswerResponseVO> response = questionService.submitAnswers(requests, userId);
- return Response.success(response);
- }
- /**
- * 重新生成题目
- */
- @PostMapping("/regenerate/{questionId}")
- public Response<QuestionVO> regenerateQuestion(@PathVariable Long questionId,
- @RequestParam(required = false) QuestionType type) {
- Long userId = securityUtil.getCurrentUserId();
- QuestionVO response = questionService.regenerateQuestion(questionId, userId,type);
- return Response.success(response);
- }
- }
|