修改新增课程限制,新增试题页面 课程下拉框接口,根据数量和课程ID获取题目IDs接口

master
xiaoCJ 6 months ago
parent fca419f2c1
commit fecbb778ac

@ -3,6 +3,7 @@ package com.tz.platform.pc;
import com.tz.platform.common.core.base.BaseController; import com.tz.platform.common.core.base.BaseController;
import com.tz.platform.common.core.base.Result; import com.tz.platform.common.core.base.Result;
import com.tz.platform.common.core.enmus.QuestionTypeEnum; import com.tz.platform.common.core.enmus.QuestionTypeEnum;
import com.tz.platform.entity.Question;
import com.tz.platform.exam.pc.dto.QuestionContDTO; import com.tz.platform.exam.pc.dto.QuestionContDTO;
import com.tz.platform.pc.biz.PCQuestionBiz; import com.tz.platform.pc.biz.PCQuestionBiz;
import com.tz.platform.pc.dto.ListQuestionDTO; import com.tz.platform.pc.dto.ListQuestionDTO;
@ -13,6 +14,11 @@ import com.tz.platform.repository.QuestionDao;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@RestController @RestController
@RequestMapping(value = "/pc/question") @RequestMapping(value = "/pc/question")
public class PCQuestionController extends BaseController { public class PCQuestionController extends BaseController {
@ -21,6 +27,7 @@ public class PCQuestionController extends BaseController {
private PCQuestionBiz questionBiz; private PCQuestionBiz questionBiz;
@Autowired @Autowired
private QuestionDao questionDao; private QuestionDao questionDao;
@PostMapping(value = "list") @PostMapping(value = "list")
public Result<PageQuestionDTO> list(@RequestBody PageQuestionVO questionVO) { public Result<PageQuestionDTO> list(@RequestBody PageQuestionVO questionVO) {
return questionBiz.list(questionVO); return questionBiz.list(questionVO);
@ -75,11 +82,66 @@ public class PCQuestionController extends BaseController {
return Result.success(dto); return Result.success(dto);
} }
//todo 随机抽取逻辑 @GetMapping(value = "getCourseList")
//1、展示所有课程信息供选择使用。已有 使用下拉框 public List<CourseDTO> getCourseList() {
return questionDao.getCourseList();
}
//2、根据选择的一个或多个课程ID查出总共的题型数量 改造完成 getCount @PostMapping(value = "getIdsByCount")
public List<Long> getIdsByCount(@RequestBody GetIdsVo vo) {
List<Long> ids = new ArrayList<>();
List<Long> courseIds = vo.getCourseIds();
int judgeCount = vo.getJudgeCount();
int singleCount = vo.getSingleCount();
int gapFillingCount = vo.getGapFillingCount();
int multyCount = vo.getMultyCount();
//3、根据用户设置的各个题型的数量组成考试这一步应该是前端完成 // 随机抽取题目ID
if (judgeCount > 0) {
List<Question> judgeIds = questionDao.findAllByQuestionTypeAndCourseIdIn(3, courseIds);
List<Long> collect = judgeIds.stream().map(Question::getId).collect(Collectors.toList());
ids.addAll(randomSelect(collect, judgeCount));
}
if (singleCount > 0) {
List<Question> singleIds = questionDao.findAllByQuestionTypeAndCourseIdIn(1, courseIds);
List<Long> collect = singleIds.stream().map(Question::getId).collect(Collectors.toList());
ids.addAll(randomSelect(collect, singleCount));
}
if (gapFillingCount > 0) {
List<Question> gapFillingIds = questionDao.findAllByQuestionTypeAndCourseIdIn(4, courseIds);
List<Long> collect = gapFillingIds.stream().map(Question::getId).collect(Collectors.toList());
ids.addAll(randomSelect(collect, gapFillingCount));
}
if (multyCount > 0) {
List<Question> multyIds= questionDao.findAllByQuestionTypeAndCourseIdIn(2, courseIds);
List<Long> collect = multyIds.stream().map(Question::getId).collect(Collectors.toList());
ids.addAll(randomSelect(collect, multyCount));
}
return ids;
}
/**
* IDID
*
* @param ids ID
* @param count
* @return ID
*/
private List<Long> randomSelect(List<Long> ids, int count) {
if (count > ids.size()) {
throw new IllegalArgumentException("请求的题目数量超过可用题目数量");
}
Collections.shuffle(ids);
return ids.subList(0, count);
}
} }
//todo 随机抽取逻辑
//1、展示所有课程信息供选择使用。已有 使用下拉框
//2、根据选择的一个或多个课程ID查出总共的题型数量 改造完成 getCount
//3、根据用户设置的各个题型的数量组成考试这一步应该是前端完成

@ -63,9 +63,9 @@ public class PCCourseBiz {
if(StringUtils.isEmpty(courseVO.getName())){ if(StringUtils.isEmpty(courseVO.getName())){
return Result.error("课程名不能为空"); return Result.error("课程名不能为空");
} }
if(StringUtils.isEmpty(courseVO.getContent())){ // if(StringUtils.isEmpty(courseVO.getContent())){
return Result.error("简介不能为空"); // return Result.error("简介不能为空");
} // }
if(courseVO.getUserNo()<=0){ if(courseVO.getUserNo()<=0){
return Result.error("没有权限"); return Result.error("没有权限");
} }

@ -0,0 +1,13 @@
package com.tz.platform.pc.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CourseDTO {
private String courseName;
private Long courseId;
}

@ -0,0 +1,13 @@
package com.tz.platform.pc.vo;
import lombok.Data;
import java.util.List;
/**
* @Author xcj
* @Date 2024/9/11
*/
@Data
public class CourseList {
}

@ -0,0 +1,18 @@
package com.tz.platform.pc.vo;
import lombok.Data;
import java.util.List;
/**
* @Author xcj
* @Date 2024/9/11
*/
@Data
public class GetIdsVo {
private List<Long> courseIds;
private int singleCount;
private int multyCount;
private int judgeCount;
private int gapFillingCount;
}

@ -1,6 +1,7 @@
package com.tz.platform.repository; package com.tz.platform.repository;
import com.tz.platform.entity.Question; import com.tz.platform.entity.Question;
import com.tz.platform.pc.vo.CourseDTO;
import org.springframework.data.domain.Example; import org.springframework.data.domain.Example;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
@ -12,6 +13,7 @@ import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
import java.util.Map;
@Repository @Repository
@ -36,6 +38,11 @@ public interface QuestionDao extends JpaRepository<Question, Long> {
int countByQuestionTypeAndTypeAndCourseIdIn(Integer qtype, Integer type, List<Long> courseId); int countByQuestionTypeAndTypeAndCourseIdIn(Integer qtype, Integer type, List<Long> courseId);
@Query("SELECT DISTINCT new com.tz.platform.pc.vo.CourseDTO(q.courseName,q.courseId) FROM Question q WHERE q.type = 0")
List<CourseDTO> getCourseList();
List<Question> findAllByQuestionTypeAndCourseIdIn(Integer questionType, List<Long> courseId);
int countByQuestionTypeAndType(Integer qtype, Integer type); int countByQuestionTypeAndType(Integer qtype, Integer type);
Question getByStem(String stem); Question getByStem(String stem);

Loading…
Cancel
Save