查询题目详情对于复合题返回题目及答案

This commit is contained in:
Lqc 2025-08-23 14:57:43 +08:00
parent 3f2c7877ed
commit d9c50d4750

View File

@ -22,8 +22,10 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@RestController
@ -96,19 +98,52 @@ public class RepoBizController {
@GetMapping("/repoList/{questionId}")
@Operation(summary = "查询题目详情")
public Result<?> questionDetail(@PathVariable String questionId,@RequestParam Integer type) {
if (type == 1 || type == 2 || type == 3) {
return Result.ok(choiceDetail(questionId));
}else if(type == 4 || type == 5) {
if (type == 0 || type == 1 || type == 2) {
List<QuestionOption> questionOptions = choiceDetail(questionId);
return Result.ok(questionOptions);
}else if(type == 3 || type == 4) {
return Result.ok(answerDetail(questionId));
}else {
return Result.ok(questionService.list(
//查询复合题所包含的题目
List<Question> list = questionService.list(
new LambdaQueryWrapper<Question>().
eq(Question::getParentId, questionId)
)
);
//根据题目类型进行分组false选择多选判断题true填空简答题
Map<Boolean, List<Question>> groupedQuestions = list.stream()
.collect(Collectors.partitioningBy(
q -> q.getType() > 2
));
Map<String, Map<String, List<?>>> questionOptionMap = new HashMap<>();
//获取选择题多选题判断题答案
List<Question> question = groupedQuestions.get(false);
if(!question.isEmpty()){
Map<String, List<?>> questionListHashMap = new HashMap<>();
question.forEach(q -> {
ArrayList<Object> objects = new ArrayList<>();
objects.add(q);
objects.add(choiceDetail(q.getId()));
questionListHashMap.put(q.getId(), objects);
});
questionOptionMap.put("questionOption", questionListHashMap);
}
//获取填空题简答题答案
List<Question> question1 = groupedQuestions.get(true);
if(!question1.isEmpty()){
Map<String, List<?>> questionAnswerMap = new HashMap<>();
question1.forEach(q -> {
ArrayList<Object> objects = new ArrayList<>();
objects.add(q);
objects.add(answerDetail(q.getId()));
questionAnswerMap.put(q.getId(), objects);
});
questionOptionMap.put("questionAnswer", questionAnswerMap);
}
return Result.ok(questionOptionMap);
}
}
//查询选择题多选题判断题答案
public List<QuestionOption> choiceDetail(String questionId) {
return questionOptionService.list(
new LambdaQueryWrapper<QuestionOption>().
@ -117,7 +152,7 @@ public class RepoBizController {
);
}
//查询填空题简答题答案
public List<QuestionAnswer> answerDetail(String questionId) {
return questionAnswerService.list(
new LambdaQueryWrapper<QuestionAnswer>().