Merge branch 'dev' of http://110.42.96.65:19890/GoCo/OL-LearnPlatform-Backend into dev
merge
This commit is contained in:
commit
c48769872d
@ -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>().
|
||||||
|
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user