From fa03645ac9adbf6474c81e6f7e12e9772da66406 Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Fri, 6 Sep 2024 17:14:25 +0800 Subject: [PATCH] =?UTF-8?q?=E8=80=83=E8=AF=95=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ClassExamController.java | 8 ++++ .../common/service/ClassExamService.java | 4 ++ .../service/impl/ClassEntityServiceImpl.java | 42 ++++++++++--------- .../service/impl/ClassExamServiceImpl.java | 14 ++++++- 4 files changed, 48 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/peanut/modules/common/controller/ClassExamController.java b/src/main/java/com/peanut/modules/common/controller/ClassExamController.java index 14b74eec..b2e03539 100644 --- a/src/main/java/com/peanut/modules/common/controller/ClassExamController.java +++ b/src/main/java/com/peanut/modules/common/controller/ClassExamController.java @@ -5,6 +5,7 @@ import com.peanut.common.excel.ExcelUtil; import com.peanut.common.utils.R; import com.peanut.modules.common.entity.ClassExamOption; import com.peanut.modules.common.entity.ClassExamSubject; +import com.peanut.modules.common.entity.ClassExamUser; import com.peanut.modules.common.service.ClassExamOptionService; import com.peanut.modules.common.service.ClassExamService; import com.peanut.modules.common.service.ClassExamSubjectService; @@ -172,6 +173,13 @@ public class ClassExamController { return classExamService.generateExamPaper(params); } + //考试中的试卷 + @RequestMapping("/examingPaper") + public R examingPaper(){ + ClassExamUser classExamUser = classExamService.examingPaper(); + return R.ok().put("classExamUser",classExamUser); + } + //提交选项 @RequestMapping("/submitOption") public R submitOption(@RequestBody Map params){ diff --git a/src/main/java/com/peanut/modules/common/service/ClassExamService.java b/src/main/java/com/peanut/modules/common/service/ClassExamService.java index 5260bd60..6c8e8a02 100644 --- a/src/main/java/com/peanut/modules/common/service/ClassExamService.java +++ b/src/main/java/com/peanut/modules/common/service/ClassExamService.java @@ -6,6 +6,8 @@ import com.peanut.common.utils.R; import com.peanut.modules.common.entity.ClassExam; import com.peanut.modules.common.entity.ClassExamOption; import com.peanut.modules.common.entity.ClassExamSubject; +import com.peanut.modules.common.entity.ClassExamUser; + import java.util.Map; public interface ClassExamService extends IService { @@ -30,6 +32,8 @@ public interface ClassExamService extends IService { R generateExamPaper(Map params); + ClassExamUser examingPaper(); + void submitOption(Map params); Object submitExamPaper(Map params); diff --git a/src/main/java/com/peanut/modules/common/service/impl/ClassEntityServiceImpl.java b/src/main/java/com/peanut/modules/common/service/impl/ClassEntityServiceImpl.java index e4ee3e0f..5bca267e 100644 --- a/src/main/java/com/peanut/modules/common/service/impl/ClassEntityServiceImpl.java +++ b/src/main/java/com/peanut/modules/common/service/impl/ClassEntityServiceImpl.java @@ -1093,27 +1093,31 @@ public class ClassEntityServiceImpl extends ServiceImpl map = getUserScore(params); map.put("user",myUserDao.selectById(classUser.getUserId())); if (classModel.getIsExam()==1){ - List classExamUsers = classExamUserDao.selectList(new LambdaQueryWrapper() + List> classExamUsers = classExamUserDao.selectMaps(new MPJLambdaWrapper() .eq(ClassExamUser::getUserId,classUser.getUserId()) - .eq(ClassExamUser::getClassId,classEntity.getId())); + .eq(ClassExamUser::getClassId,classEntity.getId()) + .eq(ClassExamUser::getScoreSuccess,1) + .selectAs(ClassExamUser::getId,"id") + .selectAs(ClassExamUser::getScore,"score") + .orderByAsc(ClassExamUser::getStartTime)); int examScore = 0; - for (ClassExamUser classExamUser:classExamUsers){ - if (classExamUser.getScore()>examScore){ - examScore = classExamUser.getScore(); + if (classExamUsers.size() > 0){ + for (Map classExamUser:classExamUsers){ + if ((int)classExamUser.get("score")>examScore){ + examScore = (int)classExamUser.get("score"); + } } } map.put("examScore",examScore); + map.put("classExamUsers",classExamUsers); } //处理分数占比 BigDecimal userScore = new BigDecimal(0);; double staticScore = 2.5; if(classModel.getIsExam()==1){ BigDecimal examScore = new BigDecimal(map.get("examScore").toString()); - examScore.divide(new BigDecimal(100)); - examScore.multiply(new BigDecimal(classModel.getQuestionScore())); - examScore = examScore.setScale(2,RoundingMode.HALF_UP); map.put("examScore",examScore); - userScore.add(examScore); + userScore = userScore.add(examScore); } if(classModel.getIsQuestion()==1){ BigDecimal questionScore = new BigDecimal(map.get("questionScore").toString()); @@ -1124,11 +1128,11 @@ public class ClassEntityServiceImpl extends ServiceImpl i @Override public R generateExamPaper(Map params) { + List list = classExamUserDao.selectList(new LambdaQueryWrapper() + .eq(ClassExamUser::getUserId,ShiroUtils.getUId()).eq(ClassExamUser::getScoreSuccess,0)); + if (list.size() > 0){ + return R.error("存在正在考试,请结束再试"); + } ClassEntity classEntity = classEntityDao.selectById(params.get("classId").toString()); MPJLambdaWrapper courseWrapper = new MPJLambdaWrapper<>(); courseWrapper.leftJoin(ClassModel.class,ClassModel::getId,ClassCourse::getModelId); @@ -224,12 +229,19 @@ public class ClassExamServiceImpl extends ServiceImpl i DelayQueueConfig.COMMON_EXCHANGE, DelayQueueConfig.COMMON_ROUTING_KEY, "examSubmit"+","+classExamUser.getId(), - messagePostProcessor(60*60*1000) + messagePostProcessor(60*60*1000+10000)//10秒延迟 ); return R.ok().put("examPaper",resultList).put("id",classExamUser.getId()).put("startTime",classExamUser.getStartTime()); } + @Override + public ClassExamUser examingPaper() { + ClassExamUser classExamUser = classExamUserDao.selectOne(new LambdaQueryWrapper() + .eq(ClassExamUser::getUserId,ShiroUtils.getUId()).eq(ClassExamUser::getScoreSuccess,0)); + return classExamUser; + } + @Override public void submitOption(Map params) { ClassExamUser classExamUser = classExamUserDao.selectById(params.get("id").toString());