From 6c30f58d387dc7cb38b3d12b585c7d1971f3b23a Mon Sep 17 00:00:00 2001 From: zhanglei Date: Tue, 25 Aug 2026 17:54:57 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=95=99=E5=9F=B9=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ClassCourseController.java | 5 +- .../cedu/controller/app/StudyController.java | 6 +- .../cedu/model/vo/ClassManagementVO.java | 4 + .../cedu/service/ClassCourseService.java | 3 +- .../service/impl/ClassCourseServiceImpl.java | 90 ++++++++++--------- 5 files changed, 59 insertions(+), 49 deletions(-) diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/controller/ClassCourseController.java b/safety-cedu-service/src/main/java/org/qinan/cedu/controller/ClassCourseController.java index bcd80d1c..d94cb8cf 100644 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/controller/ClassCourseController.java +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/controller/ClassCourseController.java @@ -7,6 +7,7 @@ import io.swagger.annotations.ApiParam; import org.qinan.cedu.model.dto.ClassCourseDTO; import org.qinan.cedu.model.query.ClassCoursePageQuery; import org.qinan.cedu.model.vo.ClassCourseVO; +import org.qinan.cedu.model.vo.ClassManagementVO; import org.qinan.cedu.model.vo.ExamStatisticsAndRecordVO; import org.qinan.cedu.service.ClassCourseService; import org.qinan.safetyeval.client.dto.PageResponse; @@ -71,8 +72,8 @@ public class ClassCourseController { @ApiOperation("我的学习") @GetMapping("/myCoursePage") - public SingleResponse> myCoursePage() { - List list = classCourseService.myCoursePage(); + public SingleResponse> myCoursePage() { + List list = classCourseService.myCoursePage(); return SingleResponse.success(list); } diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/controller/app/StudyController.java b/safety-cedu-service/src/main/java/org/qinan/cedu/controller/app/StudyController.java index 0cbb30f1..f13c6922 100644 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/controller/app/StudyController.java +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/controller/app/StudyController.java @@ -8,7 +8,7 @@ import lombok.AllArgsConstructor; import org.qinan.cedu.model.dto.AnswerQuestionDTO; import org.qinan.cedu.model.dto.StartExamDTO; import org.qinan.cedu.model.dto.SubmitExamDTO; -import org.qinan.cedu.model.vo.ClassCourseVO; +import org.qinan.cedu.model.vo.ClassManagementVO; import org.qinan.cedu.model.vo.ExamStatisticsAndRecordVO; import org.qinan.cedu.model.vo.PaperExamDetailVO; import org.qinan.cedu.model.vo.StartExamVO; @@ -34,8 +34,8 @@ public class StudyController { @ApiOperation("我的学习") @GetMapping("/myCoursePage") - public SingleResponse> myCoursePage() { - List list = classCourseService.myCoursePage(); + public SingleResponse> myCoursePage() { + List list = classCourseService.myCoursePage(); return SingleResponse.success(list); } diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/model/vo/ClassManagementVO.java b/safety-cedu-service/src/main/java/org/qinan/cedu/model/vo/ClassManagementVO.java index 798d50e2..55e3e144 100644 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/model/vo/ClassManagementVO.java +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/model/vo/ClassManagementVO.java @@ -7,6 +7,7 @@ import lombok.EqualsAndHashCode; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; +import java.util.List; /** * 班级管理 @@ -101,4 +102,7 @@ public class ClassManagementVO extends BaseVO { @ApiModelProperty("完成人员数") private Long completedCount; + + @ApiModelProperty("班级课程列表") + private List classCourseList; } diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/service/ClassCourseService.java b/safety-cedu-service/src/main/java/org/qinan/cedu/service/ClassCourseService.java index ee888bf2..815e84e9 100644 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/service/ClassCourseService.java +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/service/ClassCourseService.java @@ -6,6 +6,7 @@ import org.qinan.cedu.model.dto.ClassCourseDTO; import org.qinan.cedu.model.entity.ClassCourseDO; import org.qinan.cedu.model.query.ClassCoursePageQuery; import org.qinan.cedu.model.vo.ClassCourseVO; +import org.qinan.cedu.model.vo.ClassManagementVO; import org.qinan.cedu.model.vo.ExamStatisticsAndRecordVO; import java.util.List; @@ -33,7 +34,7 @@ public interface ClassCourseService extends IService { boolean deleteById(Long id); - List myCoursePage(); + List myCoursePage(); ExamStatisticsAndRecordVO scoreQuery(); diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/service/impl/ClassCourseServiceImpl.java b/safety-cedu-service/src/main/java/org/qinan/cedu/service/impl/ClassCourseServiceImpl.java index c1336aa9..2aaf81cd 100644 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/service/impl/ClassCourseServiceImpl.java +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/service/impl/ClassCourseServiceImpl.java @@ -4,19 +4,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.qinan.cedu.convertor.ClassCourseConvertor; -import org.qinan.cedu.convertor.ClassStudentExamRecordConvertor; -import org.qinan.cedu.convertor.CourseRelCoursewareConvertor; -import org.qinan.cedu.convertor.CoursewareManagementConvertor; +import org.qinan.cedu.convertor.*; import org.qinan.cedu.enums.DeleteEnum; import org.qinan.cedu.mapper.*; import org.qinan.cedu.model.dto.ClassCourseDTO; import org.qinan.cedu.model.entity.*; import org.qinan.cedu.model.query.ClassCoursePageQuery; -import org.qinan.cedu.model.vo.ClassCourseVO; -import org.qinan.cedu.model.vo.ClassStudentExamRecordVO; -import org.qinan.cedu.model.vo.CourseStudentStatVO; -import org.qinan.cedu.model.vo.ExamStatisticsAndRecordVO; +import org.qinan.cedu.model.vo.*; import org.qinan.cedu.service.ClassCourseService; import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter; import org.qinan.safetyeval.infrastructure.support.InsertFieldDefaults; @@ -63,6 +57,8 @@ public class ClassCourseServiceImpl extends ServiceImpl pageQuery(ClassCoursePageQuery query) { @@ -201,46 +197,54 @@ public class ClassCourseServiceImpl extends ServiceImpl myCoursePage() { + public List myCoursePage() { List classId = classStudentMapper.selectList(new LambdaQueryWrapper() .eq(ClassStudentDO::getStudentId, AuthUserContextAdapter.getCurrentUserId())) .stream().map(ClassStudentDO::getClassId).distinct().collect(Collectors.toList()); - List classCourseDOS = baseMapper.selectList(new LambdaQueryWrapper() - .eq(ClassCourseDO::getClassId, CollectionUtils.isEmpty(classId) ? Collections.singletonList(0L) : classId) - .eq(ClassCourseDO::getDeleteEnum, DeleteEnum.FALSE.getCode())); - //查询班级 - Map collectClassMap = classManagementMapper.selectList(new LambdaQueryWrapper() - .in(ClassManagementDO::getId, CollectionUtils.isEmpty(classId) ? Collections.singletonList(0L) : classId)) - .stream().collect(Collectors.toMap(ClassManagementDO::getId, Function.identity())); - return classCourseDOS.stream().map(item -> { - ClassCourseVO classCourseVO = classCourseConvertor.convertEToVo(item); - List classStudentLearningRecordDOS = learningRecordMapper.selectList(new LambdaQueryWrapper() - .eq(ClassStudentLearningRecordDO::getStudentId, AuthUserContextAdapter.getCurrentUserId()) - .eq(ClassStudentLearningRecordDO::getCourseId, item.getId()) - .eq(ClassStudentLearningRecordDO::getClassId, item.getClassId())); - // getStudyStatus()都为2就是完成, 否则为未完成 - int completed = classStudentLearningRecordDOS.stream().allMatch(record -> record.getStudyStatus() != null && record.getStudyStatus() == 2) ? 2 : 0; - ClassManagementDO classManagementDO = collectClassMap.get(item.getClassId()); - if (classManagementDO != null) { - classCourseVO.setClassName(classManagementDO.getClassName()); - LocalDateTime endDate = classManagementDO.getEndDate(); - if (classManagementDO.getDelayTime() != null && classManagementDO.getDelayTime().isAfter(endDate)) { - endDate = classManagementDO.getDelayTime(); + if (!CollectionUtils.isEmpty(classId)) { + List classCourseDOS = baseMapper.selectList(new LambdaQueryWrapper() + .eq(ClassCourseDO::getClassId, classId) + .eq(ClassCourseDO::getDeleteEnum, DeleteEnum.FALSE.getCode())); + //查询班级 + Map collectClassMap = classManagementMapper.selectList(new LambdaQueryWrapper() + .in(ClassManagementDO::getId, classId)) + .stream().collect(Collectors.toMap(ClassManagementDO::getId, Function.identity())); + List classCourseVOS = classCourseDOS.stream().map(item -> { + ClassCourseVO classCourseVO = classCourseConvertor.convertEToVo(item); + List classStudentLearningRecordDOS = learningRecordMapper.selectList(new LambdaQueryWrapper() + .eq(ClassStudentLearningRecordDO::getStudentId, AuthUserContextAdapter.getCurrentUserId()) + .eq(ClassStudentLearningRecordDO::getCourseId, item.getId()) + .eq(ClassStudentLearningRecordDO::getClassId, item.getClassId())); + // getStudyStatus()都为2就是完成, 否则为未完成 + int completed = classStudentLearningRecordDOS.stream().allMatch(record -> record.getStudyStatus() != null && record.getStudyStatus() == 2) ? 2 : 0; + ClassManagementDO classManagementDO = collectClassMap.get(item.getClassId()); + if (classManagementDO != null) { + classCourseVO.setClassName(classManagementDO.getClassName()); + LocalDateTime endDate = classManagementDO.getEndDate(); + if (classManagementDO.getDelayTime() != null && classManagementDO.getDelayTime().isAfter(endDate)) { + endDate = classManagementDO.getDelayTime(); + } + classCourseVO.setEndDate(endDate); } - classCourseVO.setEndDate(endDate); - } - if (completed == 0) { - LocalDateTime endDate = classCourseVO.getEndDate(); - if (LocalDateTime.now().isBefore(endDate)) { - classCourseVO.setCompleted(1); + if (completed == 0) { + LocalDateTime endDate = classCourseVO.getEndDate(); + if (LocalDateTime.now().isBefore(endDate)) { + classCourseVO.setCompleted(1); + } } - } - classCourseVO.setCompleted(completed); - // 查询课件 - classCourseVO.setCoursewareList(coursewareManagementMapper.selectBatchIds(item.getCoursewareId()) - .stream().map(coursewareManagementConvertor::convertEToVo).collect(Collectors.toList())); - return classCourseVO; - }).collect(Collectors.toList()); + classCourseVO.setCompleted(completed); + // 查询课件 + classCourseVO.setCoursewareList(coursewareManagementMapper.selectBatchIds(item.getCoursewareId()) + .stream().map(coursewareManagementConvertor::convertEToVo).collect(Collectors.toList())); + return classCourseVO; + }).collect(Collectors.toList()); + return classManagementMapper.selectBatchIds(classId).stream().map(item -> { + ClassManagementVO classManagementVO = classManagementConvertor.convertEToVo(item); + classManagementVO.setClassCourseList(classCourseVOS.stream().filter(f -> f.getClassId().equals(String.valueOf(item.getId()))).collect(Collectors.toList())); + return classManagementVO; + }).collect(Collectors.toList()); + } + return Collections.emptyList(); } @Override