diff --git a/src/main/java/com/peanut/modules/common/controller/ClassController.java b/src/main/java/com/peanut/modules/common/controller/ClassController.java index 4ebc9cc3..be9f3ea2 100644 --- a/src/main/java/com/peanut/modules/common/controller/ClassController.java +++ b/src/main/java/com/peanut/modules/common/controller/ClassController.java @@ -179,6 +179,12 @@ public class ClassController { return R.ok().put("result",classEntityService.getClassInfo(params)); } + //同一小班未开班小班 + @RequestMapping("/getNoOpenClassSameClass") + public R getNoOpenClassSameClass(@RequestBody Map params){ + return R.ok().put("result",classEntityService.getNoOpenClassSameClass(params)); + } + //查询未加入小班 @RequestMapping("/getClassNoUser") public R getClassNoUser(){ 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 b2e03539..08bb0e3b 100644 --- a/src/main/java/com/peanut/modules/common/controller/ClassExamController.java +++ b/src/main/java/com/peanut/modules/common/controller/ClassExamController.java @@ -50,7 +50,7 @@ public class ClassExamController { while (it.hasNext()) { Map.Entry entry = it.next(); String pos = entry.getKey(); - String rowNo = pos.substring(1); + String rowNo = pos.replaceAll("[a-zA-Z]", ""); count = Integer.parseInt(rowNo); // System.out.println(pos + ";" + entry.getValue()); } diff --git a/src/main/java/com/peanut/modules/common/service/ClassEntityService.java b/src/main/java/com/peanut/modules/common/service/ClassEntityService.java index 84a37ccc..44f41baf 100644 --- a/src/main/java/com/peanut/modules/common/service/ClassEntityService.java +++ b/src/main/java/com/peanut/modules/common/service/ClassEntityService.java @@ -41,6 +41,8 @@ public interface ClassEntityService extends IService { List getClassNoUser(); + ClassEntity getNoOpenClassSameClass(Map params); + List getClassByCourseIdNoUser(Map params); ClassEntity getClassByUser(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 5bca267e..cf4e39fb 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 @@ -302,11 +302,9 @@ public class ClassEntityServiceImpl extends ServiceImpl() + .eq(ClassExamUser::getClassId,classEntity.getId()) + .eq(ClassExamUser::getScoreSuccess,0)); + if (classExamUsers>0){ + return R.error("有学员正在考试,请稍后再试"); + } + int replys = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper() + .eq(ClassTaskAndQuesReply::getClassId,classEntity.getId()) + .eq(ClassTaskAndQuesReply::getScoreSuccess,0)); + if (replys>0){ + return R.error("学员打分未完成,请完成打分后结班"); + } classEntity.setState("2"); classEntity.setEndTime(new Date()); this.getBaseMapper().updateById(classEntity); @@ -577,6 +588,14 @@ public class ClassEntityServiceImpl extends ServiceImpl params) { + ClassEntity classEntity = this.baseMapper.selectOne(new LambdaQueryWrapper() + .eq(ClassEntity::getModelId,params.get("modelId")) + .eq(ClassEntity::getState,"0")); + return classEntity; + } + @Override public List getClassByCourseIdNoUser(Map params) { MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); @@ -1009,11 +1028,7 @@ public class ClassEntityServiceImpl extends ServiceImpl questionReplys = classTaskAndQuesReplyDao.selectList(questionWrapper); if (questionReplys.size() > 0) { @@ -1032,7 +1047,7 @@ public class ClassEntityServiceImpl extends ServiceImpl task0Replys = classTaskAndQuesReplyDao.selectList(task0wrapper); if (task0Replys.size() > 0) { for (ClassTaskAndQuesReply reply : task0Replys) { @@ -1050,7 +1065,7 @@ public class ClassEntityServiceImpl extends ServiceImpl task1Replys = classTaskAndQuesReplyDao.selectList(task1wrapper); if (task1Replys.size() > 0) { for (ClassTaskAndQuesReply reply : task1Replys) { @@ -1064,7 +1079,7 @@ public class ClassEntityServiceImpl extends ServiceImpl experiencewrapper = new MPJLambdaWrapper<>(); - experiencewrapper.eq(ClassTask::getUserId,ShiroUtils.getUId()); + experiencewrapper.eq(ClassTask::getUserId,params.get("userId")); experiencewrapper.eq(ClassTask::getClassId,classEntity.getId()); experiencewrapper.eq(ClassTask::getType,"2"); List experiences = classTaskDao.selectList(experiencewrapper); @@ -1077,108 +1092,117 @@ public class ClassEntityServiceImpl extends ServiceImpl> classExamUsers = classExamUserDao.selectMaps(new MPJLambdaWrapper() + .eq(ClassExamUser::getUserId,params.get("userId").toString()) + .eq(ClassExamUser::getClassId,classEntity.getId()) + .eq(ClassExamUser::getScoreSuccess,1) + .selectAs(ClassExamUser::getId,"id") + .selectAs(ClassExamUser::getScore,"score") + .orderByAsc(ClassExamUser::getStartTime)); + int examScore = 0; + 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 usualScore = new BigDecimal(0); + BigDecimal userScore = new BigDecimal(0); + double staticScore = 2.5; + if(classModel.getIsExam()==1){ + BigDecimal examScore = new BigDecimal(map.get("examScore").toString()); + map.put("examScore",examScore); + userScore = userScore.add(examScore); + } + if(classModel.getIsQuestion()==1){ + BigDecimal questionScore = new BigDecimal(map.get("questionScore").toString()); + if (questionScore.compareTo(new BigDecimal(0))!=0){ + MPJLambdaWrapper wrapper = new MPJLambdaWrapper(); + wrapper.leftJoin(ClassCourse.class,ClassCourse::getCourseId,CourseCatalogueChapterEntity::getCourseId); + wrapper.leftJoin(ClassModel.class,ClassModel::getId,ClassCourse::getModelId); + wrapper.eq(ClassModel::getId,classModel.getId()); + wrapper.ne(CourseCatalogueChapterEntity::getQuestions,""); + int count = courseCatalogueChapterDao.selectCount(wrapper); + BigDecimal totalScore = new BigDecimal(staticScore*count); + questionScore = questionScore.divide(totalScore); + questionScore = questionScore.multiply(new BigDecimal(classModel.getQuestionScore())); + questionScore = questionScore.setScale(2,RoundingMode.HALF_UP); + map.put("questionScore",questionScore); + usualScore = usualScore.add(questionScore); + userScore = userScore.add(questionScore); + } + } + if(classModel.getIsTask()==1){ + BigDecimal task0Score = new BigDecimal(map.get("task0Score").toString()); + if (task0Score.compareTo(new BigDecimal(0))!=0){ + MPJLambdaWrapper wrapper = new MPJLambdaWrapper(); + wrapper.eq(ClassTask::getClassId,classEntity.getId()); + wrapper.eq(ClassTask::getType,"0"); + int count = classTaskDao.selectCount(wrapper); + BigDecimal totalScore = new BigDecimal(staticScore*count); + task0Score = task0Score.divide(totalScore); + task0Score = task0Score.multiply(new BigDecimal(classModel.getTaskScore())); + task0Score = task0Score.setScale(2,RoundingMode.HALF_UP); + map.put("task0Score",task0Score); + usualScore = usualScore.add(task0Score); + userScore = userScore.add(task0Score); + } + } + if(classModel.getIsMedicalcase()==1){ + BigDecimal task1Score = new BigDecimal(map.get("task1Score").toString()); + if (task1Score.compareTo(new BigDecimal(0))!=0){ + MPJLambdaWrapper wrapper = new MPJLambdaWrapper(); + wrapper.eq(ClassTask::getClassId,classEntity.getId()); + wrapper.eq(ClassTask::getType,"1"); + int count = classTaskDao.selectCount(wrapper); + BigDecimal totalScore = new BigDecimal(staticScore*count); + task1Score = task1Score.divide(totalScore); + task1Score = task1Score.multiply(new BigDecimal(classModel.getMedicalcaseScore())); + task1Score = task1Score.setScale(2,RoundingMode.HALF_UP); + map.put("task1Score",task1Score); + usualScore = usualScore.add(task1Score); + userScore = userScore.add(task1Score); + } + } + if(classModel.getIsExperience()==1){ + BigDecimal experienceScore = new BigDecimal(map.get("experienceScore").toString()); + if (experienceScore.compareTo(new BigDecimal(classModel.getExperienceScore()))>-1){ + experienceScore = new BigDecimal(classModel.getExperienceScore()); + } + map.put("experienceScore",experienceScore); + usualScore = usualScore.add(experienceScore); + userScore = userScore.add(experienceScore); + } + map.put("usualScore",usualScore); + map.put("userScore",userScore); + return map; } @Override public List userScoreList(Map params) { ClassEntity classEntity = this.getBaseMapper().selectById(params.get("classId").toString()); - ClassModel classModel = classModelDao.selectById(classEntity.getModelId()); List classUsers = classUserDao.selectList(new LambdaQueryWrapper() .eq(ClassUser::getClassId,classEntity.getId()).eq(ClassUser::getRole,"0")); List> resultList = new ArrayList<>(); if (classUsers.size() > 0){ for (ClassUser classUser:classUsers){ params.put("userId",classUser.getUserId()); - Map map = getUserScore(params); + Map map = getUserScore(params); map.put("user",myUserDao.selectById(classUser.getUserId())); - if (classModel.getIsExam()==1){ - List> classExamUsers = classExamUserDao.selectMaps(new MPJLambdaWrapper() - .eq(ClassExamUser::getUserId,classUser.getUserId()) - .eq(ClassExamUser::getClassId,classEntity.getId()) - .eq(ClassExamUser::getScoreSuccess,1) - .selectAs(ClassExamUser::getId,"id") - .selectAs(ClassExamUser::getScore,"score") - .orderByAsc(ClassExamUser::getStartTime)); - int examScore = 0; - 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()); - map.put("examScore",examScore); - userScore = userScore.add(examScore); - } - if(classModel.getIsQuestion()==1){ - BigDecimal questionScore = new BigDecimal(map.get("questionScore").toString()); - MPJLambdaWrapper wrapper = new MPJLambdaWrapper(); - wrapper.leftJoin(ClassCourse.class,ClassCourse::getCourseId,CourseCatalogueChapterEntity::getCourseId); - wrapper.leftJoin(ClassModel.class,ClassModel::getId,ClassCourse::getModelId); - wrapper.eq(ClassModel::getId,classModel.getId()); - wrapper.ne(CourseCatalogueChapterEntity::getQuestions,""); - int count = courseCatalogueChapterDao.selectCount(wrapper); - BigDecimal totalScore = new BigDecimal(staticScore*count); - questionScore = questionScore.divide(totalScore); - questionScore = questionScore.multiply(new BigDecimal(classModel.getQuestionScore())); - questionScore = questionScore.setScale(2,RoundingMode.HALF_UP); - map.put("questionScore",questionScore); - userScore = userScore.add(questionScore); - } - if(classModel.getIsTask()==1){ - BigDecimal task0Score = new BigDecimal(map.get("task0Score").toString()); - MPJLambdaWrapper wrapper = new MPJLambdaWrapper(); - wrapper.eq(ClassTask::getClassId,classEntity.getId()); - wrapper.eq(ClassTask::getType,"0"); - int count = classTaskDao.selectCount(wrapper); - BigDecimal totalScore = new BigDecimal(staticScore*count); - task0Score = task0Score.divide(totalScore); - task0Score = task0Score.multiply(new BigDecimal(classModel.getTaskScore())); - task0Score = task0Score.setScale(2,RoundingMode.HALF_UP); - map.put("task0Score",task0Score); - userScore = userScore.add(task0Score); - } - if(classModel.getIsMedicalcase()==1){ - BigDecimal task1Score = new BigDecimal(map.get("task1Score").toString()); - MPJLambdaWrapper wrapper = new MPJLambdaWrapper(); - wrapper.eq(ClassTask::getClassId,classEntity.getId()); - wrapper.eq(ClassTask::getType,"1"); - int count = classTaskDao.selectCount(wrapper); - BigDecimal totalScore = new BigDecimal(staticScore*count); - task1Score = task1Score.divide(totalScore); - task1Score = task1Score.multiply(new BigDecimal(classModel.getMedicalcaseScore())); - task1Score = task1Score.setScale(2,RoundingMode.HALF_UP); - map.put("task1Score",task1Score); - userScore = userScore.add(task1Score); - } - if(classModel.getIsExperience()==1){ - BigDecimal experienceScore = new BigDecimal(map.get("experienceScore").toString()); - if (experienceScore.compareTo(new BigDecimal(classModel.getExperienceScore()))>-1){ - experienceScore = new BigDecimal(classModel.getExperienceScore()); - } - map.put("experienceScore",experienceScore); - userScore = userScore.add(experienceScore); - } - map.put("userScore",userScore); resultList.add(map); } Collections.sort(resultList, new Comparator>() { @Override public int compare(Map m1, Map m2) { - if((double)(m2.get("userScore")) > (double)(m1.get("userScore"))){ - return 1; - }else { - return -1; - } + return ((BigDecimal)m2.get("userScore")).compareTo((BigDecimal)m1.get("userScore")); } }); } diff --git a/src/main/java/com/peanut/modules/common/service/impl/ClassExamServiceImpl.java b/src/main/java/com/peanut/modules/common/service/impl/ClassExamServiceImpl.java index 99965924..898b5cb8 100644 --- a/src/main/java/com/peanut/modules/common/service/impl/ClassExamServiceImpl.java +++ b/src/main/java/com/peanut/modules/common/service/impl/ClassExamServiceImpl.java @@ -157,10 +157,10 @@ public class ClassExamServiceImpl extends ServiceImpl i List> sList = new ArrayList<>(); List> mList = new ArrayList<>(); if (courseList.size() > 0) { -// int stotal = 60;//单选题总数 -// int mtotal = 40;//多选题总数 - int stotal = 5;//单选题总数 - int mtotal = 5;//多选题总数 + int stotal = 60;//单选题总数 + int mtotal = 40;//多选题总数 +// int stotal = 5;//单选题总数 +// int mtotal = 5;//多选题总数 int snum = (int)Math.floor(stotal/courseList.size()); int mnum = (int)Math.floor(mtotal/courseList.size()); for (ClassCourse classCourse:courseList){ @@ -229,7 +229,7 @@ public class ClassExamServiceImpl extends ServiceImpl i DelayQueueConfig.COMMON_EXCHANGE, DelayQueueConfig.COMMON_ROUTING_KEY, "examSubmit"+","+classExamUser.getId(), - messagePostProcessor(60*60*1000+10000)//10秒延迟 + messagePostProcessor(2*60*60*1000+3000)//3秒延迟 ); return R.ok().put("examPaper",resultList).put("id",classExamUser.getId()).put("startTime",classExamUser.getStartTime()); diff --git a/src/main/java/com/peanut/modules/pay/alipay/service/impl/AliPayServiceImpl.java b/src/main/java/com/peanut/modules/pay/alipay/service/impl/AliPayServiceImpl.java index 7ddc1e15..caa40407 100644 --- a/src/main/java/com/peanut/modules/pay/alipay/service/impl/AliPayServiceImpl.java +++ b/src/main/java/com/peanut/modules/pay/alipay/service/impl/AliPayServiceImpl.java @@ -315,11 +315,11 @@ public class AliPayServiceImpl implements AliPayService { } return "success"; } - log.info(">>>>>>>>>>验签失败"); + log.error(">>>>>>>>>>验签失败 params = {}", params.toString()); return "fail"; } catch (Exception e) { - log.info(">>>>>>>>>>订单回调异常: 订单号 = {}, msg = {}", params.get("out_trade_no"), e.getMessage()); + log.error(">>>>>>>>>>订单回调异常: 订单号 = {}, msg = {}", params.toString(), e.getMessage()); return "fail"; } }