package com.tust.school.res.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.tust.school.res.domain.dto.course.CourseResult;
import com.tust.school.res.domain.dto.course.CourseSaveParam;
import com.tust.school.res.domain.dto.course.CourseStatusParam;
import com.tust.school.res.domain.entity.*;
import com.tust.school.res.domain.enums.BaseStatusEnum;
import com.tust.school.res.domain.enums.HasDeleteEnum;
import com.tust.school.res.mapper.*;
import com.tust.school.res.service.CourseService;
import com.tust.school.res.utils.RandomUtils;
import com.tust.school.res.utils.UserContextHelper;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class CourseServiceImpl implements CourseService {
@Resource
private CourseMapper courseMapper;
@Resource
private RelStuCourseMapper relStuCourseMapper;
@Resource
private RelTeacherCourseMapper relTeacherCourseMapper;
@Resource
private TeacherMapper teacherMapper;
@Resource
private RelCourseClassroomMapper relCourseClassroomMapper;
@Resource
private ClassroomMapper classroomMapper;
@Override
public List<CourseResult> listStudentUnselectedCourse() {
Integer stuId = UserContextHelper.getUserId();
List<Integer> selectedCourseIds = stuSelectedCourseIds(stuId);
List<CourseResult> courseResults = new ArrayList<>();
QueryWrapper<Course> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("status", BaseStatusEnum.ONLINE.getStatus());
queryWrapper.eq("has_delete", HasDeleteEnum.UN_DELETE.getValue());
if (!CollectionUtils.isEmpty(selectedCourseIds)) {
queryWrapper.notIn("id", selectedCourseIds);
}
List<Course> courses = courseMapper.selectList(queryWrapper);
if (CollectionUtils.isEmpty(courses)) {
return courseResults;
}
for (Course course : courses) {
CourseResult courseResult = new CourseResult();
BeanUtils.copyProperties(course, courseResult);
courseResults.add(courseResult);
}
return courseResults;
}
@Override
public List<CourseResult> listStudentSelectedCourse() {
Integer stuId = UserContextHelper.getUserId();
List<Integer> selectedCourseIds = stuSelectedCourseIds(stuId);
if (CollectionUtils.isEmpty(selectedCourseIds)) {
return new ArrayList<>();
}
QueryWrapper<Course> queryWrapper = new QueryWrapper<>();
queryWrapper.in("id", selectedCourseIds);
List<Course> courses = courseMapper.selectList(queryWrapper);
List<CourseResult> resultList = new ArrayList<>();
for (Course course : courses) {
CourseResult courseResult = new CourseResult();
BeanUtils.copyProperties(course, courseResult);
resultList.add(courseResult);
}
return resultList;
}
@Override
public List<CourseResult> listTeacherCourse() {
Integer userId = UserContextHelper.getUserId();
QueryWrapper<RelTeacherCourse> relTeacherCourseQueryWrapper = new QueryWrapper<>();
relTeacherCourseQueryWrapper.eq("teacher_id", userId)
.eq("has_delete", HasDeleteEnum.UN_DELETE.getValue());
List<RelTeacherCourse> relTeacherCourses = relTeacherCourseMapper.selectList(relTeacherCourseQueryWrapper);
if (CollectionUtils.isEmpty(relTeacherCourses)) {
return new ArrayList<>();
}
List<Integer> courseIds = relTeacherCourses.stream().map(RelTeacherCourse::getCourseId).collect(Collectors.toList());
QueryWrapper<Course> courseQueryWrapper = new QueryWrapper<>();
courseQueryWrapper.in("id", courseIds).eq("has_delete", HasDeleteEnum.UN_DELETE.getValue());
List<Course> courses = courseMapper.selectList(courseQueryWrapper);
if (CollectionUtils.isEmpty(courses)) {
return new ArrayList<>();
}
List<CourseResult> resultList = new ArrayList<>();
for (Course course : courses) {
CourseResult courseResult = new CourseResult();
BeanUtils.copyProperties(course, courseResult);
resultList.add(courseResult);
}
return resultList;
}
@Override
public List<CourseResult> listAllCourse() {
QueryWrapper<Course> courseQueryWrapper = new QueryWrapper<>();
courseQueryWrapper.eq("has_delete", HasDeleteEnum.UN_DELETE.getValue());
List<Course> courses = courseMapper.selectList(courseQueryWrapper);
if (CollectionUtils.isEmpty(courses)) {
return new ArrayList<>();
}
List<CourseResult> resultList = new ArrayList<>();
for (Course course : courses) {
CourseResult courseResult = new CourseResult();
BeanUtils.copyProperties(course, courseResult);
courseResult.setStatusStr(BaseStatusEnum.getDescByStatus(course.getStatus()));
QueryWrapper<RelTeacherCourse> relTeacherCourseQueryWrapper = new QueryWrapper<>();
relTeacherCourseQueryWrapper.eq("course_id", course.getId())
.eq("has_delete", HasDeleteEnum.UN_DELETE.getValue());
RelTeacherCourse relTeacherCourse = relTeacherCourseMapper.selectOne(relTeacherCourseQueryWrapper);
if (Objects.nonNull(relTeacherCourse)) {
Teacher teacher = teacherMapper.selectById(relTeacherCourse.getTeacherId());
if (Objects.nonNull(teacher)) {
courseResult.setTeacherId(teacher.getId());
courseResult.setTeacherName(teacher.getName());
}
}
QueryWrapper<RelCourseClassroom> relCourseClassroomQueryWrapper = new QueryWrapper<>();
relCourseClassroomQueryWrapper.eq("course_id", course.getId())
.eq("has_delete", HasDeleteEnum.UN_DELETE.getValue());
RelCourseClassroom relCourseClassroom = relCourseClassroomMapper.selectOne(relCourseClassroomQueryWrapper);
if (Objects.nonNull(relCourseClassroom)) {
Classroom classroom = classroomMapper.selectById(relCourseClassroom.getClassroomId());
if (Objects.nonNull(classroom)) {
courseResult.setClassroomId(classroom.getId());
courseResult.setClassroomName(classroom.getName());
}
}
resultList.add(courseResult);
}
return resultList;
}
@Override
public CourseResult getCourseResultById(Integer courseId) {
Course course = courseMapper.selectById(courseId);
if (Objects.isNull(course)) {
return new CourseResult();
}
CourseResult courseResult = new CourseResult();
BeanUtils.copyProperties(course, courseResult);
courseResult.setStatusStr(BaseStatusEnum.getDescByStatus(course.getStatus()));
QueryWrapper<RelTeacherCourse> relTeacherCourseQueryWrapper = new QueryWrapper<>();
relTeacherCourseQueryWrapper.eq("course_id", course.getId())
.eq("has_delete", HasDeleteEnum.UN_DELETE.getValue());
RelTeacherCourse relTeacherCourse = relTeacherCourseMapper.selectOne(relTeacherCourseQueryWrapper);
if (Objects.isNull(relTeacherCourse)) {
return courseResult;
}
Teacher teacher = teacherMapper.selectById(relTeacherCourse.getTeacherId());
if (Objects.isNull(teacher)) {
return courseResult;
}
courseResult.setTeacherName(teacher.getName());
courseResult.setTeacherId(teacher
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 培训机构教务管理系统源码+项目说明.zip
资源推荐
资源详情
资源评论
收起资源包目录
培训机构教务管理系统源码+项目说明.zip (691个子文件)
theme.css 549KB
theme.css 549KB
bootstrap.css 143KB
bootstrap.min.css 118KB
admin-forms.css 114KB
admin-forms.css 114KB
admin-forms.min.css 87KB
admin-forms.min.css 87KB
animate.min.css 52KB
animate.min.css 52KB
iconsweets.css 26KB
iconsweets.css 26KB
bootstrap-theme.css 26KB
bootstrap-theme.min.css 23KB
glyphicons-pro.css 23KB
glyphicons-pro.css 23KB
icomoon.css 22KB
icomoon.css 22KB
bootstrap-editable.css 21KB
bootstrap-editable.css 21KB
zocial.css 19KB
zocial.css 19KB
ui.fancytree.min.css 15KB
ui.fancytree.min.css 15KB
core.css 12KB
core.css 12KB
octicons.css 11KB
octicons.css 11KB
dropzone.css 11KB
dropzone.css 11KB
fullcalendar.min.css 10KB
fullcalendar.min.css 10KB
summernote.css 10KB
summernote.css 10KB
mapplic.css 9KB
mapplic.css 9KB
magnific-popup.css 8KB
magnific-popup.css 8KB
ladda.min.css 8KB
ladda.min.css 8KB
dataTables.bootstrap.css 7KB
dataTables.bootstrap.css 7KB
daterangepicker.css 6KB
daterangepicker.css 6KB
bootstrap-datetimepicker.css 6KB
bootstrap-datetimepicker.css 6KB
datepicker.css 5KB
datepicker.css 5KB
footable.core.min.css 5KB
footable.core.min.css 5KB
nestable.css 4KB
nestable.css 4KB
slick.css 4KB
slick.css 4KB
dataTables.plugins.css 4KB
dataTables.plugins.css 4KB
dataTables.editor.css 4KB
dataTables.editor.css 4KB
datepicker.css 4KB
bootstrap-colorpicker.min.css 3KB
bootstrap-colorpicker.min.css 3KB
datepicker.css 3KB
stateface.css 3KB
stateface.css 3KB
tagmanager.css 2KB
tagmanager.css 2KB
bootstrap-tour.css 2KB
bootstrap-tour.css 2KB
googlecode.css 2KB
googlecode.css 2KB
c3.min.css 2KB
c3.min.css 2KB
github.css 2KB
github.css 2KB
login.css 1KB
typeahead.js-bootstrap.css 1KB
typeahead.js-bootstrap.css 1KB
reg.css 770B
style.css 297B
WdatePicker.css 182B
WdatePicker.css 182B
address.css 141B
address.css 141B
dataTables.colReorder.min.css 139B
dataTables.colReorder.min.css 139B
IconSweets-Deluxe.eot 161KB
IconSweets-Deluxed41d.eot 161KB
IconSweets-Deluxe.eot 161KB
IconSweets-Deluxed41d.eot 161KB
glyphicons-regulard41d.eot 143KB
glyphicons-regular.eot 143KB
glyphicons-regulard41d.eot 143KB
glyphicons-regular.eot 143KB
icomoond41d.eot 101KB
icomoon.eot 101KB
icomoond41d.eot 101KB
icomoon.eot 101KB
fontawesome-webfontd41d.eot 59KB
fontawesome-webfonte0a5.eot 59KB
fontawesome-webfontd41d.eot 59KB
共 691 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
- �北清歌寒�2024-04-01资源内容详细,总结地很全面,与描述的内容一致,对我启发很大,学习了。
土豆片片
- 粉丝: 1555
- 资源: 5641
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功