瀏覽代碼

Merge branch 'saas' of http://git.dayaedu.com/yonge/mec into master_saas

 Conflicts:
	mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
zouxuan 2 年之前
父節點
當前提交
68efa2953a

+ 95 - 79
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -1537,10 +1537,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			existCours.setStartClassTime(ac.getStartClassTime());
 			existCours.setEndClassTime(DateUtil.addMinutes(existCours.getStartClassTime(), singleClassMinutes));
 
-			//课程结束时间必须在21:00之前
-			if(DateUtil.getHour(existCours.getEndClassTime()) > 20 && DateUtil.getMinute(existCours.getEndClassTime()) > 0){
-				throw new BizException("课程结束时间不能超过21:00,请重新调整上课时间");
-			}
+            //课程结束时间必须在21:00之前
+            if(DateUtil.getHour(existCours.getEndClassTime()) > 20 && DateUtil.getMinute(existCours.getEndClassTime()) > 0){
+            	throw new BizException("课程结束时间不能超过21:00,请重新调整上课时间");
+            }
 
 			if(!DateUtil.isSameDay(existCours.getStartClassTime(), existCours.getEndClassTime())){
 				throw new BizException("课程暂不支持跨天");
@@ -1876,10 +1876,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		if (CollectionUtils.isEmpty(courseSchedules)) {
 			return false;
 		}
-		//直播课不校验冲突
-		if(courseSchedules.get(0).getGroupType() == LIVE){
-			return true;
-		}
 		List<String> classDates = courseSchedules.stream().map(courseSchedule -> DateUtil.dateToString(courseSchedule.getClassDate(), "yyyy-MM-dd"))
 				.collect(Collectors.toList());
 
@@ -2349,8 +2345,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		this.checkLiveAdjust(courseSchedules);
 		//校验机构线上课人数上限
 		this.checkOnlineCategory(courseSchedules,vipGroupCourseAdjustInfo.getTeachMode());
-		//重置连堂课标记
-		this.resetLiveRemind(courseSchedules);
 		//拷贝历史直播课
 		List<CourseSchedule> liveCourseSchedules = Lists.newArrayList(courseSchedules);
         courseSchedules.sort(Comparator.comparing(CourseSchedule::getStartClassTime));
@@ -2488,24 +2482,22 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		}
 		if(groupType == VIP || groupType == LIVE){
 			CourseSchedule courseSchedule = courseSchedules.stream().max(Comparator.comparing(CourseSchedule::getEndClassTime)).get();
-//
-//			BigDecimal teacherSalary=BigDecimal.ZERO;
-
-//			Map<String, BigDecimal> salaryMap = vipGroupService.countVipGroupPredictFee(vipGroup, vipGroup.getUserId());
-//
-//			ClassGroupTeacherSalary classGroupTeacherSalary = classGroupTeacherSalaryDao.findByVipGoupAndTeacher(vipGroupCourseAdjustInfo.getVipGroupId().intValue(), courseSchedules.get(0).getActualTeacherId());
-//
-//			if(Objects.nonNull(classGroupTeacherSalary)){
-//				teacherSalary=vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE)?salaryMap.get("offlineTeacherSalary"):salaryMap.get("onlineTeacherSalary");
-//			}
-
 			if(courseSchedule.getEndClassTime().compareTo(vipGroup.getCoursesExpireDate())>0){
 				vipGroup.setCoursesExpireDate(courseSchedule.getEndClassTime());
 				vipGroupDao.update(vipGroup);
 			}
 
-//			courseScheduleTeacherSalaryDao.batchUpdateCourseSalarys(courseScheduleIds, teacherSalary);
-
+			// 直播课数据清除
+			for (CourseSchedule item : courseSchedules) {
+				if (LIVE == item.getGroupType()) {
+					// 消息提醒
+					item.setLiveRemind(0);
+					// 直播间关联
+					item.setLiveRoomId("");
+					// 连堂课标识
+					item.setContinuousCourse(false);
+				}
+			}
 		}
 
 		courseScheduleDao.batchUpdate(courseSchedules);
