CheckpointController.java 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package com.smartreview.controller;
  2. import com.smartreview.enums.QuestionType;
  3. import com.smartreview.service.QuestionService;
  4. import com.smartreview.utils.SecurityUtil;
  5. import com.smartreview.vo.Response;
  6. import com.smartreview.vo.question.QuestionGenerationResponseVO;
  7. import com.smartreview.vo.question.QuestionVO;
  8. import com.smartreview.vo.question.SubmitAnswerRequestVO;
  9. import com.smartreview.vo.question.SubmitAnswerResponseVO;
  10. import lombok.RequiredArgsConstructor;
  11. import org.springframework.web.bind.annotation.*;
  12. import java.util.List;
  13. /**
  14. * 题目Checkpoint
  15. */
  16. @RestController
  17. @RequestMapping("/api/checkpoint")
  18. @RequiredArgsConstructor
  19. public class CheckpointController {
  20. private final QuestionService questionService;
  21. private final SecurityUtil securityUtil;
  22. /**
  23. * 获取或生成题目(异步)
  24. *
  25. * @param blockId 块ID
  26. * @param forceNew 是否强制生成新题目(默认false)
  27. * @return 生成响应(包含状态和题目)
  28. */
  29. @GetMapping("/generate/{blockId}")
  30. public Response<QuestionGenerationResponseVO> getOrGenerateQuestions(
  31. @PathVariable Long blockId,
  32. @RequestParam(required = false, defaultValue = "false") boolean forceNew) {
  33. Long userId = securityUtil.getCurrentUserId();
  34. QuestionGenerationResponseVO response = questionService.getOrGenerateQuestions(blockId, userId, forceNew);
  35. return Response.success(response);
  36. }
  37. /**
  38. * 提交答案并批改
  39. */
  40. @PostMapping("/submit")
  41. public Response<SubmitAnswerResponseVO> submitAnswer(@RequestBody SubmitAnswerRequestVO request) {
  42. Long userId = securityUtil.getCurrentUserId();
  43. SubmitAnswerResponseVO response = questionService.submitAnswer(
  44. request.getQuestionId(),
  45. request.getAnswer(),
  46. userId,
  47. request.getIsWeak());
  48. return Response.success(response);
  49. }
  50. /**
  51. * 批量提交答案并批改
  52. */
  53. @PostMapping("/submit/batch")
  54. public Response<List<SubmitAnswerResponseVO>> submitAnswers(@RequestBody List<SubmitAnswerRequestVO> requests) {
  55. Long userId = securityUtil.getCurrentUserId();
  56. List<SubmitAnswerResponseVO> response = questionService.submitAnswers(requests, userId);
  57. return Response.success(response);
  58. }
  59. /**
  60. * 重新生成题目
  61. */
  62. @PostMapping("/regenerate/{questionId}")
  63. public Response<QuestionVO> regenerateQuestion(@PathVariable Long questionId,
  64. @RequestParam(required = false) QuestionType type) {
  65. Long userId = securityUtil.getCurrentUserId();
  66. QuestionVO response = questionService.regenerateQuestion(questionId, userId,type);
  67. return Response.success(response);
  68. }
  69. }