浏览代码

Merge remote-tracking branch 'origin/feature/0529-live' into feature/0529-live

zouxuan 2 年之前
父节点
当前提交
0edfb8f602

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupDao.java

@@ -395,4 +395,6 @@ public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
     * @date 2023/6/2 18:30
     * @date 2023/6/2 18:30
     */
     */
     void updateStudentIdList(@Param("groupId") Long groupId, @Param("userId") Integer userId);
     void updateStudentIdList(@Param("groupId") Long groupId, @Param("userId") Integer userId);
+
+    void del(@Param("id") Integer id);
 }
 }

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroup.java

@@ -156,6 +156,10 @@ public class VipGroup extends BaseEntity {
 
 
 	private int enableDelete;
 	private int enableDelete;
 
 
+    private Integer subjectId;
+
+    private Boolean delFlag;
+
 	@Override
 	@Override
 	public String toString() {
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);
 		return ToStringBuilder.reflectionToString(this);

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/LiveGroupPlusMapper.java

@@ -2,10 +2,14 @@ package com.ym.mec.biz.dal.mapper;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ym.mec.biz.dal.dto.CourseScheduleDto;
 import com.ym.mec.biz.dal.wrapper.LiveGroupWrapper;
 import com.ym.mec.biz.dal.wrapper.LiveGroupWrapper;
+import com.ym.mec.common.page.PageInfo;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 import org.springframework.stereotype.Repository;
 
 
+import java.util.List;
+
 @Repository
 @Repository
 public interface LiveGroupPlusMapper extends BaseMapper<Object> {
 public interface LiveGroupPlusMapper extends BaseMapper<Object> {
 
 
@@ -13,4 +17,8 @@ public interface LiveGroupPlusMapper extends BaseMapper<Object> {
     IPage<LiveGroupWrapper.LiveGroupStudentList> liveStudentList(@Param("page") IPage<LiveGroupWrapper.LiveGroupStudentList> page,
     IPage<LiveGroupWrapper.LiveGroupStudentList> liveStudentList(@Param("page") IPage<LiveGroupWrapper.LiveGroupStudentList> page,
                                                                  @Param("param") LiveGroupWrapper.LiveGroupStudentQuery query);
                                                                  @Param("param") LiveGroupWrapper.LiveGroupStudentQuery query);
 
 
+    /**
+     * 直播课课表
+     */
+    List<CourseScheduleDto> liveCoursePage(@Param("page") IPage<CourseScheduleDto> page, @Param("param") LiveGroupWrapper.LiveCoursePageQuery queryInfo);
 }
 }

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/VipGroupQueryInfo.java

@@ -23,12 +23,16 @@ public class VipGroupQueryInfo extends QueryInfo {
 
 
     private String status;
     private String status;
 
 
+    private Integer subjectId;
+
     private boolean isExport = false;
     private boolean isExport = false;
 
 
     private Integer educationalTeacherId;
     private Integer educationalTeacherId;
 
 
     private Boolean hasEducationalTeacherId;
     private Boolean hasEducationalTeacherId;
 
 
+    private Boolean delFlag;
+
     @ApiModelProperty(value = "上课时间,年月日",required = false)
     @ApiModelProperty(value = "上课时间,年月日",required = false)
     private String classDate;
     private String classDate;
 
 

+ 27 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/LiveGroupWrapper.java

@@ -75,4 +75,31 @@ public class LiveGroupWrapper {
 
 
     }
     }
 
 
+
+
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel(" LiveCoursePageQuery-乐直播课程列表查询")
+    public static class LiveCoursePageQuery implements QueryInfo {
+
+        @ApiModelProperty("当前页")
+        private Integer page;
+
+        @ApiModelProperty("分页行数")
+        private Integer rows;
+
+
+        @ApiModelProperty("开始时间")
+        private Date startTime;
+
+        @ApiModelProperty("结束时间")
+        private Date endTime;
+
+        private Integer teacherId;
+
+        private Integer tenantId;
+
+    }
 }
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java

@@ -14,6 +14,7 @@ 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.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.common.entity.HttpResponseResult;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.PageInfo;
@@ -778,4 +779,12 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	CourseScheduleWrapper.LiveCourseSchedule getLiveCourseScheduleTime(Long courseScheduleId);
 	CourseScheduleWrapper.LiveCourseSchedule getLiveCourseScheduleTime(Long courseScheduleId);
 
 
     List<CourseScheduleStudentDto> queryDetailList(CourseDetailQueryInfo courseDetailQueryInfo);
     List<CourseScheduleStudentDto> queryDetailList(CourseDetailQueryInfo courseDetailQueryInfo);
+
+    /**
+     * 老师乐直播直播课课程列表
+     *
+     * @param queryInfo
+     * @return
+     */
+    IPage<CourseScheduleDto> liveCoursePage(LiveGroupWrapper.LiveCoursePageQuery queryInfo);
 }
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java

