merge
This commit is contained in:
GoCo 2025-08-26 02:06:22 +08:00
commit c48769872d
2 changed files with 70 additions and 10 deletions

View File

@ -21,9 +21,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.ArrayList; import java.util.*;
import java.util.List; import java.util.stream.Collectors;
import java.util.Map;
@RestController @RestController
@ -77,7 +76,34 @@ public class RepoBizController {
@Operation(summary = "查询题库下题目") @Operation(summary = "查询题库下题目")
public Result<List<Question>> questionList(@PathVariable String repoId) { public Result<List<Question>> questionList(@PathVariable String repoId) {
List<String> list = questionRepoService.questionList(repoId); List<String> list = questionRepoService.questionList(repoId);
return Result.ok(questionService.listByIds(list)); List<Question> questions = questionService.listByIds(list);
//获取复选题id
List<String> type5Ids = questions.stream()
.filter(question -> question.getType() == 5)
.map(Question::getId)
.collect(Collectors.toList());
//获取复选题所包含的题目
List<Question> type5Questions = new ArrayList<>();
if (!type5Ids.isEmpty()) {
type5Questions = questionService.list(
new LambdaQueryWrapper<Question>()
.in(Question::getParentId, type5Ids)
);
}
// 创建一个映射用于快速查找父ID对应的子题目
Map<String, List<Question>> parentToChildrenMap = type5Questions.stream()
.collect(Collectors.groupingBy(Question::getParentId));
// 将子题目添加到原始列表中保持原有顺序
List<Question> resultQuestions = new ArrayList<>();
for (Question question : questions) {
resultQuestions.add(question);
if (question.getType() == 5) {
List<Question> children = parentToChildrenMap.getOrDefault(question.getId(), Collections.emptyList());
resultQuestions.addAll(children);
}
}
return Result.ok(resultQuestions);
} }
@GetMapping("course_list") @GetMapping("course_list")
@ -96,19 +122,52 @@ public class RepoBizController {
@GetMapping("/repoList/{questionId}") @GetMapping("/repoList/{questionId}")
@Operation(summary = "查询题目详情") @Operation(summary = "查询题目详情")
public Result<?> questionDetail(@PathVariable String questionId,@RequestParam Integer type) { public Result<?> questionDetail(@PathVariable String questionId,@RequestParam Integer type) {
if (type == 1 || type == 2 || type == 3) { if (type == 0 || type == 1 || type == 2) {
return Result.ok(choiceDetail(questionId)); List<QuestionOption> questionOptions = choiceDetail(questionId);
}else if(type == 4 || type == 5) { return Result.ok(questionOptions);
}else if(type == 3 || type == 4) {
return Result.ok(answerDetail(questionId)); return Result.ok(answerDetail(questionId));
}else { }else {
return Result.ok(questionService.list( //查询复合题所包含的题目
List<Question> list = questionService.list(
new LambdaQueryWrapper<Question>(). new LambdaQueryWrapper<Question>().
eq(Question::getParentId, questionId) 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) { public List<QuestionOption> choiceDetail(String questionId) {
return questionOptionService.list( return questionOptionService.list(
new LambdaQueryWrapper<QuestionOption>(). new LambdaQueryWrapper<QuestionOption>().
@ -117,7 +176,7 @@ public class RepoBizController {
); );
} }
//查询填空题简答题答案
public List<QuestionAnswer> answerDetail(String questionId) { public List<QuestionAnswer> answerDetail(String questionId) {
return questionAnswerService.list( return questionAnswerService.list(
new LambdaQueryWrapper<QuestionAnswer>(). new LambdaQueryWrapper<QuestionAnswer>().

View File

@ -119,6 +119,7 @@ public class QuestionController extends JeecgController<Question, IQuestionServi
@Operation(summary="题目-通过id删除") @Operation(summary="题目-通过id删除")
@RequiresPermissions("gen.question:question:delete") @RequiresPermissions("gen.question:question:delete")
@DeleteMapping(value = "/delete") @DeleteMapping(value = "/delete")
@Transactional
public Result<String> delete(@RequestParam(name="id",required=true) String id) { public Result<String> delete(@RequestParam(name="id",required=true) String id) {
Question question = questionService.getById(id); Question question = questionService.getById(id);
questionService.removeById(id); questionService.removeById(id);