修复学生签到验证接口及业务异常处理

dev
zhangyue 2026-02-02 11:31:51 +08:00
parent d827f191e6
commit e2ea71e939
7 changed files with 22 additions and 18 deletions

View File

@ -38,7 +38,7 @@ public class AppStudentSignController {
return studentSignService.add(cmd);
}
@ApiOperation("验证是否可签到")
@GetMapping("/verify")
@PostMapping("/verify")
public SingleResponse<StudentCO> verify(@RequestBody StudentSignVerifyQry qry) {
return studentSignService.verify(qry);
}

View File

@ -2,6 +2,7 @@ package com.zcloud.edu.command.query.resource;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.exception.BizException;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.edu.command.convertor.resource.ExamPaperCoConvertor;
import com.zcloud.edu.command.convertor.resource.QuestionCoConvertor;
@ -84,7 +85,7 @@ public class ExamPaperQueryExe {
public ExamPaperCO getInfoById(Long id) {
ExamPaperDO examPaperDO =examPaperRepository.getInfoById(id);
if(examPaperDO==null){
throw new RuntimeException("试卷不存在");
throw new BizException("试卷不存在");
}
ExamPaperCO examPaperCO =new ExamPaperCO();
BeanUtil.copyProperties(examPaperDO,examPaperCO);

View File

@ -4,6 +4,7 @@ import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.command.convertor.study.StudentSignCoConvertor;
import com.zcloud.edu.domain.model.study.ClassE;
import com.zcloud.edu.dto.clientobject.study.StudentCO;
@ -74,10 +75,10 @@ public class StudentSignQueryExe {
classE.isBegin();
StudentDO studentDO = studentRepository.findByClassIdAndPhone(classDO.getClassId(), qry.getPhone());
if (studentDO == null){
throw new RuntimeException("您不在此班级中");
throw new BizException("您不在此班级中");
}
if(studentDO.getState() == 1){
throw new RuntimeException("您已经完成此班级的学习");
throw new BizException("您已经完成此班级的学习");
}
Map<String, Object> params = new HashMap<>();
params.put("studentId", studentDO.getStudentId());
@ -85,12 +86,12 @@ public class StudentSignQueryExe {
if (qry.getType() == 1){
List<StudentSignDO> list = studentSignRepository.listAllByStudentId(params);
if (list != null && list.size() > 0){
throw new RuntimeException("您已签到");
throw new BizException("您已签到");
}
} else if (qry.getType() == 2){
List<StudentExamRecordDO> list = studentExamRecordRepository.listAllByStudentId(studentDO.getStudentId());
if (list != null && list.size() == classDO.getNumberofexams()){
throw new RuntimeException("您已经没有考试次数");
throw new BizException("您已经没有考试次数");
}
}
StudentCO studentCO = new StudentCO();

View File

@ -38,7 +38,7 @@ public class ExamPaperRemoveExe {
public boolean execute(Long id) {
ExamPaperDO examPaperDO = examPaperRepository.getById(id);
if(examPaperDO==null){
throw new RuntimeException("试卷不存在");
throw new BizException("试卷不存在");
}
//企业端禁用:所属单位为股份的不能禁用
//股份端禁用:所属单位为各企业的不能禁用
@ -70,7 +70,7 @@ public class ExamPaperRemoveExe {
List<ExamPaperDO> examPaperDOList =examPaperRepository.getListByIdList(examPaperRemoveCmd.getIds());
if(CollUtil.isEmpty(examPaperDOList)){
throw new RuntimeException("试卷不存在");
throw new BizException("试卷不存在");
}
//获取试卷idlist
List<String> examPaperIdList = examPaperDOList.stream().map(ExamPaperDO::getExamPaperId).collect(Collectors.toList());

View File

@ -42,7 +42,7 @@ public class StudentSignAddExe {
StudentDO student = studentRepository.findFaceUrlByPhone(stu.getPhone());
if (student == null || ObjectUtils.isEmpty(student.getUserAvatarUrl())) {
throw new RuntimeException("您还没有录入人脸");
throw new BizException("您还没有录入人脸");
}
String faceUrl = null;
try {

View File

@ -64,35 +64,35 @@ public class QuestionE extends BaseE {
if (CoursewareTypeEnum.VIDEO_COURSEWARE.getCode().equals(questionE.getCoursewareType())) {
// 视频课件
if (questionE.getVideoCoursewareId() == null) {
throw new RuntimeException("请选择正确的视频课件");
throw new BizException("请选择正确的视频课件");
}
} else if (CoursewareTypeEnum.EXAM_QUESTION.getCode().equals(questionE.getCoursewareType())) {
// 试卷习题
if (questionE.getExamPaperId() == null) {
throw new RuntimeException("请选择正确的试卷");
throw new BizException("请选择正确的试卷");
}
if (questionE.getScore()==null) {
throw new RuntimeException("请填写正确的分值");
throw new BizException("请填写正确的分值");
}
} else {
throw new RuntimeException("请选择正确的课件类型");
throw new BizException("请选择正确的课件类型");
}
if (QuestionTypeEnum.CHOICE.getCode().equals(questionE.getQuestionType())) {
// 单选题
if (questionE.getOptionA() == null || questionE.getOptionB() == null || questionE.getOptionC() == null || questionE.getOptionD() == null) {
throw new RuntimeException("单选题选项不能为空");
throw new BizException("单选题选项不能为空");
}
} else if (QuestionTypeEnum.MULTIPLE.getCode().equals(questionE.getQuestionType())) {
// 多选题
if (questionE.getOptionA() == null || questionE.getOptionB() == null || questionE.getOptionC() == null || questionE.getOptionD() == null) {
throw new RuntimeException("多选题选项不能为空");
throw new BizException("多选题选项不能为空");
}
} else if (QuestionTypeEnum.JUDGE.getCode().equals(questionE.getQuestionType())) {
// 判断题
if (questionE.getOptionA() == null || questionE.getOptionB() == null) {
throw new RuntimeException("判断题选项不能为空");
throw new BizException("判断题选项不能为空");
}
}
}

View File

@ -1,5 +1,6 @@
package com.zcloud.edu.domain.model.study;
import com.alibaba.cola.exception.BizException;
import com.jjb.saas.framework.domain.model.BaseE;
import com.zcloud.gbscommon.utils.DateUtil;
import com.zcloud.gbscommon.utils.Tools;
@ -7,6 +8,7 @@ import lombok.Data;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.zip.ZipException;
/**
* web-domain
@ -106,9 +108,9 @@ public class ClassE extends BaseE {
*/
public void isBegin(){
if(DateUtil.isBeforeThan(this.startTime)){
throw new RuntimeException("班级未开班");
throw new BizException("班级未开班");
} else if(DateUtil.isAfter(this.endTime)){
throw new RuntimeException("班级已结束");
throw new BizException("班级已结束");
}
}