@@ -469,4 +469,11 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
      * 直播课程提醒
      * 直播课程提醒
      */
      */
     void liveCourseRemind();
     void liveCourseRemind();
+
+    /**
+     * 删除直播课
+     *
+     * @param id 直播课id
+     */
+    Boolean del(Integer id);
 }
 }

+ 75 - 44
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -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)){

+ 46 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -216,6 +216,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
             throw new BizException("课程不存在");
             throw new BizException("课程不存在");
         }
         }
 
 
+        TeacherDefaultVipGroupSalary groupSalary = teacherDefaultVipGroupSalaryDao
+                .findByTeacherAndCategory(vipGroup.getVipGroupApplyBaseInfo().getUserId(), vipGroup.getVipGroupApplyBaseInfo().getVipGroupCategoryId());
+        if (groupSalary == null && vipGroup.getVipGroupApplyBaseInfo().getGroupType().equals(GroupType.LIVE.getCode())) {
+            throw new BizException("请设置教师课酬");
+        }
         // 声部
         // 声部
         VipGroupApplyDto vipGroupApplyDto = liveGroupDetail(vipGroup1.getId());
         VipGroupApplyDto vipGroupApplyDto = liveGroupDetail(vipGroup1.getId());
         // 检测是否有学生已经购买直播课
         // 检测是否有学生已经购买直播课
@@ -457,7 +462,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         if (Objects.isNull(vipGroupApplyBaseInfoDto.getOfflineTeacherSalary())) {
         if (Objects.isNull(vipGroupApplyBaseInfoDto.getOfflineTeacherSalary())) {
             throw new BizException("请设置教师课酬");
             throw new BizException("请设置教师课酬");
         }
         }
-
+        TeacherDefaultVipGroupSalary groupSalary = teacherDefaultVipGroupSalaryDao
+                .findByTeacherAndCategory(vipGroup.getVipGroupApplyBaseInfo().getUserId(), vipGroup.getVipGroupApplyBaseInfo().getVipGroupCategoryId());
+        if (groupSalary == null && vipGroup.getVipGroupApplyBaseInfo().getGroupType().equals(GroupType.LIVE.getCode())) {
+            throw new BizException("请设置教师课酬");
+        }
         // 课程时间校验
         // 课程时间校验
         Integer totalClassTimes = vipGroupApplyBaseInfoDto.getOnlineClassesNum() + vipGroupApplyBaseInfoDto.getOfflineClassesNum();
         Integer totalClassTimes = vipGroupApplyBaseInfoDto.getOnlineClassesNum() + vipGroupApplyBaseInfoDto.getOfflineClassesNum();
         //获取第一节课
         //获取第一节课
@@ -1787,6 +1796,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         if (queryInfo.getGroupType().equals(GroupType.LIVE.getCode())) {
         if (queryInfo.getGroupType().equals(GroupType.LIVE.getCode())) {
             queryInfo.setOrganId(null);
             queryInfo.setOrganId(null);
             queryInfo.setLiveOrganId(null);
             queryInfo.setLiveOrganId(null);
+            queryInfo.setDelFlag(true);
         }
         }
         PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
         PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
         Map<String, Object> params = new HashMap<>();
         Map<String, Object> params = new HashMap<>();
