|
@@ -2,26 +2,176 @@ package com.yonge.cooleshow.biz.dal.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
-import org.springframework.stereotype.Service;
|
|
|
|
-import com.yonge.cooleshow.biz.dal.entity.CourseHomework;
|
|
|
|
-import com.yonge.cooleshow.biz.dal.vo.CourseHomeworkVo;
|
|
|
|
-import com.yonge.cooleshow.biz.dal.dto.search.CourseHomeworkSearch;
|
|
|
|
import com.yonge.cooleshow.biz.dal.dao.CourseHomeworkDao;
|
|
import com.yonge.cooleshow.biz.dal.dao.CourseHomeworkDao;
|
|
|
|
+import com.yonge.cooleshow.biz.dal.dto.CourseHomeworkReviewDto;
|
|
|
|
+import com.yonge.cooleshow.biz.dal.dto.CourseHomeworkSaveDto;
|
|
|
|
+import com.yonge.cooleshow.biz.dal.dto.search.HomeworkSearch;
|
|
|
|
+import com.yonge.cooleshow.biz.dal.entity.CourseHomework;
|
|
|
|
+import com.yonge.cooleshow.biz.dal.entity.CourseSchedule;
|
|
|
|
+import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
|
|
|
|
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
|
|
import com.yonge.cooleshow.biz.dal.service.CourseHomeworkService;
|
|
import com.yonge.cooleshow.biz.dal.service.CourseHomeworkService;
|
|
|
|
+import com.yonge.cooleshow.biz.dal.service.CourseScheduleService;
|
|
|
|
+import com.yonge.cooleshow.biz.dal.service.StudentAttendanceService;
|
|
|
|
+import com.yonge.cooleshow.biz.dal.service.StudentCourseHomeworkService;
|
|
|
|
+import com.yonge.cooleshow.biz.dal.vo.CourseHomeworkDetailVo;
|
|
|
|
+import com.yonge.cooleshow.biz.dal.vo.CourseHomeworkVo;
|
|
|
|
+import com.yonge.cooleshow.common.exception.BizException;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.context.annotation.Lazy;
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
|
+
|
|
|
|
+import java.util.Date;
|
|
|
|
+import java.util.List;
|
|
|
|
|
|
|
|
|
|
@Service
|
|
@Service
|
|
public class CourseHomeworkServiceImpl extends ServiceImpl<CourseHomeworkDao, CourseHomework> implements CourseHomeworkService {
|
|
public class CourseHomeworkServiceImpl extends ServiceImpl<CourseHomeworkDao, CourseHomework> implements CourseHomeworkService {
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ @Lazy
|
|
|
|
+ private CourseScheduleService courseScheduleService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private StudentAttendanceService studentAttendanceService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private StudentCourseHomeworkService studentCourseHomeworkService;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public CourseHomeworkVo detail(Long id) {
|
|
public CourseHomeworkVo detail(Long id) {
|
|
CourseHomeworkVo detail = baseMapper.detail(id);
|
|
CourseHomeworkVo detail = baseMapper.detail(id);
|
|
return detail;
|
|
return detail;
|
|
}
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
|
- public IPage<CourseHomeworkVo> selectPage(IPage<CourseHomeworkVo> page, CourseHomeworkSearch query){
|
|
|
|
- return page.setRecords(baseMapper.selectPage(page, query));
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public IPage<CourseHomeworkVo> selectPage(IPage<CourseHomeworkVo> page, HomeworkSearch query){
|
|
|
|
+ IPage<CourseHomeworkVo> courseHomeworkVoIPage = page.setRecords(baseMapper.selectPage(page, query));
|
|
|
|
+ List<CourseHomeworkVo> records = courseHomeworkVoIPage.getRecords();
|
|
|
|
+ List<CourseHomeworkVo> userInfoList = baseMapper.selectStudentInfo(records);
|
|
|
|
+ for (int i = 0; i < records.size(); i++) {
|
|
|
|
+ CourseHomeworkVo userInfo = userInfoList.get(i);
|
|
|
|
+ records.get(i).setStudentAvatar(userInfo.getStudentAvatar());
|
|
|
|
+ records.get(i).setStudentName(userInfo.getStudentName());
|
|
|
|
+ records.get(i).setSubjectName(userInfo.getSubjectName());
|
|
|
|
+ }
|
|
|
|
+ return courseHomeworkVoIPage;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public CourseHomeworkDetailVo getCourseHomeworkDetailByCourseId(Long courseId) {
|
|
|
|
+
|
|
|
|
+ // 课程基本信息
|
|
|
|
+ CourseHomeworkDetailVo courseHomeworkDetailVo = baseMapper.selectCourseHomeworkDetailByCourseId(courseId);
|
|
|
|
+
|
|
|
|
+ // 学生信息
|
|
|
|
+ CourseHomeworkDetailVo studentInfoDetailVo = baseMapper
|
|
|
|
+ .selectPaymentStudentInfo(courseHomeworkDetailVo.getCourseGroupId(),courseHomeworkDetailVo.getCourseScheduleId());
|
|
|
|
+
|
|
|
|
+ // 拼接数据
|
|
|
|
+ courseHomeworkDetailVo.setStudentName(studentInfoDetailVo.getStudentName());
|
|
|
|
+ courseHomeworkDetailVo.setStudentAvatar(studentInfoDetailVo.getStudentAvatar());
|
|
|
|
+ courseHomeworkDetailVo.setSubjectName(studentInfoDetailVo.getSubjectName());
|
|
|
|
+ return courseHomeworkDetailVo;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public boolean decorateCourseHomework(CourseHomeworkSaveDto saveDto) {
|
|
|
|
+ // 检查 老师 陪练课 课程状态为完成,有学生考勤记录 没有布置作业
|
|
|
|
+ checkCourseSchedule(saveDto.getCourseScheduleId());
|
|
|
|
+
|
|
|
|
+ // 检查已经布置了课后作业
|
|
|
|
+ CourseHomework homework = checkHasHomework(saveDto.getCourseScheduleId());
|
|
|
|
+ if (homework != null) {
|
|
|
|
+ saveDto.setCourseHomeworkId(homework.getId());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ CourseSchedule courseSchedule = courseScheduleService.getById(saveDto.getCourseScheduleId());
|
|
|
|
+ // 创建课后作业
|
|
|
|
+ CourseHomework courseHomework = getCourseHomework(saveDto, courseSchedule);
|
|
|
|
+
|
|
|
|
+ return this.saveOrUpdate(courseHomework);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 获取课程作业
|
|
|
|
+ *
|
|
|
|
+ * @param courseScheduleId 课程id
|
|
|
|
+ * @return CourseHomework
|
|
|
|
+ */
|
|
|
|
+ private CourseHomework checkHasHomework(Long courseScheduleId) {
|
|
|
|
+ List<CourseHomework> list = this.lambdaQuery()
|
|
|
|
+ .eq(CourseHomework::getCourseScheduleId, courseScheduleId)
|
|
|
|
+ .eq(CourseHomework::getCourseGroupType, CourseScheduleEnum.PRACTICE.getCode())
|
|
|
|
+ .list();
|
|
|
|
+ if (CollectionUtils.isEmpty(list)) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ return list.get(0);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public boolean reviewCourseHomework(CourseHomeworkReviewDto reviewDto) {
|
|
|
|
+ // 检查 老师 陪练课 课程状态为完成,有学生考勤记录 没有布置作业
|
|
|
|
+ checkCourseSchedule(reviewDto.getCourseScheduleId());
|
|
|
|
+
|
|
|
|
+ // 检查已经布置了课后作业
|
|
|
|
+ if (checkHasHomework(reviewDto.getCourseScheduleId()) == null) {
|
|
|
|
+ throw new BizException("没布置作业,不能点评");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 课程基本信息
|
|
|
|
+ CourseHomeworkDetailVo courseHomeworkDetailVo = baseMapper
|
|
|
|
+ .selectCourseHomeworkDetailByCourseId(reviewDto.getCourseScheduleId());
|
|
|
|
+
|
|
|
|
+ // 检查学生是否提交作业
|
|
|
|
+ if (!YesOrNoEnum.YES.getCode().equals(courseHomeworkDetailVo.getSubmitHomework().getCode())) {
|
|
|
|
+ throw new BizException("学生未提交作业,不能点评");
|
|
|
|
+ }
|
|
|
|
+ return studentCourseHomeworkService.reviewCourseHome(courseHomeworkDetailVo.getStudentHomeworkId(),reviewDto.getReview());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 检查课程能否布置作业
|
|
|
|
+ *
|
|
|
|
+ * @param courseScheduleId 课程id
|
|
|
|
+ */
|
|
|
|
+ private void checkCourseSchedule(Long courseScheduleId) {
|
|
|
|
+ // 1. 检查课程类型
|
|
|
|
+ CourseSchedule courseSchedule = courseScheduleService.getById(courseScheduleId);
|
|
|
|
+ if (!CourseScheduleEnum.PRACTICE.getCode().equals(courseSchedule.getType())) {
|
|
|
|
+ throw new BizException("非陪练课,不能布置课后作业");
|
|
|
|
+ }
|
|
|
|
+ // 2. 检查课程结束
|
|
|
|
+ if (!CourseScheduleEnum.COMPLETE.getCode().equals(courseSchedule.getStatus())) {
|
|
|
|
+ throw new BizException("课程未正常完成,不能布置课后作业");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 封装课程课后作业对象
|
|
|
|
+ *
|
|
|
|
+ * @param saveDto 课后作业信息
|
|
|
|
+ * @param courseSchedule 课程信息
|
|
|
|
+ * @return 课后作业对象
|
|
|
|
+ */
|
|
|
|
+ private CourseHomework getCourseHomework(CourseHomeworkSaveDto saveDto, CourseSchedule courseSchedule) {
|
|
|
|
+ CourseHomework courseHomework = new CourseHomework();
|
|
|
|
+ courseHomework.setId(saveDto.getCourseHomeworkId());
|
|
|
|
+ courseHomework.setCourseGroupId(courseSchedule.getCourseGroupId());
|
|
|
|
+ courseHomework.setCourseGroupType(CourseScheduleEnum.PRACTICE.getCode());
|
|
|
|
+ courseHomework.setCourseScheduleId(saveDto.getCourseScheduleId());
|
|
|
|
+ courseHomework.setTitle(saveDto.getTitle());
|
|
|
|
+ courseHomework.setContent(saveDto.getContent());
|
|
|
|
+ courseHomework.setAttachments(saveDto.getAttachments());
|
|
|
|
+ courseHomework.setExpectNum(1);
|
|
|
|
+ courseHomework.setCompletedNum(0);
|
|
|
|
+ courseHomework.setCreateTime(new Date());
|
|
|
|
+ return courseHomework;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
}
|
|
}
|