@@ -6113,70 +6105,87 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 	@Override
 	public void sendChatRoomMessage(List<CourseSchedule> courseSchedules) {
-		// 直播课消息推送
-		ExecutorService executor = Executors.newCachedThreadPool();
-		CompletableFuture.runAsync(() ->
-				courseSchedules.parallelStream().filter(e->e.getGroupType() == LIVE).forEach(item -> {
 
-					// 是否是连堂课
-					String continueCourseTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.ONLINE_CONTINUE_COURSE_TIME, item.getTenantId());
-					if (StringUtils.isEmpty(continueCourseTime)) {
-						continueCourseTime = "5";
-					}
+		List<CourseSchedule> collect = courseSchedules.stream()
+				.filter(x -> x.getGroupType() == LIVE).collect(Collectors.toList());
 
-				// 查询最新课程信息
-				CourseSchedule newCourseSchedule = courseScheduleDao.get(item.getId());
-				// 连堂课更新标识
-				boolean updateFlag = true;
-				// 新课时间
-				Date newCourseScheduleDate = getDateTime(newCourseSchedule.getClassDate(), newCourseSchedule.getStartClassTime()).toDate();
-				Date oldCourseScheduleDate = getDateTime(item.getClassDate(), item.getStartClassTime()).toDate();
-				if (newCourseScheduleDate.getTime() > oldCourseScheduleDate.getTime()) {
-					newCourseSchedule = item;
-					// 更新标识
-					updateFlag = false;
-				}
+		for (CourseSchedule item : collect) {
 
-				// 直播课关联直播间编号
-				String liveRoomId = getCourseScheduleLiveRoomId(newCourseSchedule, continueCourseTime, Lists.newArrayList(), Lists.newArrayList(), updateFlag);
+			// 是否是连堂课
+			String continueCourseTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.ONLINE_CONTINUE_COURSE_TIME, item.getTenantId());
+			if (StringUtils.isEmpty(continueCourseTime)) {
+				continueCourseTime = "5";
+			}
 
-				if (StringUtils.isBlank(liveRoomId)) {
-					liveRoomId = item.getLiveRoomId();
-				}
+			// 查询最新课程信息
+			CourseSchedule newCourseSchedule = courseScheduleDao.get(item.getId());
+			// 连堂课更新标识
+			boolean updateFlag = true;
+			// 新课时间
+			Date newCourseScheduleDate = getDateTime(newCourseSchedule.getClassDate(), newCourseSchedule.getStartClassTime()).toDate();
+			Date oldCourseScheduleDate = getDateTime(item.getClassDate(), item.getStartClassTime()).toDate();
+			if (newCourseScheduleDate.getTime() > oldCourseScheduleDate.getTime()) {
+				newCourseSchedule = item;
+				// 更新标识
+				updateFlag = false;
+			}
 
-				ImLiveBroadcastRoom liveRoom = imLiveBroadcastRoomService.getByRoomUid(liveRoomId);
-				if (Objects.isNull(liveRoom)) {
-					log.warn("liveRoom sendChatRoomMessage is null, liveRoomId:{}", liveRoomId);
-					return;
-				}
+			List<CourseSchedule> newCourseSchedules = Lists.newArrayList();
+			// 直播课关联直播间编号
+			String liveRoomId = getCourseScheduleLiveRoomId(newCourseSchedule, continueCourseTime, newCourseSchedules, Lists.newArrayList(), updateFlag);
+
+			if (StringUtils.isBlank(liveRoomId)) {
+				liveRoomId = item.getLiveRoomId();
+			}
 
-					try {
-						LivePluginService pluginService = livePluginContext.getPluginService(liveRoom.getServiceProvider());
+			ImLiveBroadcastRoom liveRoom = imLiveBroadcastRoomService.getByRoomUid(liveRoomId);
+			if (Objects.isNull(liveRoom)) {
+				log.warn("liveRoom sendChatRoomMessage is null, liveRoomId:{}, updateFlag={}, item.liveId={}", liveRoomId,
+						updateFlag, item.getLiveRoomId());
 
-					LiveRoomMessage message = new LiveRoomMessage();
-					message.setIsIncludeSender(1);
-					message.setFromUserId(newCourseSchedule.getActualTeacherId().toString());
-					message.setToChatRoomId(liveRoom.getRoomUid());
-					message.setObjectName(LiveRoomMessage.LIVE_STATUS_CHANGE);
+				/*boolean anyMatch = newCourseSchedules.stream().anyMatch(x -> x.getId().longValue() == x.getId())
+						&& newCourseSchedules.size() > 1;
+				if (!updateFlag && (Optional.ofNullable(item.getContinuousCourse()).orElse(false) || anyMatch)) {
+					throw new BizException("课程信息已变更,请重新操作");
+				}*/
+				return;
+			}
 
-						// 发送用户信息
-						LiveRoomMessage.MessageUser messageUser = LiveRoomMessage.MessageUser.builder()
-								.sendUserId("")
-								.sendUserName("")
-								.avatarUrl("")
-								.build();
+			try {
+				LivePluginService pluginService = livePluginContext.getPluginService(liveRoom.getServiceProvider());
+
+				LiveRoomMessage message = new LiveRoomMessage();
+				message.setIsIncludeSender(1);
+				message.setFromUserId(newCourseSchedule.getActualTeacherId().toString());
+				message.setToChatRoomId(liveRoom.getRoomUid());
+				message.setObjectName(LiveRoomMessage.LIVE_STATUS_CHANGE);
+
+				// 发送用户信息
+				LiveRoomMessage.MessageUser messageUser = LiveRoomMessage.MessageUser.builder()
+						.sendUserId("")
+						.sendUserName("")
+						.avatarUrl("")
+						.build();
+
+				message.setContent(LiveRoomMessage.MessageContent.builder()
+						.sendUserInfo(messageUser).build());
+
+				pluginService.sendChatRoomMessage(message);
+				log.info("liveRoom sendChatRoomMessage success, liveRoomId:{}", liveRoomId);
+			} catch (Exception e) {
+				log.error("liveRoom sendChatRoomMessage error", e);
+			}
 
-						message.setContent(LiveRoomMessage.MessageContent.builder()
-								.sendUserInfo(messageUser).build());
+		}
+
+		// 直播课消息推送
+		/*ExecutorService executor = Executors.newCachedThreadPool();
+		CompletableFuture.runAsync(() ->
+			courseSchedules.parallelStream().filter(e->e.getGroupType() == LIVE).forEach(item -> {
 
-					pluginService.sendChatRoomMessage(message);
-					log.info("liveRoom sendChatRoomMessage success, liveRoomId:{}", liveRoomId);
-				} catch (Exception e) {
-					log.error("liveRoom sendChatRoomMessage error", e);
-				}
 			}),executor
 		);
-		executor.shutdown();
+		executor.shutdown();*/
 	}
 
 	@Override
@@ -6598,7 +6607,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 						int size = beforeCourse.size();
 						collect = beforeCourse.subList(size - 2, size).stream()
-                                .filter(o -> CourseStatusEnum.NOT_START.equals(o.getStatus()))
+                                //.filter(o -> CourseStatusEnum.NOT_START.equals(o.getStatus()))
 								.map(CourseSchedule::getId)
 								.distinct().collect(Collectors.toList());
 						if (CollectionUtils.isNotEmpty(collect)) {
@@ -6610,15 +6619,22 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 					// 课程后连堂状态
 					if (afterCourse.get(0).getContinuousCourse()) {
 						collect = afterCourse.stream()
-                                .filter(o -> CourseStatusEnum.NOT_START.equals(o.getStatus()))
+                                //.filter(o -> CourseStatusEnum.NOT_START.equals(o.getStatus()))
                                 .map(CourseSchedule::getId).distinct().collect(Collectors.toList());
 
 						if (CollectionUtils.isNotEmpty(collect)) {
-							// 关联直播间编号
-							courseScheduleDao.batchUpdateLiveRoomId(collect, "");
 							// 更新连堂课状态
 							courseScheduleDao.batchUpdateContinuousCourse(collect, false);
 						}
+
+						collect = afterCourse.stream()
+								.filter(o -> CourseStatusEnum.NOT_START.equals(o.getStatus()))
+								.map(CourseSchedule::getId).distinct().collect(Collectors.toList());
+
+						if (CollectionUtils.isNotEmpty(collect)) {
+							// 关联直播间编号
+							courseScheduleDao.batchUpdateLiveRoomId(collect, "");
+						}
 					}
 				}
 

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

@@ -5131,7 +5131,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
         DateTime time = DateTime.parse(liveStartTime, DateTimeFormat.forPattern(DateUtil.DEFAULT_PATTERN + " " + DateUtil.EXPANDED_TIME_FORMAT));
 
-        String roomUid = "LIVE-" + roomId + "-" + courseSchedule.getActualTeacherId().toString() + time.toDate().getTime();
+        String roomUid = "LIVE-" + roomId + "-" + courseSchedule.getActualTeacherId().toString()+"-" + time.toDate().getTime();
         ImLiveBroadcastRoom room = imLiveBroadcastRoomService.getByRoomUid(roomUid);
         if (Objects.nonNull(room)) {
             liveRoom.setId(room.getId());

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

@@ -1913,7 +1913,7 @@
         )
         and cs.tenant_id_ = #{tenantId}
         AND (cs.del_flag_ IS NULL OR cs.del_flag_=0)
-        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cs.group_type_ != 'LIVE'
+        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
     </select>
 
     <select id="queryStudentCoursesTimesOfTomorrow" resultMap="Mapper">

+ 1 - 1
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -400,7 +400,7 @@ public class RoomServiceImpl implements RoomService {
 
         DateTime time = DateTime.parse(liveStartTime, DateTimeFormat.forPattern(DateUtil.DEFAULT_PATTERN + " " + DateUtil.EXPANDED_TIME_FORMAT));
 
-        String roomUid = "LIVE-" + roomId + "-" + courseSchedule.getActualTeacherId().toString() + time.toDate().getTime();
+        String roomUid = "LIVE-" + roomId + "-" + courseSchedule.getActualTeacherId().toString()+"-" + time.toDate().getTime();
         ImLiveBroadcastRoom liveRoom = JSON.parseObject(vipGroup.getLiveConfigJson(), ImLiveBroadcastRoom.class);
 
         try {

+ 6 - 3
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherManageController.java

@@ -108,11 +108,14 @@ public class TeacherManageController extends BaseController {
 
     @ApiOperation(value = "根据群编号,获取群组基本信息")
     @GetMapping("/course/findGroupById")
-    public Object findGroupById(Integer groupId){
-        if(null == groupId){
+    public Object findGroupById(String imGroupId){
+        if(null == imGroupId){
             return failed("参数校验错误");
         }
-        return succeed(classGroupService.findGroupById(groupId));
+        if (imGroupId.contains("S") || imGroupId.contains("I")){
+            imGroupId = imGroupId.substring(1);
+        }
+        return succeed(classGroupService.findGroupById(Integer.parseInt(imGroupId)));
     }
 
     @ApiOperation(value = "根据群编号,获取群组所有成员基本信息")