@@ -1824,6 +1834,20 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
                 if (!CollectionUtils.isEmpty(groupCoursesUnitPriceMaps)) {
                 if (!CollectionUtils.isEmpty(groupCoursesUnitPriceMaps)) {
                     groupCoursesUnitPrice = MapUtil.convertIntegerMap(groupCoursesUnitPriceMaps);
                     groupCoursesUnitPrice = MapUtil.convertIntegerMap(groupCoursesUnitPriceMaps);
                 }
                 }
+                // 设置直播课声部
+                List<Integer> subjectIds = dataList.stream().map(o -> o.getSubjectId()).filter(Objects::nonNull).collect(Collectors.toList());
+
+                Map<Integer, Subject> subjectMap = subjectService.getMapByIds(subjectIds);
+                for (VipGroup vipGroup : dataList) {
+                    if (vipGroup.getSubjectId() != null) {
+                        Subject subject = subjectMap.get(vipGroup.getSubjectId());
+                        if (subject != null) {
+                            vipGroup.setSubjectName(subject.getName());
+                        } else if(vipGroup.getSubjectId() == -1){
+                            vipGroup.setSubjectName("乐理");
+                        }
+                    }
+                }
 
 
                 List<Integer> organIds = dataList.stream().map(VipGroup::getOrganId).collect(Collectors.toList());
                 List<Integer> organIds = dataList.stream().map(VipGroup::getOrganId).collect(Collectors.toList());
                 // 直播课 分部为 organIdList
                 // 直播课 分部为 organIdList
@@ -4912,14 +4936,15 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 
 
 
         SysMessageConfig sysMessageConfig = sysMessageConfigDao.queryByType(MessageTypeEnum.JIGUANG_LIVE_COURSE_START.getCode());
         SysMessageConfig sysMessageConfig = sysMessageConfigDao.queryByType(MessageTypeEnum.JIGUANG_LIVE_COURSE_START.getCode());
-        String teacherUrl = sysMessageConfig.getUrl();
         sysMessageConfig = sysMessageConfigDao.queryByType(MessageTypeEnum.JIGUANG_LIVE_COURSE_START_STUDENT.getCode());
         sysMessageConfig = sysMessageConfigDao.queryByType(MessageTypeEnum.JIGUANG_LIVE_COURSE_START_STUDENT.getCode());
-        String studentUrl = sysMessageConfig.getUrl();
         sysMessageConfig = sysMessageConfigDao.queryByType(MessageTypeEnum.IM_LIVE_COURSE_START_GROUP.getCode());
         sysMessageConfig = sysMessageConfigDao.queryByType(MessageTypeEnum.IM_LIVE_COURSE_START_GROUP.getCode());
-        String imUrl = sysMessageConfig.getUrl();
 
 
 
 
         for (CourseSchedule courseSchedule : courseSchedules) {
         for (CourseSchedule courseSchedule : courseSchedules) {
+            String studentUrl = sysMessageConfig.getUrl();
+            String teacherUrl = sysMessageConfig.getUrl();
+
+            String imUrl = sysMessageConfig.getUrl();
 
 
             // 获取班级名
             // 获取班级名
             ClassGroup classGroup = classGroupDao.get(courseSchedule.getClassGroupId());
             ClassGroup classGroup = classGroupDao.get(courseSchedule.getClassGroupId());
@@ -4964,4 +4989,21 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         courseScheduleDao.updateRemindStatus(ids);
         courseScheduleDao.updateRemindStatus(ids);
 
 
     }
     }
