|
@@ -12,12 +12,14 @@ import com.ym.mec.biz.dal.entity.*;
|
|
import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
|
|
import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
|
|
import com.ym.mec.biz.dal.enums.*;
|
|
import com.ym.mec.biz.dal.enums.*;
|
|
import com.ym.mec.biz.dal.mapper.CourseSchedulePlusMapper;
|
|
import com.ym.mec.biz.dal.mapper.CourseSchedulePlusMapper;
|
|
|
|
+import com.ym.mec.biz.dal.mapper.LiveGroupPlusMapper;
|
|
import com.ym.mec.biz.dal.page.*;
|
|
import com.ym.mec.biz.dal.page.*;
|
|
import com.ym.mec.biz.dal.school.dto.ClassesForDayDto;
|
|
import com.ym.mec.biz.dal.school.dto.ClassesForDayDto;
|
|
import com.ym.mec.biz.dal.school.dto.CourseStudentDto;
|
|
import com.ym.mec.biz.dal.school.dto.CourseStudentDto;
|
|
import com.ym.mec.biz.dal.vo.CourseScheduleWrapper;
|
|
import com.ym.mec.biz.dal.vo.CourseScheduleWrapper;
|
|
import com.ym.mec.biz.dal.vo.ImLiveRoomVideoVo;
|
|
import com.ym.mec.biz.dal.vo.ImLiveRoomVideoVo;
|
|
import com.ym.mec.biz.dal.wrapper.DailySummaryOfClassesForTheCurrentSemesterWrapper;
|
|
import com.ym.mec.biz.dal.wrapper.DailySummaryOfClassesForTheCurrentSemesterWrapper;
|
|
|
|
+import com.ym.mec.biz.dal.wrapper.LiveGroupWrapper;
|
|
import com.ym.mec.biz.dal.wrapper.TeachingPointWrapper;
|
|
import com.ym.mec.biz.dal.wrapper.TeachingPointWrapper;
|
|
import com.ym.mec.biz.event.source.CourseEventSource;
|
|
import com.ym.mec.biz.event.source.CourseEventSource;
|
|
import com.ym.mec.biz.event.source.SendSeoMessageSource;
|
|
import com.ym.mec.biz.event.source.SendSeoMessageSource;
|
|
@@ -43,6 +45,7 @@ import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.collections.ListUtils;
|
|
import org.apache.commons.collections.ListUtils;
|
|
import org.apache.commons.collections.MapUtils;
|
|
import org.apache.commons.collections.MapUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
+import org.jetbrains.annotations.Nullable;
|
|
import org.joda.time.DateTime;
|
|
import org.joda.time.DateTime;
|
|
import org.joda.time.format.DateTimeFormat;
|
|
import org.joda.time.format.DateTimeFormat;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
@@ -196,6 +199,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
@Autowired
|
|
@Autowired
|
|
private ImLiveRoomVideoDao imLiveRoomVideoDao;
|
|
private ImLiveRoomVideoDao imLiveRoomVideoDao;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private LiveGroupPlusMapper liveGroupPlusMapper;
|
|
|
|
+
|
|
private final Logger businessLogger = LoggerFactory
|
|
private final Logger businessLogger = LoggerFactory
|
|
.getLogger(this.getClass());
|
|
.getLogger(this.getClass());
|
|
|
|
|
|
@@ -1294,8 +1300,18 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
cs.getType().equals(CourseScheduleType.COMM))
|
|
cs.getType().equals(CourseScheduleType.COMM))
|
|
.map(CourseScheduleDto::getId).collect(Collectors.toList());
|
|
.map(CourseScheduleDto::getId).collect(Collectors.toList());
|
|
|
|
|
|
- // 直播课设置直播间信息
|
|
|
|
- Map<String, ImLiveBroadcastRoomDto> liveRoomMap = getLiveRoomMap(teacherCourseSchedulesWithDate);
|
|
|
|
|
|
+ List<CourseScheduleDto> teacherCourseSchedulesWithDate1 = getTeacherCourseFormat(userId, classDate, tenantId, now,
|
|
|
|
+ teacherCourseSchedulesWithDate, allCourseScheduleIds, courseScheduleIds);
|
|
|
|
+ if (teacherCourseSchedulesWithDate1 != null) return teacherCourseSchedulesWithDate1;
|
|
|
|
+ return teacherCourseSchedulesWithDate;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 数据整理
|
|
|
|
+ @Nullable
|
|
|
|
+ private List<CourseScheduleDto> getTeacherCourseFormat(Integer userId, Date classDate, Integer tenantId, Date now,
|
|
|
|
+ List<CourseScheduleDto> teacherCourseSchedulesWithDate, List<Long> allCourseScheduleIds, List<Long> courseScheduleIds) {
|
|
|
|
+ // 直播课设置直播间信息
|
|
|
|
+ Map<String, ImLiveBroadcastRoomDto> liveRoomMap = getLiveRoomMap(teacherCourseSchedulesWithDate);
|
|
|
|
|
|
Map<Integer, String> subjectNameCourseMap = new HashMap<>();
|
|
Map<Integer, String> subjectNameCourseMap = new HashMap<>();
|
|
Map<Integer, String> subjectIdCourseMap = new HashMap<>();
|
|
Map<Integer, String> subjectIdCourseMap = new HashMap<>();
|
|
@@ -1322,72 +1338,72 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
List<Map<Integer, Integer>> classGroupStudentNumMaps = classGroupStudentMapperDao.countClassGroupsStudentNum(classGroupIds, ClassGroupStudentStatusEnum.NORMAL);
|
|
List<Map<Integer, Integer>> classGroupStudentNumMaps = classGroupStudentMapperDao.countClassGroupsStudentNum(classGroupIds, ClassGroupStudentStatusEnum.NORMAL);
|
|
Map<Integer, Long> classGroupStudentNumMap = MapUtil.convertIntegerMap(classGroupStudentNumMaps);
|
|
Map<Integer, Long> classGroupStudentNumMap = MapUtil.convertIntegerMap(classGroupStudentNumMaps);
|
|
|
|
|
|
- String tenantConfigValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.ADVANCE_LEAVE_HOURS,tenantId);
|
|
|
|
- Integer advanceLeaveHours = 0;
|
|
|
|
- if(StringUtils.isNotEmpty(tenantConfigValue)){
|
|
|
|
- advanceLeaveHours = Integer.parseInt(tenantConfigValue);
|
|
|
|
- }
|
|
|
|
|
|
+ String tenantConfigValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.ADVANCE_LEAVE_HOURS, tenantId);
|
|
|
|
+ Integer advanceLeaveHours = 0;
|
|
|
|
+ if(StringUtils.isNotEmpty(tenantConfigValue)){
|
|
|
|
+ advanceLeaveHours = Integer.parseInt(tenantConfigValue);
|
|
|
|
+ }
|
|
List<Map<Long, Integer>> courseLeaveStudentNumMaps = studentAttendanceDao.countCourseLeaveStudentNumWithFourHoursAgo(allCourseScheduleIds, advanceLeaveHours);
|
|
List<Map<Long, Integer>> courseLeaveStudentNumMaps = studentAttendanceDao.countCourseLeaveStudentNumWithFourHoursAgo(allCourseScheduleIds, advanceLeaveHours);
|
|
Map<Long,Long> courseLeaveStudentNumMap = MapUtil.convertIntegerMap((courseLeaveStudentNumMaps));
|
|
Map<Long,Long> courseLeaveStudentNumMap = MapUtil.convertIntegerMap((courseLeaveStudentNumMaps));
|
|
|
|
|
|
- List<CourseScheduleReview> AllCourseScheduleReviews = courseScheduleReviewDao.findByCourseSchedules(allCourseScheduleIds);
|
|
|
|
- Map<Integer, List<CourseScheduleReview>> idCourseReview=new HashMap<>();
|
|
|
|
- if(!CollectionUtils.isEmpty(AllCourseScheduleReviews)){
|
|
|
|
- idCourseReview=AllCourseScheduleReviews.stream().collect(Collectors.groupingBy(CourseScheduleReview::getCourseScheduleId));
|
|
|
|
- }
|
|
|
|
|
|
+ List<CourseScheduleReview> AllCourseScheduleReviews = courseScheduleReviewDao.findByCourseSchedules(allCourseScheduleIds);
|
|
|
|
+ Map<Integer, List<CourseScheduleReview>> idCourseReview=new HashMap<>();
|
|
|
|
+ if(!CollectionUtils.isEmpty(AllCourseScheduleReviews)){
|
|
|
|
+ idCourseReview=AllCourseScheduleReviews.stream().collect(Collectors.groupingBy(CourseScheduleReview::getCourseScheduleId));
|
|
|
|
+ }
|
|
|
|
|
|
- Set<Long> homeworkCourseIds = studentServeService.getTeacherHomeworkCourseIdsWithMonday(userId, classDate);
|
|
|
|
|
|
+ Set<Long> homeworkCourseIds = studentServeService.getTeacherHomeworkCourseIdsWithMonday(userId, classDate);
|
|
|
|
|
|
- for (CourseScheduleDto courseScheduleDto : teacherCourseSchedulesWithDate) {
|
|
|
|
|
|
+ for (CourseScheduleDto courseScheduleDto : teacherCourseSchedulesWithDate) {
|
|
Long studentNum = studentNumCourseMap.get(courseScheduleDto.getId());
|
|
Long studentNum = studentNumCourseMap.get(courseScheduleDto.getId());
|
|
if (Objects.nonNull(studentNum)) {
|
|
if (Objects.nonNull(studentNum)) {
|
|
- courseScheduleDto.setStudentAttendanceIsFirstTime(studentNum > 0 ? 0 : 1);
|
|
|
|
|
|
+ courseScheduleDto.setStudentAttendanceIsFirstTime(studentNum > 0 ? 0 : 1);
|
|
} else {
|
|
} else {
|
|
- courseScheduleDto.setStudentAttendanceIsFirstTime(1);
|
|
|
|
|
|
+ courseScheduleDto.setStudentAttendanceIsFirstTime(1);
|
|
}
|
|
}
|
|
|
|
|
|
if (now.before(courseScheduleDto.getStartClassTime())) {
|
|
if (now.before(courseScheduleDto.getStartClassTime())) {
|
|
- courseScheduleDto.setStatus(CourseStatusEnum.NOT_START);
|
|
|
|
|
|
+ courseScheduleDto.setStatus(CourseStatusEnum.NOT_START);
|
|
} else if (now.after(courseScheduleDto.getEndClassTime())) {
|
|
} else if (now.after(courseScheduleDto.getEndClassTime())) {
|
|
- courseScheduleDto.setStatus(CourseStatusEnum.OVER);
|
|
|
|
|
|
+ courseScheduleDto.setStatus(CourseStatusEnum.OVER);
|
|
} else {
|
|
} else {
|
|
- courseScheduleDto.setStatus(CourseStatusEnum.UNDERWAY);
|
|
|
|
|
|
+ courseScheduleDto.setStatus(CourseStatusEnum.UNDERWAY);
|
|
}
|
|
}
|
|
if (Objects.nonNull(courseScheduleDto.getClassGroupId())) {
|
|
if (Objects.nonNull(courseScheduleDto.getClassGroupId())) {
|
|
-// String[] studentNames = classGroupStudentMapperDao.findCourseStudentName(courseScheduleDto.getId().intValue());
|
|
|
|
- List<StudentNameAndPhoneDto> courseStudentNameAndPhone = classGroupStudentMapperDao.findCourseStudentNameAndPhone(courseScheduleDto.getId().intValue());
|
|
|
|
- if(!CollectionUtils.isEmpty(courseStudentNameAndPhone)){
|
|
|
|
- List<String> studentNames = courseStudentNameAndPhone.stream().filter(s->Objects.nonNull(s)&&Objects.nonNull(s.getUserName())).map(StudentNameAndPhoneDto::getUserName).collect(Collectors.toList());
|
|
|
|
- courseScheduleDto.setStudentNames(org.apache.commons.lang3.StringUtils.join(studentNames, ","));
|
|
|
|
- courseScheduleDto.setStudents(courseStudentNameAndPhone);
|
|
|
|
- }
|
|
|
|
|
|
+ // String[] studentNames = classGroupStudentMapperDao.findCourseStudentName(courseScheduleDto.getId().intValue());
|
|
|
|
+ List<StudentNameAndPhoneDto> courseStudentNameAndPhone = classGroupStudentMapperDao.findCourseStudentNameAndPhone(courseScheduleDto.getId().intValue());
|
|
|
|
+ if(!CollectionUtils.isEmpty(courseStudentNameAndPhone)){
|
|
|
|
+ List<String> studentNames = courseStudentNameAndPhone.stream().filter(s->Objects.nonNull(s)&&Objects.nonNull(s.getUserName())).map(StudentNameAndPhoneDto::getUserName).collect(Collectors.toList());
|
|
|
|
+ courseScheduleDto.setStudentNames(StringUtils.join(studentNames, ","));
|
|
|
|
+ courseScheduleDto.setStudents(courseStudentNameAndPhone);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
courseScheduleDto.setSubjectName(subjectNameCourseMap.get(courseScheduleDto.getId()));
|
|
courseScheduleDto.setSubjectName(subjectNameCourseMap.get(courseScheduleDto.getId()));
|
|
courseScheduleDto.setSubjectId(subjectIdCourseMap.get(courseScheduleDto.getId()));
|
|
courseScheduleDto.setSubjectId(subjectIdCourseMap.get(courseScheduleDto.getId()));
|
|
Long leaveStudentNum = courseLeaveStudentNumMap.get(courseScheduleDto.getId());
|
|
Long leaveStudentNum = courseLeaveStudentNumMap.get(courseScheduleDto.getId());
|
|
Long normalStudentNum = classGroupStudentNumMap.get(courseScheduleDto.getClassGroupId());
|
|
Long normalStudentNum = classGroupStudentNumMap.get(courseScheduleDto.getClassGroupId());
|
|
if(Objects.nonNull(leaveStudentNum)&&Objects.nonNull(normalStudentNum)&&leaveStudentNum.intValue()==normalStudentNum.intValue()){
|
|
if(Objects.nonNull(leaveStudentNum)&&Objects.nonNull(normalStudentNum)&&leaveStudentNum.intValue()==normalStudentNum.intValue()){
|
|
- courseScheduleDto.setEnableAdjustInToday(1);
|
|
|
|
|
|
+ courseScheduleDto.setEnableAdjustInToday(1);
|
|
}
|
|
}
|
|
- List<CourseScheduleReview> courseScheduleReviews = idCourseReview.get(courseScheduleDto.getId().intValue());
|
|
|
|
|
|
+ List<CourseScheduleReview> courseScheduleReviews = idCourseReview.get(courseScheduleDto.getId().intValue());
|
|
if(!CollectionUtils.isEmpty(courseScheduleReviews)){
|
|
if(!CollectionUtils.isEmpty(courseScheduleReviews)){
|
|
- courseScheduleDto.setComplaintsStatus(1);
|
|
|
|
- CourseScheduleReview courseScheduleReview = courseScheduleReviews.get(0);
|
|
|
|
- courseScheduleDto.setReviewId(courseScheduleReview.getId());
|
|
|
|
- }else{
|
|
|
|
- courseScheduleDto.setComplaintsStatus(0);
|
|
|
|
- }
|
|
|
|
|
|
+ courseScheduleDto.setComplaintsStatus(1);
|
|
|
|
+ CourseScheduleReview courseScheduleReview = courseScheduleReviews.get(0);
|
|
|
|
+ courseScheduleDto.setReviewId(courseScheduleReview.getId());
|
|
|
|
+ }else{
|
|
|
|
+ courseScheduleDto.setComplaintsStatus(0);
|
|
|
|
+ }
|
|
|
|
|
|
if(homeworkCourseIds.contains(courseScheduleDto.getId())){
|
|
if(homeworkCourseIds.contains(courseScheduleDto.getId())){
|
|
- courseScheduleDto.setEnableAssignHomework(1);
|
|
|
|
- }
|
|
|
|
|
|
+ courseScheduleDto.setEnableAssignHomework(1);
|
|
|
|
+ }
|
|
|
|
|
|
- // 直播课直播间配置
|
|
|
|
- courseScheduleDto.setLiveBroadcastRoom(liveRoomMap.get(courseScheduleDto.getMusicGroupId()));
|
|
|
|
- if (Objects.nonNull(courseScheduleDto.getLiveBroadcastRoom())) {
|
|
|
|
- courseScheduleDto.setOs(courseScheduleDto.getLiveBroadcastRoom().getOs());
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ // 直播课直播间配置
|
|
|
|
+ courseScheduleDto.setLiveBroadcastRoom(liveRoomMap.get(courseScheduleDto.getMusicGroupId()));
|
|
|
|
+ if (Objects.nonNull(courseScheduleDto.getLiveBroadcastRoom())) {
|
|
|
|
+ courseScheduleDto.setOs(courseScheduleDto.getLiveBroadcastRoom().getOs());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
return teacherCourseSchedulesWithDate;
|
|
return teacherCourseSchedulesWithDate;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -3651,7 +3667,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
Date date = new Date();
|
|
Date date = new Date();
|
|
//查询所有已上课乐团
|
|
//查询所有已上课乐团
|
|
List<String> musicGroupIdList = courseScheduleDao.queryStartedCourseMusicGroupIdList(GroupType.MUSIC.getCode());
|
|
List<String> musicGroupIdList = courseScheduleDao.queryStartedCourseMusicGroupIdList(GroupType.MUSIC.getCode());
|
|
-
|
|
|
|
|
|
+
|
|
//自动更新课程状态至“已结束”
|
|
//自动更新课程状态至“已结束”
|
|
List<CourseSchedule> list = courseScheduleDao.queryFinishedWithNoUpdateStatus();
|
|
List<CourseSchedule> list = courseScheduleDao.queryFinishedWithNoUpdateStatus();
|
|
|
|
|
|
@@ -3672,7 +3688,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
if (courseSchedule.getGroupType() == GroupType.VIP) {
|
|
if (courseSchedule.getGroupType() == GroupType.VIP) {
|
|
courseScheduleIdList.add(courseSchedule.getId());
|
|
courseScheduleIdList.add(courseSchedule.getId());
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
if(courseSchedule.getGroupType() == GroupType.MUSIC){
|
|
if(courseSchedule.getGroupType() == GroupType.MUSIC){
|
|
if(!musicGroupIdList.contains(courseSchedule.getMusicGroupId())){
|
|
if(!musicGroupIdList.contains(courseSchedule.getMusicGroupId())){
|
|
//乐团第一次上课
|
|
//乐团第一次上课
|
|
@@ -5848,6 +5864,21 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
+ public IPage<CourseScheduleDto> liveCoursePage(LiveGroupWrapper.LiveCoursePageQuery queryInfo) {
|
|
|
|
+ IPage<CourseScheduleDto> page = com.microsvc.toolkit.common.response.paging.QueryInfo.getPage(queryInfo);
|
|
|
|
+ List<CourseScheduleDto> courseScheduleDtos = liveGroupPlusMapper.liveCoursePage(page, queryInfo);
|
|
|
|
+ if (CollectionUtils.isEmpty(courseScheduleDtos)) {
|
|
|
|
+ return page;
|
|
|
|
+ }
|
|
|
|
+ // id 集合
|
|
|
|
+ List<Long> courseIds = courseScheduleDtos.stream().map(CourseScheduleDto::getId).collect(Collectors.toList());
|
|
|
|
+ List<CourseScheduleDto> teacherCourseFormat = getTeacherCourseFormat(queryInfo.getTeacherId(), new Date(),
|
|
|
|
+ queryInfo.getTenantId(), new Date(), courseScheduleDtos, courseIds, courseIds);
|
|
|
|
+
|
|
|
|
+ return page.setRecords(teacherCourseFormat);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
public List<CourseStudentDto> queryCourseStudentList(Long courseId) {
|
|
public List<CourseStudentDto> queryCourseStudentList(Long courseId) {
|
|
List<CourseStudentDto> courseStudentDtos = studentAttendanceDao.queryCourseStudentList(courseId);
|
|
List<CourseStudentDto> courseStudentDtos = studentAttendanceDao.queryCourseStudentList(courseId);
|
|
if(CollectionUtils.isNotEmpty(courseStudentDtos)){
|
|
if(CollectionUtils.isNotEmpty(courseStudentDtos)){
|