diff --git a/backend/src/main/java/lsgwr/exam/ExamApplication.java b/backend/src/main/java/lsgwr/exam/ExamApplication.java index 28458d1..95dd0f1 100644 --- a/backend/src/main/java/lsgwr/exam/ExamApplication.java +++ b/backend/src/main/java/lsgwr/exam/ExamApplication.java @@ -3,6 +3,9 @@ package lsgwr.exam; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +/** + * 这是Spring Boot应用程序的主要类。它作为应用程序的入口点,启动Spring Boot应用程序上下文。 + */ @SpringBootApplication public class ExamApplication { diff --git a/backend/src/main/java/lsgwr/exam/controller/ExamController.java b/backend/src/main/java/lsgwr/exam/controller/ExamController.java index e6ed4d0..eb3b58e 100644 --- a/backend/src/main/java/lsgwr/exam/controller/ExamController.java +++ b/backend/src/main/java/lsgwr/exam/controller/ExamController.java @@ -1,9 +1,6 @@ -/*********************************************************** - * @Description : 考试服务 - * @author : 梁山广(Laing Shan Guang) - * @date : 2019-05-28 08:04 - * @email : liangshanguang2@gmail.com - ***********************************************************/ +/** + * @Description : 这是一个REST控制器,处理与考试、问题和考试记录相关的HTTP请求,它包括创建、更新和检索考试和问题的方法,以及处理用户提交和评分。 + */ package lsgwr.exam.controller; import lsgwr.exam.entity.Exam; @@ -22,11 +19,16 @@ import java.util.List; @RestController @Api(tags = "Exam APIs") +//将此控制器中的所有端点映射到/api/exam URL路径 @RequestMapping("/api/exam") public class ExamController { - @Autowired + @Autowired //注入一个ExamService实例,用于处理与考试和问题相关的业务逻辑 private ExamService examService; + /** + * @Description: 使用examService.getQuestionAll()获取数据,并将其包装在ResultVO对象中,用于获取所有考试列表 + * @ApiOperation注解用于描述API操作,它将显示在SwaggerUI中 + */ @GetMapping("/question/all") @ApiOperation("获取所有问题的列表") ResultVO> getQuestionAll() { @@ -41,6 +43,10 @@ public class ExamController { return resultVO; } + /** + * @Description: 从请求体中获取一个QuestionVo对象,并使用examService.updateQuestion()更新问题 + * @param questionVo 从请求体中获取的QuestionVo对象 + */ @PostMapping("/question/update") @ApiOperation("更新问题") ResultVO questionUpdate(@RequestBody QuestionVo questionVo) { @@ -55,6 +61,13 @@ public class ExamController { } } + /** + * 创建问题 + * @Description: 从请求体中获取一个QuestionCreateSimplifyVo对象,将其属性复制到QuestionCreateVo,设置创建者的ID,并使用examService.questionCreate()创建问题。 + * @param questionCreateSimplifyVo 从请求体中获取的QuestionCreateSimplifyVo对象 + * @param request HttpServletRequest对象,用于获取当前用户的ID + * @return ResultVO 对象,包含操作结果信息 + */ @PostMapping("/question/create") @ApiOperation("创建问题") ResultVO questionCreate(@RequestBody QuestionCreateSimplifyVo questionCreateSimplifyVo, HttpServletRequest request) { @@ -74,6 +87,10 @@ public class ExamController { } } + /** + * @Description: 获取全部问题列表,使用examService.getSelections()获取数据,并将其包装在ResultVO对象中 + * @return ResultVO 对象,包含问题列表 + */ @GetMapping("/question/selection") @ApiOperation("获取问题分类的相关选项") ResultVO getSelections() { @@ -85,6 +102,11 @@ public class ExamController { } } + /** + * @Description: 使用examService.getQuestionDetail(id)获取数据,并将其包装在ResultVO对象中,用于获取全部问题列表 + * @param id 问题id + * @return ResultVO 对象,包含问题详情 + */ @GetMapping("/question/detail/{id}") @ApiOperation("根据问题的id获取问题的详细信息") ResultVO getQuestionDetail(@PathVariable String id) { @@ -101,6 +123,10 @@ public class ExamController { return resultVO; } + /** + * @Description: 使用examService.getExamAll()获取数据,并将其包装在ResultVO对象中,用于获取全部考试列表 + * @return ResultVO 对象,包含考试列表详情 + */ @GetMapping("/all") @ApiOperation("获取全部考试的列表") ResultVO> getExamAll() { @@ -116,6 +142,10 @@ public class ExamController { return resultVO; } + /** + * @Description: 使用examService.getExamQuestionTypeList()获取数据,并将其包装在ResultVO对象中,用于获取问题列表 + * @return ResultVO 对象,包含问题列表 + */ @GetMapping("/question/type/list") @ApiOperation("获取问题列表,按照单选、多选和判断题分类返回") ResultVO getExamQuestionTypeList() { @@ -131,6 +161,12 @@ public class ExamController { return resultVO; } + /** + * @Description: 使用examService.createExam()获取数据,并将其包装在ResultVO对象中,用于获取问题列表 + * @param examCreateVo 前端传过来的参数 + * @param request 获取用户id + * @return ResultVO 对象,包含考试信息 + */ @PostMapping("/create") @ApiOperation("创建考试") ResultVO createExam(@RequestBody ExamCreateVo examCreateVo, HttpServletRequest request) { @@ -147,6 +183,12 @@ public class ExamController { return resultVO; } + /** + * @Description: 使用examService.updateExam()获取数据,并将其包装在ResultVO对象中,用于更新考试 + * @param examVo 前端传过来的参数 + * @param request 获取用户id + * @return + */ @PostMapping("/update") @ApiOperation("更新考试") ResultVO updateExam(@RequestBody ExamVo examVo, HttpServletRequest request) { @@ -163,6 +205,10 @@ public class ExamController { return resultVO; } + /** + * @Description: 获取考试列表,适配前端卡片列表 + * @return ResultVO> 对象,包含考试列表卡片信息 + */ @GetMapping("/card/list") @ApiOperation("获取考试列表,适配前端卡片列表") ResultVO> getExamCardList() { @@ -178,6 +224,11 @@ public class ExamController { return resultVO; } + /** + * @Description: 根据考试的id,获取考试详情 + * @param id 考试id + * @return ResultVO 对象,包含考试详情信息 + */ @GetMapping("/detail/{id}") @ApiOperation("根据考试的id,获取考试详情") ResultVO getExamDetail(@PathVariable String id) { @@ -192,6 +243,13 @@ public class ExamController { return resultVO; } + /** + * @Description: 使用examService.finishExam获取数据,并将其包装在ResultVO对象中,用于考试判分 + * @param examId 考试id + * @param answersMap 用户提交的答案 + * @param request 获取用户id + * @return + */ @PostMapping("/finish/{examId}") @ApiOperation("根据用户提交的答案对指定id的考试判分") ResultVO finishExam(@PathVariable String examId, @RequestBody HashMap> answersMap, HttpServletRequest request) { @@ -209,6 +267,11 @@ public class ExamController { return resultVO; } + /** + * @Description: 使用examService.getExamRecordList获取数据,并将其包装在ResultVO对象中,用于获取当前用户的考试记录 + * @param request 获取用户id + * @return ResultVO> 返回一个包含考试记录列表的ResultVO对象,如果发生异常,则返回一个包含错误信息的ResultVO对象。 + */ @GetMapping("/record/list") @ApiOperation("获取当前用户的考试记录") ResultVO> getExamRecordList(HttpServletRequest request) { @@ -226,6 +289,11 @@ public class ExamController { return resultVO; } + /** + * @Description: 使用examService.getExamRecordDetail获取数据,并将其包装在ResultVO对象中,用于获取指定id的考试记录详情 + * @param recordId 考试记录id + * @return ResultVO 返回一个包含考试记录详情的ResultVO对象,如果发生异常,则返回一个包含错误信息的ResultVO对象。 + */ @GetMapping("/record/detail/{recordId}") @ApiOperation("根据考试记录id获取考试记录详情") ResultVO getExamRecordDetail(@PathVariable String recordId) { diff --git a/backend/src/main/java/lsgwr/exam/vo/ExamCardVo.java b/backend/src/main/java/lsgwr/exam/vo/ExamCardVo.java index f516f89..c9e0b9f 100644 --- a/backend/src/main/java/lsgwr/exam/vo/ExamCardVo.java +++ b/backend/src/main/java/lsgwr/exam/vo/ExamCardVo.java @@ -1,24 +1,38 @@ -/*********************************************************** - * @Description : 考试卡片列表 - * @author : 梁山广(Laing Shan Guang) - * @date : 2019-06-23 19:30 - * @email : liangshanguang2@gmail.com - ***********************************************************/ package lsgwr.exam.vo; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; - +/** + * @Description: 用于表示考试卡片的信息,这个类可以很方便地与JSON数据绑定 + * 用于从API响应中解析考试卡片信息,将考试卡片信息序列化为JSON格式发送到服务器 + * Lombok库的@Data注解用于自动生成getter和setter方法 + * Jackson库的@JsonProperty注解用于指定JSON序列化和反序列化时使用的属性名称。 + */ @Data public class ExamCardVo { + /** + * 考试ID + */ @JsonProperty("id") private String examId; + /** + * 考试名称 + */ @JsonProperty("title") private String examName; + /** + * 考试头像 + */ @JsonProperty("avatar") private String examAvatar; + /** + * 考试描述 + */ @JsonProperty("content") private String examDescription; + /** + * 考试分数 + */ @JsonProperty("score") private Integer examScore; /**