UserQuizStudyBookController.java 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package com.xuekairui.quiz.controller.user;
  2. import com.xuekairui.common.Result;
  3. import com.xuekairui.quiz.dto.StudyBookSubmitRequest;
  4. import com.xuekairui.quiz.service.StudyBookService;
  5. import com.xuekairui.quiz.vo.ChapterProgressVO;
  6. import com.xuekairui.quiz.vo.ChapterQuestionsVO;
  7. import com.xuekairui.quiz.vo.ChapterTreeVO;
  8. import com.xuekairui.quiz.vo.PageVO;
  9. import com.xuekairui.quiz.vo.PracticeSubmitVO;
  10. import com.xuekairui.quiz.vo.StudyBookQuestionVO;
  11. import com.xuekairui.quiz.vo.StudyOverviewVO;
  12. import com.xuekairui.quiz.vo.SubjectSimpleVO;
  13. import jakarta.servlet.http.HttpServletRequest;
  14. import lombok.RequiredArgsConstructor;
  15. import org.springframework.web.bind.annotation.*;
  16. import java.util.List;
  17. @RestController
  18. @RequestMapping("/api/quiz/studyBook")
  19. @RequiredArgsConstructor
  20. public class UserQuizStudyBookController {
  21. private final StudyBookService studyBookService;
  22. /** 学习本统计概览(做对/做错/收藏数) */
  23. @GetMapping("/overview")
  24. public Result<StudyOverviewVO> overview(HttpServletRequest request) {
  25. Long userId = (Long) request.getAttribute("userId");
  26. return Result.success(studyBookService.getOverview(userId));
  27. }
  28. /** 学习本题目列表(按 correct/wrong/collected 筛选) */
  29. @GetMapping("/questionList")
  30. public Result<PageVO<StudyBookQuestionVO>> questionList(
  31. @RequestParam(defaultValue = "correct") String type,
  32. @RequestParam(required = false) Long subjectId,
  33. @RequestParam(defaultValue = "1") int pageNo,
  34. @RequestParam(defaultValue = "10") int pageSize,
  35. HttpServletRequest request) {
  36. Long userId = (Long) request.getAttribute("userId");
  37. return Result.success(studyBookService.getQuestionList(userId, type, subjectId, pageNo, pageSize));
  38. }
  39. /** 获取科目列表 */
  40. @GetMapping("/subjects")
  41. public Result<List<SubjectSimpleVO>> subjects() {
  42. return Result.success(studyBookService.getSubjectList());
  43. }
  44. /** 获取章节树 */
  45. @GetMapping("/chapters")
  46. public Result<ChapterTreeVO> chapters(@RequestParam Long subjectId) {
  47. return Result.success(studyBookService.getChapterTree(subjectId));
  48. }
  49. /** 获取考点题目 */
  50. @GetMapping("/questions")
  51. public Result<ChapterQuestionsVO> questions(@RequestParam Long chapterId, HttpServletRequest request) {
  52. Long userId = (Long) request.getAttribute("userId");
  53. return Result.success(studyBookService.getChapterQuestions(userId, chapterId));
  54. }
  55. /** 提交章节练习 */
  56. @PostMapping("/submit")
  57. public Result<PracticeSubmitVO> submit(@RequestBody StudyBookSubmitRequest param, HttpServletRequest request) {
  58. Long userId = (Long) request.getAttribute("userId");
  59. return Result.success(studyBookService.submitChapterPractice(userId, param.getSubjectId(), param.getChapterId(), param.getAnswers()));
  60. }
  61. /** 获取章节学习进度 */
  62. @GetMapping("/progress")
  63. public Result<ChapterProgressVO> progress(@RequestParam Long subjectId, HttpServletRequest request) {
  64. Long userId = (Long) request.getAttribute("userId");
  65. return Result.success(studyBookService.getChapterProgress(userId, subjectId));
  66. }
  67. }