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 c386a779..90d40f50 100644 --- a/src/main/java/com/peanut/modules/common/controller/ClassController.java +++ b/src/main/java/com/peanut/modules/common/controller/ClassController.java @@ -157,10 +157,10 @@ public class ClassController { return classEntityService.addClass(classEntity); } - //修改班级状态 - @RequestMapping("/updateClassState") - public R updateClassState(@RequestBody Map params){ - return classEntityService.updateClassState(params); + //开班 + @RequestMapping("/openClass") + public R openClass(@RequestBody Map params){ + return classEntityService.openClass(params); } //修改班级 @@ -389,68 +389,62 @@ public class ClassController { return R.ok().put("result",classEntityService.userScoreList(params)); } - //获取小班证书 - @RequestMapping("/getUserCertificateByClassId") - public R getUserCertificateByClassId(@RequestBody Map params) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - if (StringUtils.isNotBlank(params.get("classId").toString())){ - wrapper.eq(UserCertificate::getClassId,params.get("classId")); - } - wrapper.eq(UserCertificate::getUserId,params.get("userId")); - List userCertificate = userCertificateService.list(wrapper); - return R.ok().put("userCertificate",userCertificate); - } - - //结班后发放证书 - @RequestMapping("/generateCertificateByClassEnd") + //结班 + @RequestMapping("/closeClass") @Transactional - public R generateCertificateByClassEnd(@RequestBody Map params){ - ClassEntity classEntity = classEntityService.getById(params.get("classId").toString()); - //给合格学员发放证书 - List> userScoreList = classEntityService.userScoreList(params); - for (Map userScoreMap : userScoreList) { - if (new BigDecimal(userScoreMap.get("userScore").toString()).compareTo(new BigDecimal(60))>=0){ - UserCertificate userCertificate = new UserCertificate(); - userCertificate.setTitle(classEntity.getTitle()); - String type = "B"; - if (new BigDecimal(userScoreMap.get("userScore").toString()).compareTo(new BigDecimal(70))>=0){ - type = "A"; - } - userCertificate.setType(type); - MyUserEntity user = (MyUserEntity)userScoreMap.get("user"); - userCertificate.setUserId(user.getId()); - userCertificate.setClassId(classEntity.getId()); - //查询小班下得课程信息 - List> classCourseInfoLlist = classEntityService.classCourseInfoClassId(classEntity.getId(),0); - for (Map classCourseInfo:classCourseInfoLlist){ - String certificateNo = classEntityService.getNextCertificateNo(type,classCourseInfo.get("titleAbbr").toString()); - userCertificate.setCertificateNo(certificateNo); - userCertificate.setCourseId((Integer) classCourseInfo.get("courseId")); - if (StringUtils.isNotEmpty(user.getPhoto())&&StringUtils.isNotEmpty(user.getName())){ - String startYear = DateUtil.year(classEntity.getStartTime())+""; - String startMonth = DateUtil.month(classEntity.getStartTime())+1+""; - String startDay = DateUtil.dayOfMonth(classEntity.getStartTime())+""; - String endYear = DateUtil.year(classEntity.getEndTime())+""; - String endMonth = DateUtil.month(classEntity.getEndTime())+1+""; - String endDay = DateUtil.dayOfMonth(classEntity.getEndTime())+""; - double keshiTotal = (double)classCourseInfo.get("keshi"); - String keshi = (keshiTotal+"").replace(".0",""); - String courseTitle = classCourseInfo.get("courseTitle").toString(); - if (courseTitle.contains("【")){ - courseTitle = courseTitle.substring(0,courseTitle.indexOf("【")); - } - String[] des = {startYear,startMonth,startDay,endYear,endMonth,endDay, - classEntity.getTitle(),courseTitle,keshi}; - String[] edes = {classCourseInfo.get("courseETitle").toString(),keshi}; - String url = userCertificateService.generateCertificate(type,certificateNo,user.getPhoto(),user.getName(), - des, edes, endYear,endMonth,endDay); - userCertificate.setCertificateUrl(url); + public R closeClass(@RequestBody Map params){ + //结班限制 + R r = classEntityService.closeClass(params); + //结班后给合格学员发放证书 + if ("0".equals(r.get("code").toString())){ + ClassEntity classEntity = classEntityService.getById(params.get("classId").toString()); + List> userScoreList = classEntityService.userScoreList(params); + for (Map userScoreMap : userScoreList) { + if (new BigDecimal(userScoreMap.get("userScore").toString()).compareTo(new BigDecimal(60))>=0){ + UserCertificate userCertificate = new UserCertificate(); + userCertificate.setTitle(classEntity.getTitle()); + String type = "B"; + if (new BigDecimal(userScoreMap.get("userScore").toString()).compareTo(new BigDecimal(70))>=0){ + type = "A"; + } + userCertificate.setType(type); + MyUserEntity user = (MyUserEntity)userScoreMap.get("user"); + userCertificate.setUserId(user.getId()); + userCertificate.setClassId(classEntity.getId()); + //查询小班下得课程信息 + List> classCourseInfoLlist = classEntityService.classCourseInfoClassId(classEntity.getId(),0); + for (Map classCourseInfo:classCourseInfoLlist){ + String certificateNo = classEntityService.getNextCertificateNo(type,classCourseInfo.get("titleAbbr").toString()); + userCertificate.setCertificateNo(certificateNo); + userCertificate.setCourseId((Integer) classCourseInfo.get("courseId")); + if (StringUtils.isNotEmpty(user.getPhoto())&&StringUtils.isNotEmpty(user.getName())){ + String startYear = DateUtil.year(classEntity.getStartTime())+""; + String startMonth = DateUtil.month(classEntity.getStartTime())+1+""; + String startDay = DateUtil.dayOfMonth(classEntity.getStartTime())+""; + String endYear = DateUtil.year(classEntity.getEndTime())+""; + String endMonth = DateUtil.month(classEntity.getEndTime())+1+""; + String endDay = DateUtil.dayOfMonth(classEntity.getEndTime())+""; + double keshiTotal = (double)classCourseInfo.get("keshi"); + String keshi = (keshiTotal+"").replace(".0",""); + String courseTitle = classCourseInfo.get("courseTitle").toString(); + if (courseTitle.contains("【")){ + courseTitle = courseTitle.substring(0,courseTitle.indexOf("【")); + } + String[] des = {startYear,startMonth,startDay,endYear,endMonth,endDay, + classEntity.getTitle(),courseTitle,keshi}; + String[] edes = {classCourseInfo.get("courseETitle").toString(),keshi}; + String url = userCertificateService.generateCertificate(type,certificateNo,user.getPhoto(),user.getName(), + des, edes, endYear,endMonth,endDay); + userCertificate.setCertificateUrl(url); + } + userCertificateService.save(userCertificate); } - userCertificateService.save(userCertificate); } } + return R.ok(); + }else { + return r; } - return R.ok(); } //生成证书图片 @@ -504,6 +498,18 @@ public class ClassController { return R.ok(); } + //获取小班证书 + @RequestMapping("/getUserCertificateByClassId") + public R getUserCertificateByClassId(@RequestBody Map params) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + if (StringUtils.isNotBlank(params.get("classId").toString())){ + wrapper.eq(UserCertificate::getClassId,params.get("classId")); + } + wrapper.eq(UserCertificate::getUserId,params.get("userId")); + List userCertificate = userCertificateService.list(wrapper); + return R.ok().put("userCertificate",userCertificate); + } + } 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 83c272ed..2ba15a82 100644 --- a/src/main/java/com/peanut/modules/common/service/ClassEntityService.java +++ b/src/main/java/com/peanut/modules/common/service/ClassEntityService.java @@ -25,7 +25,7 @@ public interface ClassEntityService extends IService { R addClass(ClassEntity classEntity); - R updateClassState(Map params); + R openClass(Map params); String getNextCertificateNo(String type,String courseNamePinyin); @@ -99,4 +99,6 @@ public interface ClassEntityService extends IService { List> classCourseInfoClassId(int classId,int courseId); + R closeClass(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 e237c48a..d022cbd3 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 @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.peanut.common.utils.DateUtils; import com.peanut.common.utils.R; import com.peanut.common.utils.ShiroUtils; import com.peanut.config.DelayQueueConfig; @@ -237,113 +238,88 @@ public class ClassEntityServiceImpl extends ServiceImpl params) { - String state = params.get("state").toString(); + public R openClass(Map params) { ClassEntity classEntity = this.getBaseMapper().selectById(params.get("classId").toString()); ClassModel classModel = classModelDao.selectById(classEntity.getModelId()); - if ("1".equals(state)){ - //开班校验 - int monitorCount = classUserDao.selectCount(new LambdaQueryWrapper() - .eq(ClassUser::getClassId,classEntity.getId()).eq(ClassUser::getRole,"1")); - if (monitorCount<1){ - return R.error("请先设置班长"); - } - int dmonitorCount = classUserDao.selectCount(new LambdaQueryWrapper() - .eq(ClassUser::getClassId,classEntity.getId()).eq(ClassUser::getRole,"2")); - if (dmonitorCount<1){ - return R.error("请先设置副班长"); - } - int studyCount = classUserDao.selectCount(new LambdaQueryWrapper() - .eq(ClassUser::getClassId,classEntity.getId()).eq(ClassUser::getRole,"3")); - if (studyCount<1){ - return R.error("请先设置学习委员"); - } - int commentCount = classUserDao.selectCount(new LambdaQueryWrapper() - .eq(ClassUser::getClassId,classEntity.getId()).eq(ClassUser::getRole,"4")); - if (commentCount<3){ - return R.error("请先设置3位评分员"); - } + //开班校验 + int monitorCount = classUserDao.selectCount(new LambdaQueryWrapper() + .eq(ClassUser::getClassId,classEntity.getId()).eq(ClassUser::getRole,"1")); + if (monitorCount<1){ + return R.error("请先设置班长"); + } + int dmonitorCount = classUserDao.selectCount(new LambdaQueryWrapper() + .eq(ClassUser::getClassId,classEntity.getId()).eq(ClassUser::getRole,"2")); + if (dmonitorCount<1){ + return R.error("请先设置副班长"); + } + int studyCount = classUserDao.selectCount(new LambdaQueryWrapper() + .eq(ClassUser::getClassId,classEntity.getId()).eq(ClassUser::getRole,"3")); + if (studyCount<1){ + return R.error("请先设置学习委员"); + } + int commentCount = classUserDao.selectCount(new LambdaQueryWrapper() + .eq(ClassUser::getClassId,classEntity.getId()).eq(ClassUser::getRole,"4")); + if (commentCount<3){ + return R.error("请先设置3位评分员"); + } - if (classModel.getIsTask()==1){ - int taskCount = classTaskDao.selectCount(new LambdaQueryWrapper() - .eq(ClassTask::getClassId,classEntity.getId()).eq(ClassTask::getType,"0")); - if (taskCount<(classModel.getDays()/7.0)){ - return R.error("请至少发布"+Math.ceil(classModel.getDays()/7.0)+"个任务。"); - } + if (classModel.getIsTask()==1){ + int taskCount = classTaskDao.selectCount(new LambdaQueryWrapper() + .eq(ClassTask::getClassId,classEntity.getId()).eq(ClassTask::getType,"0")); + if (taskCount<((classModel.getDays()-classModel.getExamDays())/7.0)){ + return R.error("请发布"+Math.ceil((classModel.getDays()-classModel.getExamDays())/7.0)+"个任务。"); } + } - int studentCount = classUserDao.selectCount(new LambdaQueryWrapper() - .eq(ClassUser::getClassId,classEntity.getId()).eq(ClassUser::getRole,"0")); - if (studentCount() + .eq(ClassUser::getClassId,classEntity.getId()).eq(ClassUser::getRole,"0")); + if (studentCount userList = classUserDao.selectList(new LambdaQueryWrapper() - .eq(ClassUser::getClassId,classEntity.getId()).eq(ClassUser::getRole,"0")); - StringBuffer sb = new StringBuffer(); - if (userList.size() > 0) { - for (ClassUser classUser:userList){ - MyUserEntity user = myUserDao.selectById(classUser.getUserId()); - if ("0".equals(user.getVip())||"3".equals(user.getVip())){ - //不是vip查询每门课是否购买 - boolean flag = false; - List courses = classCourseDao.selectList(new LambdaQueryWrapper() - .eq(ClassCourse::getModelId,classEntity.getModelId())); - for (ClassCourse classCourse:courses){ - List catalogues = courseCatalogueDao.selectList(new LambdaQueryWrapper() - .eq(CourseCatalogueEntity::getCourseId,classCourse.getCourseId())); - for (CourseCatalogueEntity catalog:catalogues){ - int ucbCount = userCourseBuyDao.selectCount(new LambdaQueryWrapper() - .eq(UserCourseBuyEntity::getUserId,classUser.getUserId()) - .eq(UserCourseBuyEntity::getCatalogueId,catalog.getId())); - if (ucbCount == 0){ - flag = true; - CourseEntity c = courseDao.selectById(classCourse.getCourseId()); - sb.append("用户"+ user.getTel()+"未购买课程"+c.getTitle()+"-"+catalog.getTitle()+";\n"); - } + List userList = classUserDao.selectList(new LambdaQueryWrapper() + .eq(ClassUser::getClassId,classEntity.getId()).eq(ClassUser::getRole,"0")); + StringBuffer sb = new StringBuffer(); + if (userList.size() > 0) { + for (ClassUser classUser:userList){ + MyUserEntity user = myUserDao.selectById(classUser.getUserId()); + if ("0".equals(user.getVip())||"3".equals(user.getVip())){ + //不是vip查询每门课是否购买 + boolean flag = false; + List courses = classCourseDao.selectList(new LambdaQueryWrapper() + .eq(ClassCourse::getModelId,classEntity.getModelId())); + for (ClassCourse classCourse:courses){ + List catalogues = courseCatalogueDao.selectList(new LambdaQueryWrapper() + .eq(CourseCatalogueEntity::getCourseId,classCourse.getCourseId())); + for (CourseCatalogueEntity catalog:catalogues){ + int ucbCount = userCourseBuyDao.selectCount(new LambdaQueryWrapper() + .eq(UserCourseBuyEntity::getUserId,classUser.getUserId()) + .eq(UserCourseBuyEntity::getCatalogueId,catalog.getId())); + if (ucbCount == 0){ + flag = true; + CourseEntity c = courseDao.selectById(classCourse.getCourseId()); + sb.append("用户"+ user.getTel()+"未购买课程"+c.getTitle()+"-"+catalog.getTitle()+";\n"); } } - if (flag) { - return R.error(sb.toString()); - } + } + if (flag) { + return R.error(sb.toString()); } } } - classEntity.setState("1"); - Date startTime = new Date(); - classEntity.setStartTime(startTime); - this.getBaseMapper().updateById(classEntity); - if (classModel.getIsExam()==1){ - //根据设置的天数将班级状态从进行中设置成考试中 - rabbitTemplate.convertAndSend( - DelayQueueConfig.COMMON_EXCHANGE, - DelayQueueConfig.COMMON_ROUTING_KEY, - "examDays"+","+classEntity.getId(), - messagePostProcessor((classModel.getDays()-classModel.getExamDays())*24*60*60*1000) - ); - } - }else { - //结班限制 - int classExamUsers = classExamUserDao.selectCount(new LambdaQueryWrapper() - .eq(ClassExamUser::getRelationId,classEntity.getId()) - .eq(ClassExamUser::getScoreSuccess,0)); - if (classExamUsers>0){ - return R.error("有学员正在考试,请稍后再试"); - } - int taskReplys = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper() - .eq(ClassTaskAndQuesReply::getClassId,classEntity.getId()) - .eq(ClassTaskAndQuesReply::getType,0) - .ne(ClassTaskAndQuesReply::getScoreSuccess,2)); - int questionReplys = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper() - .eq(ClassTaskAndQuesReply::getClassId,classEntity.getId()) - .eq(ClassTaskAndQuesReply::getType,1) - .eq(ClassTaskAndQuesReply::getScoreSuccess,0)); - if (taskReplys>0||questionReplys>0){ - return R.error("学员打分未完成,请完成打分后结班"); - } - classEntity.setState("2"); - classEntity.setEndTime(new Date()); - this.getBaseMapper().updateById(classEntity); + } + classEntity.setState("1"); + Date startTime = new Date(); + classEntity.setStartTime(startTime); + this.getBaseMapper().updateById(classEntity); + if (classModel.getIsExam()==1){ + //根据设置的天数将班级状态从进行中设置成考试中 + rabbitTemplate.convertAndSend( + DelayQueueConfig.COMMON_EXCHANGE, + DelayQueueConfig.COMMON_ROUTING_KEY, + "examDays"+","+classEntity.getId(), + messagePostProcessor((classModel.getDays()-classModel.getExamDays())*24*60*60*1000) + ); } return R.ok(); } @@ -864,7 +840,7 @@ public class ClassEntityServiceImpl extends ServiceImpl params) { + ClassEntity classEntity = this.getBaseMapper().selectById(params.get("classId").toString()); + ClassModel classModel = classModelDao.selectById(classEntity.getModelId()); + if (DateUtils.addDateDays(classEntity.getStartTime(),classModel.getDays()).getTime() < new Date().getTime()){ + return R.error("教学时间未完"); + } + //结班限制 + int classExamUsers = classExamUserDao.selectCount(new LambdaQueryWrapper() + .eq(ClassExamUser::getRelationId,classEntity.getId()) + .eq(ClassExamUser::getScoreSuccess,0)); + if (classExamUsers>0){ + return R.error("有学员正在考试,请稍后再试"); + } + int taskReplys = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper() + .eq(ClassTaskAndQuesReply::getClassId,classEntity.getId()) + .eq(ClassTaskAndQuesReply::getType,0) + .ne(ClassTaskAndQuesReply::getScoreSuccess,2)); + int questionReplys = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper() + .eq(ClassTaskAndQuesReply::getClassId,classEntity.getId()) + .eq(ClassTaskAndQuesReply::getType,1) + .eq(ClassTaskAndQuesReply::getScoreSuccess,0)); + if (taskReplys>0||questionReplys>0){ + return R.error("学员打分未完成,请完成打分后结班"); + } + classEntity.setState("2"); + classEntity.setEndTime(new Date()); + this.getBaseMapper().updateById(classEntity); + return R.ok(); + } + private MessagePostProcessor messagePostProcessor(long date) { return message -> {