ExamService.java 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. package com.nju.edu.eval.service;
  2. import com.nju.edu.eval.data.entity.Exam;
  3. import com.nju.edu.eval.model.vo.exam.*;
  4. import com.nju.edu.eval.model.vo.question.QuestionAndScoreVO;
  5. import java.util.Date;
  6. import java.util.List;
  7. import java.util.Optional;
  8. /**
  9. * @author mars
  10. */
  11. public interface ExamService {
  12. /**
  13. * 创建考试
  14. * @param examVO exam的vo
  15. * @param creatorId 创建考试者id
  16. * @return 邀请码,题目等内容
  17. */
  18. NewExamVO createExam(CreateExamVO examVO, Integer creatorId);
  19. /**
  20. * 获得所有考试
  21. * @param userId
  22. * @param pageSize
  23. * @param pageNum
  24. * @return 考试列表
  25. */
  26. ExamListAndNumVO getExamList(int userId, int pageSize, int pageNum);
  27. /**
  28. * 获得某个时间段内的考试
  29. * @param startTime 开始时间
  30. * @param endTime 结束时间
  31. * @return 考试信息列表
  32. * @see ExamInfoVO
  33. */
  34. List<ExamInfoVO> getExamListOfTimeRange(Date startTime, Date endTime);
  35. /**
  36. * 根据id获得考试
  37. * @param id 考试id
  38. * @return 该id对应的考试
  39. */
  40. ExamVO getExamById(Integer id);
  41. /**
  42. * 获得id对应考试的题目和分值
  43. * @param id 考试Id
  44. * @return 题目id 和 分值映射的list
  45. */
  46. QuestionAndScoreVO getExamQuestionAndScoreById(Integer id);
  47. /**
  48. * 获得某次考试的代码题列表
  49. * @param id 考试id
  50. * @return 代码题id列表
  51. */
  52. List<String> getCodeQuestionIdsByExamId(Integer id);
  53. /**
  54. * 为考试更新题目
  55. * @param examId 考试Id
  56. * @param questionScoreMapVO 题目和分值的映射
  57. */
  58. void updateQuestionsOfExam(Integer examId, QuestionScoreMapVO questionScoreMapVO);
  59. /**
  60. * 延长考试时间
  61. * @param examId 考试id
  62. * @param endTime 延长后的时间
  63. * @return exam的optional值
  64. */
  65. Optional<Exam> extendExamTime(Integer examId, Date endTime);
  66. /**
  67. * 获得某学生参加的考试相关信息
  68. * @param id 学生id
  69. * @param pageSize
  70. * @param pageNum
  71. * @param state
  72. * @return
  73. */
  74. ExamListAndNumVO getExamsByCurrentStudent(Integer id, int pageSize, int pageNum, int state);
  75. /**
  76. * 获得由老师或者HR创建的考试
  77. * @param id 老师/HR id
  78. * @param pageSize
  79. * @param pageNum
  80. * @param state
  81. * @return
  82. */
  83. ExamListAndNumVO getExamsCreatedByCurrentTeacherOrHR(Integer id, int pageSize, int pageNum, int state);
  84. /**
  85. * 学生通过邀请码参加考试
  86. * @param userId 学生id
  87. * @param examId 考试id
  88. * @param inviteCodeInput 输入的邀请码
  89. * @return 是否成功加入考试
  90. */
  91. boolean takeExam(Integer userId, Integer examId, String inviteCodeInput);
  92. /**
  93. * 给某次考试设置题目
  94. * @param examId 考试Id
  95. * @param sampleExamPaperId 样卷Id
  96. */
  97. void setExamQuestionsBySampleExamPaper(int examId, int sampleExamPaperId);
  98. }