diff --git a/backend/src/main/java/lsgwr/exam/ExamApplication.java b/backend/src/main/java/lsgwr/exam/ExamApplication.java index 95dd0f1..28458d1 100644 --- a/backend/src/main/java/lsgwr/exam/ExamApplication.java +++ b/backend/src/main/java/lsgwr/exam/ExamApplication.java @@ -3,9 +3,6 @@ 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 eb3b58e..e6ed4d0 100644 --- a/backend/src/main/java/lsgwr/exam/controller/ExamController.java +++ b/backend/src/main/java/lsgwr/exam/controller/ExamController.java @@ -1,6 +1,9 @@ -/** - * @Description : 这是一个REST控制器,处理与考试、问题和考试记录相关的HTTP请求,它包括创建、更新和检索考试和问题的方法,以及处理用户提交和评分。 - */ +/*********************************************************** + * @Description : 考试服务 + * @author : 梁山广(Laing Shan Guang) + * @date : 2019-05-28 08:04 + * @email : liangshanguang2@gmail.com + ***********************************************************/ package lsgwr.exam.controller; import lsgwr.exam.entity.Exam; @@ -19,16 +22,11 @@ import java.util.List; @RestController @Api(tags = "Exam APIs") -//将此控制器中的所有端点映射到/api/exam URL路径 @RequestMapping("/api/exam") public class ExamController { - @Autowired //注入一个ExamService实例,用于处理与考试和问题相关的业务逻辑 + @Autowired private ExamService examService; - /** - * @Description: 使用examService.getQuestionAll()获取数据,并将其包装在ResultVO对象中,用于获取所有考试列表 - * @ApiOperation注解用于描述API操作,它将显示在SwaggerUI中 - */ @GetMapping("/question/all") @ApiOperation("获取所有问题的列表") ResultVO> getQuestionAll() { @@ -43,10 +41,6 @@ public class ExamController { return resultVO; } - /** - * @Description: 从请求体中获取一个QuestionVo对象,并使用examService.updateQuestion()更新问题 - * @param questionVo 从请求体中获取的QuestionVo对象 - */ @PostMapping("/question/update") @ApiOperation("更新问题") ResultVO questionUpdate(@RequestBody QuestionVo questionVo) { @@ -61,13 +55,6 @@ 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) { @@ -87,10 +74,6 @@ public class ExamController { } } - /** - * @Description: 获取全部问题列表,使用examService.getSelections()获取数据,并将其包装在ResultVO对象中 - * @return ResultVO 对象,包含问题列表 - */ @GetMapping("/question/selection") @ApiOperation("获取问题分类的相关选项") ResultVO getSelections() { @@ -102,11 +85,6 @@ public class ExamController { } } - /** - * @Description: 使用examService.getQuestionDetail(id)获取数据,并将其包装在ResultVO对象中,用于获取全部问题列表 - * @param id 问题id - * @return ResultVO 对象,包含问题详情 - */ @GetMapping("/question/detail/{id}") @ApiOperation("根据问题的id获取问题的详细信息") ResultVO getQuestionDetail(@PathVariable String id) { @@ -123,10 +101,6 @@ public class ExamController { return resultVO; } - /** - * @Description: 使用examService.getExamAll()获取数据,并将其包装在ResultVO对象中,用于获取全部考试列表 - * @return ResultVO 对象,包含考试列表详情 - */ @GetMapping("/all") @ApiOperation("获取全部考试的列表") ResultVO> getExamAll() { @@ -142,10 +116,6 @@ public class ExamController { return resultVO; } - /** - * @Description: 使用examService.getExamQuestionTypeList()获取数据,并将其包装在ResultVO对象中,用于获取问题列表 - * @return ResultVO 对象,包含问题列表 - */ @GetMapping("/question/type/list") @ApiOperation("获取问题列表,按照单选、多选和判断题分类返回") ResultVO getExamQuestionTypeList() { @@ -161,12 +131,6 @@ 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) { @@ -183,12 +147,6 @@ 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) { @@ -205,10 +163,6 @@ public class ExamController { return resultVO; } - /** - * @Description: 获取考试列表,适配前端卡片列表 - * @return ResultVO> 对象,包含考试列表卡片信息 - */ @GetMapping("/card/list") @ApiOperation("获取考试列表,适配前端卡片列表") ResultVO> getExamCardList() { @@ -224,11 +178,6 @@ public class ExamController { return resultVO; } - /** - * @Description: 根据考试的id,获取考试详情 - * @param id 考试id - * @return ResultVO 对象,包含考试详情信息 - */ @GetMapping("/detail/{id}") @ApiOperation("根据考试的id,获取考试详情") ResultVO getExamDetail(@PathVariable String id) { @@ -243,13 +192,6 @@ 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) { @@ -267,11 +209,6 @@ public class ExamController { return resultVO; } - /** - * @Description: 使用examService.getExamRecordList获取数据,并将其包装在ResultVO对象中,用于获取当前用户的考试记录 - * @param request 获取用户id - * @return ResultVO> 返回一个包含考试记录列表的ResultVO对象,如果发生异常,则返回一个包含错误信息的ResultVO对象。 - */ @GetMapping("/record/list") @ApiOperation("获取当前用户的考试记录") ResultVO> getExamRecordList(HttpServletRequest request) { @@ -289,11 +226,6 @@ 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/entity/Question.java b/backend/src/main/java/lsgwr/exam/entity/Question.java index 67adf0b..65e48a2 100644 --- a/backend/src/main/java/lsgwr/exam/entity/Question.java +++ b/backend/src/main/java/lsgwr/exam/entity/Question.java @@ -1,12 +1,5 @@ -/*********************************************************** - * @Description : 考试题目表 - * @author : 梁山广(Laing Shan Guang) - * @date : 2019/5/14 07:46 - * @email : liangshanguang2@gmail.com - ***********************************************************/ package lsgwr.exam.entity; - import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import org.hibernate.annotations.DynamicUpdate; @@ -15,25 +8,70 @@ import javax.persistence.Entity; import javax.persistence.Id; import java.util.Date; +/** + * Question实体类,用于表示考试题目信息 + * 该类使用了Lombok的@Data注解自动生成getter和setter方法, + * 以及Hibernate的@Entity注解表明这是一个JPA实体类 + * @DynamicUpdate注解用于在更新实体时只更新发生变化的字段 + */ @Data @Entity @DynamicUpdate public class Question { + /** + * 题目ID,主键 + */ @Id private String questionId; + + /** + * 题目名称 + */ private String questionName; + + /** + * 题目分数 + */ private Integer questionScore; + + /** + * 创建题目的用户ID + */ private String questionCreatorId; + + /** + * 题目难度等级ID + */ private Integer questionLevelId; + + /** + * 题目类型ID + */ private Integer questionTypeId; + + /** + * 题目分类ID + */ private Integer questionCategoryId; + + /** + * 题目描述 + */ private String questionDescription; + + /** + * 题目选项IDs + */ private String questionOptionIds; + + /** + * 题目答案选项IDs + */ private String questionAnswerOptionIds; + /** * 创建时间, 设计表时设置了自动插入当前时间,无需在Java代码中设置了 */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createTime; diff --git a/backend/src/main/java/lsgwr/exam/entity/QuestionCategory.java b/backend/src/main/java/lsgwr/exam/entity/QuestionCategory.java index ca08f22..a474ea9 100644 --- a/backend/src/main/java/lsgwr/exam/entity/QuestionCategory.java +++ b/backend/src/main/java/lsgwr/exam/entity/QuestionCategory.java @@ -6,7 +6,11 @@ ***********************************************************/ package lsgwr.exam.entity; - +/** + * QuestionCategory类代表了一个实体,用于在数据库中存储问题类别信息。 + * 这个类被标记为@Entity,意味着它是一个JPA实体,可以映射到数据库表。 + * Lombok的@Data注解用于自动生成getter和setter方法,以及toString、equals和hashCode方法。 + */ import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; @@ -17,15 +21,26 @@ import javax.persistence.Id; @Data @Entity public class QuestionCategory { - + /** + * 问题类别ID,是这个实体的主键。 + * @Id注解指明了这个字段是实体的主键。 + * @GeneratedValue注解表示这个字段的值是自动生成的。 + * @JsonProperty注解用于序列化和反序列化时,指定JSON对象中的键名。 + */ @Id @GeneratedValue @JsonProperty("id") private Integer questionCategoryId; - + /** + * 问题类别名称,用于描述这个类别的名字。 + * @JsonProperty注解用于序列化和反序列化时,指定JSON对象中的键名。 + */ @JsonProperty("name") private String questionCategoryName; - + /** + * 问题类别描述,用于提供这个类别的详细信息或说明。 + * @JsonProperty注解用于序列化和反序列化时,指定JSON对象中的键名。 + */ @JsonProperty("description") private String questionCategoryDescription; } diff --git a/backend/src/main/java/lsgwr/exam/entity/QuestionLevel.java b/backend/src/main/java/lsgwr/exam/entity/QuestionLevel.java index a056cbc..0df4b7e 100644 --- a/backend/src/main/java/lsgwr/exam/entity/QuestionLevel.java +++ b/backend/src/main/java/lsgwr/exam/entity/QuestionLevel.java @@ -20,11 +20,11 @@ public class QuestionLevel { @Id @GeneratedValue @JsonProperty("id") - private Integer questionLevelId; + private Integer questionLevelId;//题目难度等级ID @JsonProperty("name") - private String questionLevelName; + private String questionLevelName;//题目难度等级名称 @JsonProperty("description") - private String questionLevelDescription; + private String questionLevelDescription;//题目难度等级描述 } diff --git a/backend/src/main/java/lsgwr/exam/entity/QuestionOption.java b/backend/src/main/java/lsgwr/exam/entity/QuestionOption.java index 3c06ef7..b3bfab7 100644 --- a/backend/src/main/java/lsgwr/exam/entity/QuestionOption.java +++ b/backend/src/main/java/lsgwr/exam/entity/QuestionOption.java @@ -11,12 +11,19 @@ import lombok.Data; import javax.persistence.Entity; import javax.persistence.Id; - +/** + * 表示考试题目选项的实体类,包括选项的标识符、内容和描述。 + * 该类使用 @Entity 注解标记,表示这是一个 JPA 实体类,用于对象关系映射(ORM)与数据库交互。 + * 使用 Lombok 库的 @Data 注解自动生成 getter、setter、构造方法以及 equals、hash 和 toString 方法,减少样板代码。 + */ @Data @Entity public class QuestionOption { + /** + * 题目选项的唯一标识符,使用 @Id 注解标记,表示该字段是实体的主键。 + */ @Id private String questionOptionId; - private String questionOptionContent; - private String questionOptionDescription; + private String questionOptionContent;// 选项内容,描述选项的文本或信息 + private String questionOptionDescription;// 选项描述,对选项的详细解释或注释 } diff --git a/backend/src/main/java/lsgwr/exam/entity/QuestionType.java b/backend/src/main/java/lsgwr/exam/entity/QuestionType.java index 46a4f55..06cfaa8 100644 --- a/backend/src/main/java/lsgwr/exam/entity/QuestionType.java +++ b/backend/src/main/java/lsgwr/exam/entity/QuestionType.java @@ -13,18 +13,25 @@ import lombok.Data; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; - +/** + * QuestionType类代表了一个实体,用于在数据库中存储问题类型的信息。 + * 它包括问题类型的ID、名称和描述。 + */ @Data @Entity public class QuestionType { + /** + * 问题类型的唯一标识符。 + * 通过@JsonProperty注解,该字段在序列化和反序列化时将映射为"id"。 + */ @Id @GeneratedValue @JsonProperty("id") private Integer questionTypeId; - + /// 问题类型的名称。 @JsonProperty("name") private String questionTypeName; - + //问题类型的描述。 @JsonProperty("description") private String questionTypeDescription; } diff --git a/backend/src/main/java/lsgwr/exam/enums/QuestionEnum.java b/backend/src/main/java/lsgwr/exam/enums/QuestionEnum.java index 06f6b5b..d5761f6 100644 --- a/backend/src/main/java/lsgwr/exam/enums/QuestionEnum.java +++ b/backend/src/main/java/lsgwr/exam/enums/QuestionEnum.java @@ -18,12 +18,12 @@ public enum QuestionEnum { CHECK(2, "多选题"), JUDGE(3, "判断题"); - + //构造函数,用于创建一个新的题目类型实例 QuestionEnum(Integer id, String role) { this.id = id; this.role = role; } - private Integer id; - private String role; + private Integer id;// 角色id + private String role;// 角色名称 } diff --git a/backend/src/main/java/lsgwr/exam/repository/QuestionCategoryRepository.java b/backend/src/main/java/lsgwr/exam/repository/QuestionCategoryRepository.java index 8182ade..eb7e9c7 100644 --- a/backend/src/main/java/lsgwr/exam/repository/QuestionCategoryRepository.java +++ b/backend/src/main/java/lsgwr/exam/repository/QuestionCategoryRepository.java @@ -10,4 +10,6 @@ import lsgwr.exam.entity.QuestionCategory; import org.springframework.data.jpa.repository.JpaRepository; public interface QuestionCategoryRepository extends JpaRepository { + // 该接口继承了JpaRepository,用于处理QuestionCategory实体的数据库操作 + // Integer类型作为实体的主键类型 } diff --git a/backend/src/main/java/lsgwr/exam/repository/QuestionLevelRepository.java b/backend/src/main/java/lsgwr/exam/repository/QuestionLevelRepository.java index 69af582..dd52021 100644 --- a/backend/src/main/java/lsgwr/exam/repository/QuestionLevelRepository.java +++ b/backend/src/main/java/lsgwr/exam/repository/QuestionLevelRepository.java @@ -1,13 +1,14 @@ -/*********************************************************** - * @Description : - * @author : 梁山广(Laing Shan Guang) - * @date : 2019-05-14 08:26 - * @email : liangshanguang2@gmail.com - ***********************************************************/ +/** + * 问题级别数据访问层接口 + * 继承自JpaRepository,用于对QuestionLevel实体进行数据库操作 + * 该接口没有定义额外的方法,直接继承了JpaRepository提供的标准CRUD方法 + */ package lsgwr.exam.repository; import lsgwr.exam.entity.QuestionLevel; import org.springframework.data.jpa.repository.JpaRepository; public interface QuestionLevelRepository extends JpaRepository { + // 该接口继承了JpaRepository,用于处理QuestionLevel实体的数据库操作 + // Integer类型参数表示实体的主键类型 } diff --git a/backend/src/main/java/lsgwr/exam/repository/QuestionOptionRepository.java b/backend/src/main/java/lsgwr/exam/repository/QuestionOptionRepository.java index 7afb1d9..2878be5 100644 --- a/backend/src/main/java/lsgwr/exam/repository/QuestionOptionRepository.java +++ b/backend/src/main/java/lsgwr/exam/repository/QuestionOptionRepository.java @@ -1,13 +1,9 @@ -/*********************************************************** - * @Description : - * @author : 梁山广(Laing Shan Guang) - * @date : 2019-05-14 08:27 - * @email : liangshanguang2@gmail.com - ***********************************************************/ package lsgwr.exam.repository; import lsgwr.exam.entity.QuestionOption; import org.springframework.data.jpa.repository.JpaRepository; public interface QuestionOptionRepository extends JpaRepository { -} + // 该接口继承了JpaRepository,用于处理QuestionOption实体的数据库操作 + // 没有定义额外的方法,意味着它利用JpaRepository提供的标准CRUD操作 +} \ No newline at end of file diff --git a/backend/src/main/java/lsgwr/exam/repository/QuestionRepository.java b/backend/src/main/java/lsgwr/exam/repository/QuestionRepository.java index 97b9260..b26fa2e 100644 --- a/backend/src/main/java/lsgwr/exam/repository/QuestionRepository.java +++ b/backend/src/main/java/lsgwr/exam/repository/QuestionRepository.java @@ -1,19 +1,28 @@ -/*********************************************************** - * @Description : - * @author : 梁山广(Laing Shan Guang) - * @date : 2019-05-14 08:25 - * @email : liangshanguang2@gmail.com - ***********************************************************/ package lsgwr.exam.repository; import lsgwr.exam.entity.Question; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; - import java.util.List; +/** + * Question实体的仓库接口,用于定义对Question实体进行数据库操作的方法 + */ public interface QuestionRepository extends JpaRepository { + + /** + * 根据问题类型ID查找问题 + * + * @param id 问题类型ID + * @return 匹配的问题类型ID的所有问题列表 + */ List findByQuestionTypeId(Integer id); + + /** + * 查询所有问题,并按照更新时间降序排序 + * + * @return 所有问题列表,按更新时间降序排列 + */ @Query("select q from Question q order by q.updateTime desc") List findAll(); } diff --git a/backend/src/main/java/lsgwr/exam/repository/QuestionTypeRepository.java b/backend/src/main/java/lsgwr/exam/repository/QuestionTypeRepository.java index acdee52..3c66453 100644 --- a/backend/src/main/java/lsgwr/exam/repository/QuestionTypeRepository.java +++ b/backend/src/main/java/lsgwr/exam/repository/QuestionTypeRepository.java @@ -1,13 +1,9 @@ -/*********************************************************** - * @Description : - * @author : 梁山广(Laing Shan Guang) - * @date : 2019-05-14 08:28 - * @email : liangshanguang2@gmail.com - ***********************************************************/ package lsgwr.exam.repository; import lsgwr.exam.entity.QuestionType; import org.springframework.data.jpa.repository.JpaRepository; public interface QuestionTypeRepository extends JpaRepository { -} + // 该接口继承了JpaRepository,用于处理QuestionType实体的数据库操作 + // Integer类型作为实体的主键类型 +} \ No newline at end of file diff --git a/backend/src/main/java/lsgwr/exam/vo/ExamCardVo.java b/backend/src/main/java/lsgwr/exam/vo/ExamCardVo.java index c9e0b9f..f516f89 100644 --- a/backend/src/main/java/lsgwr/exam/vo/ExamCardVo.java +++ b/backend/src/main/java/lsgwr/exam/vo/ExamCardVo.java @@ -1,38 +1,24 @@ +/*********************************************************** + * @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; /** diff --git a/backend/src/main/java/lsgwr/exam/vo/QuestionCreateSimplifyVo.java b/backend/src/main/java/lsgwr/exam/vo/QuestionCreateSimplifyVo.java index 8eba970..ce4e55a 100644 --- a/backend/src/main/java/lsgwr/exam/vo/QuestionCreateSimplifyVo.java +++ b/backend/src/main/java/lsgwr/exam/vo/QuestionCreateSimplifyVo.java @@ -1,9 +1,3 @@ -/*********************************************************** - * @Description : 问题创建的实体类,简化了下 - * @author : 梁山广(Laing Shan Guang) - * @date : 2019-06-02 13:26 - * @email : liangshanguang2@gmail.com - ***********************************************************/ package lsgwr.exam.vo; import com.fasterxml.jackson.annotation.JsonProperty; @@ -11,6 +5,9 @@ import lombok.Data; import java.util.List; +/** + * 简化版题目创建VO类,用于处理题目创建时的部分信息 + */ @Data public class QuestionCreateSimplifyVo { /** @@ -19,6 +16,9 @@ public class QuestionCreateSimplifyVo { @JsonProperty("name") private String questionName; + /** + * 题目描述 + */ @JsonProperty("desc") private String questionDescription; diff --git a/backend/src/main/java/lsgwr/exam/vo/QuestionCreateVo.java b/backend/src/main/java/lsgwr/exam/vo/QuestionCreateVo.java index b565a2e..9ab5671 100644 --- a/backend/src/main/java/lsgwr/exam/vo/QuestionCreateVo.java +++ b/backend/src/main/java/lsgwr/exam/vo/QuestionCreateVo.java @@ -1,9 +1,3 @@ -/*********************************************************** - * @Description : 问题创建的实体类 - * @author : 梁山广(Laing Shan Guang) - * @date : 2019-06-02 13:26 - * @email : liangshanguang2@gmail.com - ***********************************************************/ package lsgwr.exam.vo; import com.fasterxml.jackson.annotation.JsonProperty; @@ -11,6 +5,9 @@ import lombok.Data; import java.util.List; +/** + * 用于创建问题的视图对象,包含了问题的基本信息及其选项 + */ @Data public class QuestionCreateVo { /** @@ -19,6 +16,9 @@ public class QuestionCreateVo { @JsonProperty("name") private String questionName; + /** + * 题目描述 + */ @JsonProperty("desc") private String questionDescription; diff --git a/backend/src/main/java/lsgwr/exam/vo/QuestionDetailVo.java b/backend/src/main/java/lsgwr/exam/vo/QuestionDetailVo.java index d6c6fae..a1be137 100644 --- a/backend/src/main/java/lsgwr/exam/vo/QuestionDetailVo.java +++ b/backend/src/main/java/lsgwr/exam/vo/QuestionDetailVo.java @@ -1,9 +1,3 @@ -/*********************************************************** - * @Description : 问题详情的实体类 - * @author : 梁山广(Laing Shan Guang) - * @date : 2019-10-20 09:51 - * @email : liangshanguang2@gmail.com - ***********************************************************/ package lsgwr.exam.vo; import lsgwr.exam.entity.QuestionOption; @@ -12,6 +6,9 @@ import lombok.Data; import java.util.ArrayList; import java.util.List; +/** + * 问题详情视图对象,用于展示问题的详细信息 + */ @Data public class QuestionDetailVo { /** @@ -28,14 +25,17 @@ public class QuestionDetailVo { * 考试描述 */ private String description; + /** * 问题的类型 */ private String type; + /** * 问题的选项 */ private List options; + /** * 问题的答案,选项的id组成的数组 */ diff --git a/backend/src/main/java/lsgwr/exam/vo/QuestionOptionCreateVo.java b/backend/src/main/java/lsgwr/exam/vo/QuestionOptionCreateVo.java index 470088e..46643b3 100644 --- a/backend/src/main/java/lsgwr/exam/vo/QuestionOptionCreateVo.java +++ b/backend/src/main/java/lsgwr/exam/vo/QuestionOptionCreateVo.java @@ -1,25 +1,29 @@ -/*********************************************************** - * @Description : 问题选项的外层对象 - * @author : 梁山广(Laing Shan Guang) - * @date : 2019-06-02 20:23 - * @email : liangshanguang2@gmail.com - ***********************************************************/ package lsgwr.exam.vo; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; +/** + * 问题选项的创建视图模型类 + * 用于处理问题选项的创建请求 + */ @Data public class QuestionOptionCreateVo { /** * 问题的内容 + * 这里使用@JsonProperty注解来指定JSON字段名 + * 这是因为在JSON与Java对象进行序列化和反序列化时 + * 可以将JSON中的"content"字段映射到Java对象中的"questionOptionContent"属性 */ @JsonProperty("content") private String questionOptionContent; /** - * 当前的选项是否是问题大答案 + * 当前的选项是否是问题的答案 + * 默认值为false + * 同样使用@JsonProperty注解来指定JSON字段名 + * 这样可以将JSON中的"answer"字段映射到Java对象中的"answer"属性 */ @JsonProperty("answer") private Boolean answer = false; diff --git a/backend/src/main/java/lsgwr/exam/vo/QuestionOptionVo.java b/backend/src/main/java/lsgwr/exam/vo/QuestionOptionVo.java index 58cc32a..7905da2 100644 --- a/backend/src/main/java/lsgwr/exam/vo/QuestionOptionVo.java +++ b/backend/src/main/java/lsgwr/exam/vo/QuestionOptionVo.java @@ -1,25 +1,45 @@ -/*********************************************************** - * @Description : 问题选项的自定义实体类 - * @author : 梁山广(Laing Shan Guang) - * @date : 2019-06-01 09:45 - * @email : liangshanguang2@gmail.com - ***********************************************************/ +/** + * QuestionOptionVo类用于表示考试题目中的选项信息 + * 它包含了选项的标识、内容、是否为正确答案以及选项的描述 + * 该类使用Lombok的@Data注解,自动生成getter和setter方法,简化代码 + * 使用Jackson的@JsonProperty注解,以便在序列化和反序列化JSON时映射到特定的字段 + */ package lsgwr.exam.vo; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; +/** + * 表示考试题目选项的值对象 + */ @Data public class QuestionOptionVo { + /** + * 选项的唯一标识符 + * 使用@JsonProperty注解指定JSON字段名 + */ @JsonProperty("id") private String questionOptionId; + /** + * 选项的内容 + * 使用@JsonProperty注解指定JSON字段名 + */ @JsonProperty("content") private String questionOptionContent; + /** + * 标识该选项是否为正确答案 + * 默认值为false + * 使用@JsonProperty注解指定JSON字段名 + */ @JsonProperty("answer") private Boolean answer = false; + /** + * 对选项的描述,用于提供额外的信息 + * 使用@JsonProperty注解指定JSON字段名 + */ @JsonProperty("description") private String questionOptionDescription; } diff --git a/backend/src/main/java/lsgwr/exam/vo/QuestionPageVo.java b/backend/src/main/java/lsgwr/exam/vo/QuestionPageVo.java index 17ed650..04595a3 100644 --- a/backend/src/main/java/lsgwr/exam/vo/QuestionPageVo.java +++ b/backend/src/main/java/lsgwr/exam/vo/QuestionPageVo.java @@ -1,9 +1,3 @@ -/*********************************************************** - * @Description : 问题列表反馈给前端的对象 - * @author : 梁山广(Laing Shan Guang) - * @date : 2019-05-28 22:09 - * @email : liangshanguang2@gmail.com - ***********************************************************/ package lsgwr.exam.vo; import com.fasterxml.jackson.annotation.JsonProperty; @@ -11,6 +5,9 @@ import lombok.Data; import java.util.List; +/** + * 用于试题分页查询的视图对象 + */ @Data public class QuestionPageVo { diff --git a/backend/src/main/java/lsgwr/exam/vo/QuestionSelectionVo.java b/backend/src/main/java/lsgwr/exam/vo/QuestionSelectionVo.java index dfdbf93..bd9c27f 100644 --- a/backend/src/main/java/lsgwr/exam/vo/QuestionSelectionVo.java +++ b/backend/src/main/java/lsgwr/exam/vo/QuestionSelectionVo.java @@ -1,9 +1,7 @@ -/*********************************************************** - * @Description : 前端创建问题时的下拉列表选择 - * @author : 梁山广(Laing Shan Guang) - * @date : 2019-06-03 07:35 - * @email : liangshanguang2@gmail.com - ***********************************************************/ +/** + * 问题选择视图对象 + * 用于在前端展示问题选择界面时传递问题类型、问题类别和问题难度等级信息 + */ package lsgwr.exam.vo; import com.fasterxml.jackson.annotation.JsonProperty; @@ -14,14 +12,30 @@ import lombok.Data; import java.util.List; +/** + * 问题选择视图对象 + * 包含问题类型、问题类别和问题难度等级的列表 + */ @Data public class QuestionSelectionVo { + /** + * 问题类型列表 + * 用于展示可选择的问题类型 + */ @JsonProperty("types") private List questionTypeList; + /** + * 问题类别列表 + * 用于展示可选择的问题类别 + */ @JsonProperty("categories") private List questionCategoryList; + /** + * 问题难度等级列表 + * 用于展示可选择的问题难度等级 + */ @JsonProperty("levels") private List questionLevelList; } diff --git a/backend/src/main/java/lsgwr/exam/vo/QuestionVo.java b/backend/src/main/java/lsgwr/exam/vo/QuestionVo.java index 5ce1744..4645dd0 100644 --- a/backend/src/main/java/lsgwr/exam/vo/QuestionVo.java +++ b/backend/src/main/java/lsgwr/exam/vo/QuestionVo.java @@ -1,9 +1,3 @@ -/*********************************************************** - * @Description : 考试问题的对外封装类 - * @author : 梁山广(Laing Shan Guang) - * @date : 2019-05-28 08:17 - * @email : liangshanguang2@gmail.com - ***********************************************************/ package lsgwr.exam.vo; import com.fasterxml.jackson.annotation.JsonFormat; @@ -13,14 +7,27 @@ import lombok.Data; import java.util.Date; import java.util.List; +/** + * QuestionVo类代表了一个问题的值对象,用于在系统中传输和展示问题相关信息。 + * 该类使用Lombok的@Data注解,自动生成getter和setter方法,简化代码并提高可读性。 + */ @Data public class QuestionVo { + /** + * 问题在数据库中的唯一标识符。 + */ @JsonProperty("id") private String questionId; + /** + * 问题的名称或标题。 + */ @JsonProperty("name") private String questionName; + /** + * 问题的分值,表示该问题在评估或考试中的重要性或权重。 + */ @JsonProperty("score") private Integer questionScore; @@ -66,7 +73,9 @@ public class QuestionVo { @JsonProperty("categoryId") private int questionCategoryId; - + /** + * 问题的描述信息,可能包含问题的背景、要求或其他详细说明。 + */ @JsonProperty("description") private String questionDescription; @@ -76,7 +85,6 @@ public class QuestionVo { @JsonProperty("options") private List questionOptionVoList; - /** * 更新时间,设计表时设置了自动插入当前时间,无需在Java代码中设置了。 * 同时@DynamicUpdate注解可以时间当数据库数据变化时自动更新,无需人工维护