| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- package nju.seec.helper.controller;
- import nju.seec.helper.api.bok.dto.CollectDTO;
- import nju.seec.helper.api.bok.dto.RateDTO;
- import nju.seec.helper.api.bok.vo.InteractiveVO;
- import nju.seec.helper.aspect.auth.Auth;
- import nju.seec.helper.aspect.auth.LoginUser;
- import nju.seec.helper.controller.response.PageResponse;
- import nju.seec.helper.dto.groups.Create;
- import nju.seec.helper.dto.groups.Modify;
- import nju.seec.helper.dto.question.BaseQuestionDTO;
- import nju.seec.helper.enums.UserRole;
- import nju.seec.helper.service.QuestionService;
- import nju.seec.helper.vo.question.BaseQuestionVO;
- import org.springframework.data.domain.Pageable;
- import org.springframework.data.web.PageableDefault;
- import org.springframework.validation.annotation.Validated;
- import org.springframework.web.bind.annotation.*;
- import java.util.List;
- import java.util.Set;
- /**
- * 题库
- *
- * @author xst
- * <p>
- * updated by cst
- */
- @RestController
- @RequestMapping("/api/question")
- public class QuestionController {
- private final QuestionService questionService;
- public QuestionController(QuestionService questionService) {
- this.questionService = questionService;
- }
- /**
- * 获得题目列表
- */
- @Auth(roles = {UserRole.TEACHER}, message = "获得题目列表")
- @GetMapping
- public PageResponse<BaseQuestionVO> getQuestionList(LoginUser user,
- @RequestParam(required = false, defaultValue = "") String stem,
- @RequestParam(required = false, defaultValue = "") String tag,
- @RequestParam(required = false, defaultValue = "") String knowledgeId,
- @PageableDefault(Integer.MAX_VALUE) Pageable pageable) {
- return PageResponse.of(questionService.getQuestions(user, stem, tag, knowledgeId, pageable));
- }
- /**
- * 获取某一测试题目
- */
- @Auth(roles = {UserRole.TEACHER, UserRole.STUDENT}, message = "获得测试题目")
- @GetMapping("/quiz/{quizId}")
- public List<BaseQuestionVO> getQuestionsByQuiz(LoginUser user, @PathVariable Long quizId) {
- return questionService.getQuestionsByQuiz(user, quizId);
- }
- /**
- * 获取某一题目信息
- */
- @Auth(roles = {UserRole.TEACHER}, message = "获取题目信息")
- @GetMapping("/{questionId}")
- public BaseQuestionVO getOneQuestion(LoginUser user, @PathVariable String questionId) {
- return questionService.getOneQuestion(user, questionId);
- }
- /**
- * 创建题目
- */
- @Auth(roles = UserRole.TEACHER, message = "创建题目")
- @PostMapping
- public BaseQuestionVO createQuestion(LoginUser user, @Validated(Create.class) @RequestBody BaseQuestionDTO baseQuestionDTO) {
- return questionService.createQuestion(user, baseQuestionDTO);
- }
- /**
- * 修改题目
- */
- @Auth(roles = UserRole.TEACHER, message = "修改题目")
- @PutMapping("/{questionId}")
- public BaseQuestionVO modifyQuestion(LoginUser user, @PathVariable String questionId, @Validated(Modify.class) @RequestBody BaseQuestionDTO baseQuestionDTO) {
- return questionService.modifyQuestion(user, questionId, baseQuestionDTO);
- }
- /**
- * 删除题目
- */
- @Auth(roles = UserRole.TEACHER, message = "删除题目")
- @DeleteMapping("/{questionId}")
- public void deleteQuestion(LoginUser user, @PathVariable String questionId) {
- questionService.deleteQuestion(user, questionId);
- }
- /**
- * 获取创建题目
- */
- @Auth(roles = UserRole.TEACHER, message = "获取创建的题目")
- @GetMapping("/created")
- public PageResponse<BaseQuestionVO> getCreatedQuestions(LoginUser user, @PageableDefault(size = Integer.MAX_VALUE) Pageable pageable) {
- return PageResponse.of(questionService.getCreatedQuestions(user, pageable));
- }
- /**
- * 获取创建题目ID
- */
- @Auth(roles = UserRole.TEACHER)
- @GetMapping("/created/ids")
- public Set<String> getCreatedQuestionIds(LoginUser user) {
- return questionService.getIdsOfCreatedQuestions(user);
- }
- /**
- * 收藏题目
- */
- @Auth(roles = {UserRole.TEACHER, UserRole.STUDENT}, message = "收藏题目")
- @PostMapping("/{questionId}/collect")
- public void starQuestion(LoginUser user, @PathVariable String questionId, @Validated @RequestBody CollectDTO collectDTO) {
- questionService.collectQuestion(user, questionId, collectDTO);
- }
- /**
- * 评价题目
- */
- @Auth(roles = {UserRole.TEACHER, UserRole.STUDENT}, message = "评价题目")
- @PostMapping("/{questionId}/rate")
- public void rateQuestion(LoginUser user, @PathVariable String questionId, @Validated @RequestBody RateDTO rateDTO) {
- questionService.rateQuestion(user, questionId, rateDTO);
- }
- /**
- * 取得收藏评价的题目
- */
- @Auth(roles = {UserRole.TEACHER, UserRole.STUDENT}, message = "取得收藏评价的题目")
- @GetMapping("/collected")
- public PageResponse<BaseQuestionVO> getCollectedQuestions(LoginUser user, @PageableDefault(size = Integer.MAX_VALUE) Pageable pageable) {
- return PageResponse.of(questionService.getCollectedAndRatedQuestions(user, true, null, pageable));
- }
- @Auth(roles = {UserRole.TEACHER, UserRole.STUDENT}, message = "取得收藏评价的题目")
- @GetMapping("/rated")
- public PageResponse<BaseQuestionVO> getRatedQuestions(LoginUser user, @PageableDefault(size = Integer.MAX_VALUE) Pageable pageable) {
- return PageResponse.of(questionService.getCollectedAndRatedQuestions(user, null, true, pageable));
- }
- /**
- * 取得完成的题目
- */
- @Auth(roles = UserRole.STUDENT, message = "取得完成的题目")
- @GetMapping("/completed")
- public PageResponse<BaseQuestionVO> getCompletedQuestions(LoginUser user, @PageableDefault(size = Integer.MAX_VALUE) Pageable pageable) {
- return PageResponse.of(questionService.getCompletedQuestions(user, pageable));
- }
- /**
- * 取得与题目的交互信息
- */
- @Auth(roles = {UserRole.TEACHER, UserRole.STUDENT}, message = "取得与题目的交互信息")
- @GetMapping("/interactive")
- public List<InteractiveVO> getInteractiveList(LoginUser user, String questionId) {
- return questionService.getInteractiveList(user, questionId);
- }
- }
|