Преглед изворни кода

更改获取当前用户创建的题目方法接口及相应的实现

tubinyan пре 6 година
родитељ
комит
f36eaf0763

+ 16 - 3
src/main/java/nju/seec/helper/controller/QuestionController.java

@@ -95,13 +95,26 @@ public class QuestionController {
         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));
+//    }
+
     /**
-     * 获取创建题目
+     * 获取当前用户创建题目
      */
     @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));
+    public PageResponse<BaseQuestionVO> getCreatedQuestions(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.getCreatedQuestions(user, stem, tag, knowledgeId, pageable));
     }
 
     /**

+ 6 - 4
src/main/java/nju/seec/helper/service/QuestionService.java

@@ -85,11 +85,13 @@ public interface QuestionService {
     /**
      * 获取创建的题目
      *
-     * @param user
-     * @param pageable
-     * @return
+     * @param user 用户
+     * @param stem 查询题干的语句
+     * @param tag 标签
+     * @param knowledgeId 知识点Id
+     * @param pageable 分页
      */
-    Page<BaseQuestionVO> getCreatedQuestions(LoginUser user, Pageable pageable);
+    Page<BaseQuestionVO> getCreatedQuestions(LoginUser user, String stem, String tag, String knowledgeId, Pageable pageable);
 
     /**
      * 获取创建题目的id

+ 25 - 14
src/main/java/nju/seec/helper/service/impl/QuestionServiceImpl.java

@@ -34,10 +34,7 @@ import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -151,19 +148,33 @@ public class QuestionServiceImpl implements QuestionService {
 
     @Transactional(readOnly = true)
     @Override
-    public Page<BaseQuestionVO> getCreatedQuestions(LoginUser user, Pageable pageable) {
+    public Page<BaseQuestionVO> getCreatedQuestions(LoginUser user, String stem, String tag, String knowledgeId, Pageable pageable) {
         Page<String> questionIdPage = questionRecordDAO.findQuestionIdsByTeacher(userDAO.findUserById(user.getId()), pageable);
-
-        return new PageImpl<>(
-                questionQueryApi.getQuestionListById(questionIdPage.getContent())
-                        .stream()
-                        .map(bokQuestion -> BaseQuestionVO.convertBokQuestionToVO(bokQuestion, true))
-                        .collect(Collectors.toList())
-                , pageable
-                , questionIdPage.getTotalElements()
-        );
+        List<String> knowledgeIdList = (knowledgeId==null || knowledgeId.equals("")) ? new ArrayList<>() : Arrays.asList(knowledgeId.split("\\."));
+        // 这里对当前用户创建的所有问题 根据题干语句、知识点 进行筛选
+        List<BaseQuestionVO> ret = questionQueryApi.getQuestionListById(questionIdPage.getContent())
+                .stream()
+                .filter(questionVO -> questionVO.getStem().contains(stem) && questionVO.getKnowledgeId().containsAll(knowledgeIdList))
+                .map(bokQuestion -> BaseQuestionVO.convertBokQuestionToVO(bokQuestion, true))
+                .collect(Collectors.toList());
+        return new PageImpl<>(ret, pageable, ret.size());
     }
 
+//    @Transactional(readOnly = true)
+//    @Override
+//    public Page<BaseQuestionVO> getCreatedQuestions(LoginUser user, Pageable pageable) {
+//        Page<String> questionIdPage = questionRecordDAO.findQuestionIdsByTeacher(userDAO.findUserById(user.getId()), pageable);
+//
+//        return new PageImpl<>(
+//                questionQueryApi.getQuestionListById(questionIdPage.getContent())
+//                        .stream()
+//                        .map(bokQuestion -> BaseQuestionVO.convertBokQuestionToVO(bokQuestion, true))
+//                        .collect(Collectors.toList())
+//                , pageable
+//                , questionIdPage.getTotalElements()
+//        );
+//    }
+
     @Transactional(readOnly = true)
     @Override
     public Set<String> getIdsOfCreatedQuestions(LoginUser user) {