+
+    @Override
+    public Boolean del(Integer id) {
+        VipGroup vipGroup = vipGroupDao.get(Long.valueOf(id));
+        if (Objects.isNull(vipGroup)) {
+            throw new BizException("课程组不存在");
+        }
+        if (!"LIVE".equals(vipGroup.getGroupType())) {
+            throw new BizException("此课程不是直播课程");
+        }
+        if (!vipGroup.getStatus().equals(VipGroupStatusEnum.CANCEL)) {
+            throw new BizException("课程组不是取消状态");
+        }
+
+        vipGroupDao.del(id);
+        return true;
+    }
 }
 }

+ 0 - 1
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -4338,7 +4338,6 @@
         select *
         select *
         from course_schedule cs
         from course_schedule cs
         where cs.status_ = 'NOT_START'
         where cs.status_ = 'NOT_START'
-          and cs.live_remind_ = 0
           and cs.type_ = 'LIVE'
           and cs.type_ = 'LIVE'
           and cs.class_date_ = date_format(now(),'%Y-%m-%d')
           and cs.class_date_ = date_format(now(),'%Y-%m-%d')
           and CONCAT(class_date_,' ',start_class_time_)  &lt;= date_format(date_add(now(),interval #{minutes} minute),'%Y-%m-%d %H:%i:%s')
           and CONCAT(class_date_,' ',start_class_time_)  &lt;= date_format(date_add(now(),interval #{minutes} minute),'%Y-%m-%d %H:%i:%s')

+ 48 - 0
mec-biz/src/main/resources/config/mybatis/LiveGroupPlusMapper.xml

@@ -17,4 +17,52 @@
     </where>
     </where>
 
 
     </select>
     </select>
+
+<select id="liveCoursePage" resultMap="com.ym.mec.biz.dal.dao.CourseScheduleDao.courseScheduleDto">
+    SELECT
+    cs.id_ seal_class_id_,
+    cs.new_course_id_,
+    cg.name_,
+    su.real_name_ teacher_name_,
+    cs.type_,
+    cs.id_,
+    cs.class_group_id_,
+    cs.class_date_,
+    CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
+    CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
+    cs.status_,
+    csts.user_id_ actual_teacher_id_,
+    csts.teacher_role_,
+    cg.expect_student_num_,
+    cs.schoole_id_,
+    s.name_ school_name_,
+    IF(ta.sign_in_status_ IS NULL,3,ta.sign_in_status_) sign_in_status_enum_,
+    IF(ta.sign_out_status_ IS NULL,3,ta.sign_out_status_) sign_out_status_enum_,
+    IF(ta.sign_in_status_ IS NULL,0,1) sign_in_status_,
+    IF(ta.sign_out_status_ IS NULL,0,1) sign_out_status_,
+    cs.teach_mode_,
+    cs.live_room_id_,
+    cs.group_type_,
+    cs.music_group_id_
+    FROM
+    course_schedule_teacher_salary csts
+    LEFT JOIN course_schedule cs ON csts.course_schedule_id_=cs.id_
+    left join im_live_broadcast_room ilbr on ilbr.room_uid_ = cs.live_room_id_
+    LEFT JOIN sys_user su ON csts.user_id_ = su.id_
+    LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
+    LEFT JOIN school s ON cs.schoole_id_ = s.id_
+    LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_ AND ta.teacher_id_=#{param.teacherId}
+    WHERE
+    (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
+    AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
+    and cs.type_ = 'LIVE' and ilbr.os_ = 'client'
+    <if test="param.startTime != null">
+        AND cs.class_date_ &gt;= date_format(#{param.startTime},'%Y-%m-%d')
+    </if>
+    <if test="param.endTime != null">
+        AND cs.class_date_ &lt;= date_format(#{param.endTime},'%Y-%m-%d')
+    </if>
+    AND csts.user_id_ = #{param.teacherId} AND cs.pre_course_flag_ = 0
+    ORDER BY start_class_time_
+    </select>
 </mapper>
 </mapper>

+ 11 - 0
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -50,6 +50,7 @@
         <result column="educational_teacher_name_" property="educationalTeacherName" />
         <result column="educational_teacher_name_" property="educationalTeacherName" />
         <result column="live_config_json_" property="liveConfigJson" />
         <result column="live_config_json_" property="liveConfigJson" />
         <result column="tenant_id_" property="tenantId" />
         <result column="tenant_id_" property="tenantId" />
+        <result column="subject_id_" property="subjectId" />
     </resultMap>
     </resultMap>
 
 
     <resultMap type="com.ym.mec.biz.dal.entity.School" id="School">
     <resultMap type="com.ym.mec.biz.dal.entity.School" id="School">
@@ -212,6 +213,12 @@
             <if test="groupType != null and groupType != ''">
             <if test="groupType != null and groupType != ''">
                 AND vg.group_type_ = #{groupType}
                 AND vg.group_type_ = #{groupType}
             </if>
             </if>
+            <if test="subjectId != null">
+                AND vg.subject_id_ = #{subjectId}
+            </if>
+            <if test="delFlag != null">
+                and vg.del_flag_ = #{delFlag}
+            </if>
         </where>
         </where>
     </sql>
     </sql>
 
 
@@ -1165,5 +1172,9 @@
     <select id="getCourseStudentNumsByGroupId" resultType="java.lang.Integer">
     <select id="getCourseStudentNumsByGroupId" resultType="java.lang.Integer">
         SELECT t2.student_num_ FROM vip_group t1 JOIN vip_group_category t2 ON (t1.vip_group_category_id_ = t2.id_) WHERE t1.id_ = #{groupId}
         SELECT t2.student_num_ FROM vip_group t1 JOIN vip_group_category t2 ON (t1.vip_group_category_id_ = t2.id_) WHERE t1.id_ = #{groupId}
     </select>
     </select>
+
+    <update id="del">
+        UPDATE vip_group SET del_flag_ = 1 WHERE id_ = #{id}
+    </update>
     <!--获取课程人数-->
     <!--获取课程人数-->
 </mapper>
 </mapper>

+ 17 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java

@@ -9,12 +9,14 @@ import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
 import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.dal.page.*;
+import com.ym.mec.biz.dal.wrapper.LiveGroupWrapper;
 import com.ym.mec.biz.dal.vo.CourseScheduleWrapper;
 import com.ym.mec.biz.dal.vo.CourseScheduleWrapper;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.PageUtil;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.date.DateUtil;
@@ -390,4 +392,19 @@ public class TeacherCourseScheduleController extends BaseController {
 
 
         return succeed(scheduleService.getLiveCourseScheduleTime(courseScheduleId));
         return succeed(scheduleService.getLiveCourseScheduleTime(courseScheduleId));
     }
     }
+
+    @ApiOperation(value = "老师乐直播直播课课程列表")
+    @PostMapping("/liveCoursePage")
+    public HttpResponseResult<PageInfo<CourseScheduleDto>> liveCoursePage(LiveGroupWrapper.LiveCoursePageQuery queryInfo){
+
+
+        SysUser user = sysUserService.getUser();
+        if(null == user.getTenantId()){
+            return failed("用户机构信息异常,请联系管理员");
+        }
+        queryInfo.setTeacherId(user.getId());
+        queryInfo.setTenantId(user.getTenantId());
+        return succeed(PageUtil.pageInfo(scheduleService.liveCoursePage(queryInfo)));
+    }
+
 }
 }

+ 9 - 0
mec-web/src/main/java/com/ym/mec/web/controller/VipGroupManageController.java

@@ -445,4 +445,13 @@ public class VipGroupManageController extends BaseController {
 
 
         return succeed(vipGroupService.liveCourseList(query));
         return succeed(vipGroupService.liveCourseList(query));
     }
     }
+
+
+
+    @ApiOperation(value = "删除直播课")
+    @PostMapping(value = "/delLiveGroup/{id}")
+    public HttpResponseResult<Object> delLiveGroup(@PathVariable Integer id){
+
+        return succeed(vipGroupService.del(id));
+    }
 }
 }