Explorar o código

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
	mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java
zouxuan %!s(int64=2) %!d(string=hai) anos
pai
achega
334d015618

+ 111 - 173
.idea/httpRequests/http-requests-log.http

@@ -1,3 +1,114 @@
+GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
+Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-15T221721.200.json
+
+###
+
+GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
+Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-15T221523.200.json
+
+###
+
+GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
+Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-15T221236.200.json
+
+###
+
+GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
+Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-15T220649.200.json
+
+###
+
+GET http://127.0.0.1:9002/teacherCourseSchedule/getCourseSchedulesWithDate?date=2023-06-05 00:00:00
+Content-Type: application/json
+Authorization: bearer 4d8e23a1-3acd-42e4-a1ca-b4d595506d98
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-15T220555.200.json
+
+###
+
+GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
+Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-15T220546.200.json
+
+###
+
+GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
+Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-15T220439.200.json
+
+###
+
+GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
+Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-15T220236.200.json
+
+###
+
+GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
+Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-15T215903.200.json
+
+###
+
+GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
+Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-15T215426.200.json
+
+###
+
+GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
+Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-15T215131.200.json
+
+###
+
 POST https://online.lexiaoya.cn/api-backend/open/schoolTeacherStudent/importPlan?fileUrl=https://polestar-oss.oss-cn-shenzhen.aliyuncs.com/assets/excel/0614/0614单簧管导入表.xlsx
 Content-Length: 0
 Connection: Keep-Alive
@@ -507,176 +618,3 @@ Accept-Encoding: br,deflate,gzip,x-gzip
 
 ###
 
-GET http://127.0.0.1:9002/teacherCourseSchedule/findCourseAttendanceDetailHeadInfo?courseScheduleId=2002
-authorization: bearer 97fd8e85-bb3c-4967-8a07-47c44957f94a
-Content-Type: application/json
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-08T162615.200.json
-
-###
-
-POST http://127.0.0.1:9002/teacherCourseSchedule/liveCoursePage
-authorization: bearer fe63240c-4f7d-4b67-90f8-7d51eaafdfb7
-Content-Type: application/json
-Content-Length: 152
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "page": 1,
-  "rows": 10,
-//  "startTime": "2023-06-06 10:14:57",
-//  "endTime": "2023-06-08 10:14:57",
-//  "search": "",
-//  "status": "NOT_START"
-}
-
-<> 2023-06-08T162147.200.json
-
-###
-
-POST http://127.0.0.1:9002/teacherAttendance/getLiveCurrentCourseStudents
-authorization: bearer 97fd8e85-bb3c-4967-8a07-47c44957f94a
-Content-Type: application/json
-Content-Length: 70
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "courseScheduleId": 2001,
-  "status": "PURCHASE",
-  "search": ""
-}
-
-<> 2023-06-08T162015.200.json
-
-###
-
-POST http://127.0.0.1:9002/teacherAttendance/getLiveCurrentCourseStudents
-authorization: bearer 97fd8e85-bb3c-4967-8a07-47c44957f94a
-Content-Type: application/json
-Content-Length: 67
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "courseScheduleId": 2001,
-  "status": "SHARE",
-  "search": ""
-}
-
-<> 2023-06-08T161954.200.json
-
-###
-
-GET http://127.0.0.1:8005/task/closeLiveCourseRoom
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-08T161900.200.json
-
-###
-
-GET http://127.0.0.1:8005/task/closeLiveCourseRoom
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-08T161723.200.json
-
-###
-
-GET http://127.0.0.1:8005/task/closeLiveCourseRoom
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-08T161420.200.json
-
-###
-
-POST http://127.0.0.1:9002/teacherCourseSchedule/liveCoursePage
-authorization: bearer 1238347b-3b06-444e-9d35-d122639121ad
-Content-Type: application/json
-Content-Length: 152
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "page": 1,
-  "rows": 10,
-//  "startTime": "2023-06-06 10:14:57",
-//  "endTime": "2023-06-08 10:14:57",
-//  "search": "",
-//  "status": "NOT_START"
-}
-
-<> 2023-06-08T155851.200.json
-
-###
-
-POST http://127.0.0.1:9002/teacherCourseSchedule/liveCoursePage
-authorization: bearer 1238347b-3b06-444e-9d35-d122639121ad
-Content-Type: application/json
-Content-Length: 152
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "page": 1,
-  "rows": 10,
-//  "startTime": "2023-06-06 10:14:57",
-//  "endTime": "2023-06-08 10:14:57",
-//  "search": "",
-//  "status": "NOT_START"
-}
-
-<> 2023-06-08T155845.200.json
-
-###
-
-POST http://127.0.0.1:9002/teacherAttendance/getLiveCurrentCourseStudents
-authorization: bearer 97fd8e85-bb3c-4967-8a07-47c44957f94a
-Content-Type: application/json
-Content-Length: 70
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "courseScheduleId": 2001,
-//  "status": "NORMAL",
-  "search": ""
-}
-
-<> 2023-06-08T155815.200.json
-
-###
-
-POST http://127.0.0.1:9002/teacherAttendance/getLiveCurrentCourseStudents
-authorization: bearer 97fd8e85-bb3c-4967-8a07-47c44957f94a
-Content-Type: application/json
-Content-Length: 70
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "courseScheduleId": 2001,
-//  "status": "NORMAL",
-  "search": ""
-}
-
-<> 2023-06-08T155623.200.json
-
-###
-

+ 19 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -6391,7 +6391,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		// 课程时间长计算
 		List<CourseScheduleWrapper.CourseScheduleTime> courseScheduleTimes = Lists.newArrayList();
 		// 直播课关联直播间编号
-		String liveRoomId = getCourseScheduleLiveRoomId(courseSchedule, continueCourseTime, newCourseSchedules, courseScheduleTimes);
+		String liveRoomId = getCourseScheduleLiveRoomId(courseSchedule, continueCourseTime, newCourseSchedules, courseScheduleTimes, true);
 
 		// 定时任务更新课程状态为进行中,判断当前课程状态是否匹配
 		/*int studentRemindTime = Integer.parseInt(sysConfigService.findByParamName(SysConfigService.LIVE_CLASS_START_REMIND_TIME).getParanValue());
@@ -6443,7 +6443,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	private String getCourseScheduleLiveRoomId(CourseSchedule courseSchedule,
 											   String continueCourseTime,
 											   List<CourseSchedule> newCourseSchedules,
-											   List<CourseScheduleWrapper.CourseScheduleTime> courseScheduleTimes) {
+											   List<CourseScheduleWrapper.CourseScheduleTime> courseScheduleTimes,
+											   Boolean updateFlag) {
 		String liveRoomId;
 		// 课程开始时间
 		courseSchedule.setStartClassTime(getDateTime(courseSchedule.getClassDate(), courseSchedule.getStartClassTime()).toDate());
@@ -6480,6 +6481,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			if (item.getId().longValue() == courseSchedule.getId()) {
 				continue;
 			}
+			// 重置连堂状态
+			item.setContinuousCourse(false);
 
 			schedule = JSON.parseObject(JSON.toJSONString(item), CourseSchedule.class);
 			if (item.getEndClassTime().getTime() <= courseSchedule.getStartClassTime().getTime()) {
@@ -6491,6 +6494,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			}
 		}
 
+		courseSchedule.setContinuousCourse(false);
 		// 当前课程之前连堂课
 		beforeCourse.add(JSON.parseObject(JSON.toJSONString(courseSchedule), CourseSchedule.class));
 		// 当前课程之后连堂课
@@ -6537,24 +6541,25 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 			// 获取连堂课第一节信息
 			CourseSchedule finalCourseSchedule = newCourseSchedules.get(0);
-			CompletableFuture.runAsync(() -> {
 
-				List<Long> collect = newCourseSchedules.stream()
-						.map(CourseSchedule::getId)
-						.distinct().collect(Collectors.toList());
-				try {
+			List<Long> collect = newCourseSchedules.stream()
+					.map(CourseSchedule::getId)
+					.distinct().collect(Collectors.toList());
+			try {
 
+				if (Optional.ofNullable(updateFlag).orElse(true)) {
 					// 关联直播间编号
 					courseScheduleDao.batchUpdateLiveRoomId(collect, finalCourseSchedule.getLiveRoomId());
+				}
 
-					if (CollectionUtils.size(collect) > 1) {
-						collect = newCourseSchedules.subList(0, newCourseSchedules.size() - 1).stream()
-								.map(CourseSchedule::getId)
-								.distinct().collect(Collectors.toList());
+				if (CollectionUtils.size(collect) > 1) {
+					collect = newCourseSchedules.subList(0, newCourseSchedules.size() - 1).stream()
+							.map(CourseSchedule::getId)
+							.distinct().collect(Collectors.toList());
 
-						// 更新连堂课状态
-						courseScheduleDao.batchUpdateContinuousCourse(collect, true);
-					}
+					// 更新连堂课状态
+					courseScheduleDao.batchUpdateContinuousCourse(collect, true);
+				}
 
 				} catch (Exception e) {
 					log.error("getLiveCourseScheduleTime courseScheduleIds={}", collect, e);

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -1891,6 +1891,16 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         roomMember.setLiveRoomStatus(1);
         roomMember.setMicrophoneFlag(microphoneFlag);
 
+        ImLiveBroadcastRoomMember liveRoomMember = liveBroadcastRoomMemberService.lambdaQuery()
+                .eq(ImLiveBroadcastRoomMember::getTenantId, userInfo.getTenantId())
+                .eq(ImLiveBroadcastRoomMember::getRoomUid, imLiveBroadcastRoomVo.getRoomUid())
+                .eq(ImLiveBroadcastRoomMember::getUserId, userInfo.getUserId())
+                .list().stream().findFirst().orElse(null);
+        if (Objects.nonNull(liveRoomMember)) {
+           return userInfo;
+        }
+
+
         // 保存直播间用户信息
         liveBroadcastRoomMemberService.save(roomMember);
 

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

@@ -114,7 +114,6 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
         }
         Integer tenantId = TenantContextHolder.getTenantId();
         Date date = new Date();
-        SysConfig attendanceTimeRange;
         if (courseSchedule.getGroupType().equals(GroupType.MUSIC)) {
             TeacherAttendance teacherAttendanceInfo = teacherAttendanceDao.findByTeacherAttendanceInfo(sysUser.getId().longValue(), courseSchedule.getId());
             if(Objects.isNull(teacherAttendanceInfo)||Objects.isNull(teacherAttendanceInfo.getSignInStatus())){
@@ -185,6 +184,10 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
                     studentAttendanceInfo.setSignInTime(courseSchedule.getStartClassTime());
                     studentAttendanceInfo.setSignOutTime(courseSchedule.getEndClassTime());
                 }
+                if (studentAttendanceInfo.getStatus() == StudentAttendanceStatusEnum.LATE) {
+                    studentAttendanceInfo.setSignInTime(date);
+                    studentAttendanceInfo.setSignOutTime(courseSchedule.getEndClassTime());
+                }
                 studentAttendanceInfo.setNormalRemind(remindNum>0?1:0);
                 studentAttendanceDao.insert(studentAttendanceInfo);
             } else {

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

@@ -898,7 +898,7 @@ public class StudentManageServiceImpl implements StudentManageService {
         Map<String, Integer> sum = new HashMap<>(7);
         Integer studentNum = scheduleStudentPaymentDao.countStudentNum(courseScheduleId);
         sum.put("studentNum", studentNum);
-        Integer signInNum = studentManageDao.countStudentSignInNum(courseScheduleId, "NORMAL");
+        Integer signInNum = studentManageDao.countStudentSignInNum(courseScheduleId, "NORMAL,LATE");
         sum.put("signInNum", signInNum);
         Integer leaveNum = studentManageDao.countStudentSignInNum(courseScheduleId, "LEAVE");
         sum.put("leaveNum", leaveNum);

+ 3 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentVisitServiceImpl.java

@@ -300,11 +300,9 @@ public class StudentVisitServiceImpl extends BaseServiceImpl<Integer, StudentVis
                             sb.append("第" + rowNum).append("行数据导入失败:问题状态不可为空;");
                             continue valueIsNull;
                         } else {
-                            for (HumanCostTypeEnum costTypeEnum : HumanCostTypeEnum.values()) {
-                                if (costTypeEnum.getMsg().equals(row.get(s).toString())) {
-                                    objectMap.put(columnValue, costTypeEnum);
-                                    break;
-                                }
+                            if ("已解决".equals(row.get(s).toString())) {
+                                objectMap.put(columnValue, 1);
+                                break;
                             }
                         }
                     }

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

@@ -5047,41 +5047,45 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
                 continue;
             }
 
-            // 通知老师
-            Integer actualTeacherId = courseSchedule.getActualTeacherId();
-            if (actualTeacherId != null) {
-                Map<Integer, String> userMap = new HashMap<>();
-                userMap.put(actualTeacherId, actualTeacherId.toString());
-
-                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.JIGUANG_LIVE_COURSE_START,
-                        userMap, null, 0,teacherUrl , "TEACHER", classGroup.getName());
-            }
-
-            // 通知学生
-            List<SimpleUserDto> courseStudents = courseScheduleStudentPaymentService.getCourseStudents(Lists.newArrayList(courseSchedule.getId()));
-            if (!CollectionUtils.isEmpty(courseStudents)) {
-                Map<Integer, String> userMap = new HashMap<>();
-                courseStudents.forEach(data -> {
-                    userMap.put(data.getUserId(), data.getUserId().toString());
-                });
-
-                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.JIGUANG_LIVE_COURSE_START_STUDENT,
-                        userMap, null, 0, studentUrl, "STUDENT", classGroup.getName());
-            }
             ImLiveBroadcastRoomVo imLiveBroadcastRoomVo = imLiveBroadcastRoomService.queryRoomInfo(courseSchedule.getLiveRoomId());
+            if (Objects.isNull(imLiveBroadcastRoomVo)) {
+                continue;
+            }
+
+            try {
+                // 通知老师
+                Integer actualTeacherId = courseSchedule.getActualTeacherId();
+                if (actualTeacherId != null) {
+                    Map<Integer, String> userMap = new HashMap<>();
+                    userMap.put(actualTeacherId, actualTeacherId.toString());
+
+                    sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.JIGUANG_LIVE_COURSE_START,
+                            userMap, null, 0,teacherUrl , "TEACHER", classGroup.getName());
+                }
 
-            // im消息
-            imUrl = MessageFormatter.arrayFormat(imUrl,courseSchedule.getId(), imLiveBroadcastRoomVo.getSubjectId());
-            sysMessageService.batchSendImGroupMessage(MessageTypeEnum.IM_LIVE_COURSE_START_GROUP, courseSchedule.getActualTeacherId().toString(), imUrl,
-                    new String[]{classGroup.getId().toString()},null, classGroup.getName());
+                // 通知学生
+                List<SimpleUserDto> courseStudents = courseScheduleStudentPaymentService.getCourseStudents(Lists.newArrayList(courseSchedule.getId()));
+                if (!CollectionUtils.isEmpty(courseStudents)) {
+                    Map<Integer, String> userMap = new HashMap<>();
+                    courseStudents.forEach(data -> {
+                        userMap.put(data.getUserId(), data.getUserId().toString());
+                    });
 
-        }
+                    sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.JIGUANG_LIVE_COURSE_START_STUDENT,
+                            userMap, null, 0, studentUrl, "STUDENT", classGroup.getName());
+                }
+                // im消息
+                imUrl = MessageFormatter.arrayFormat(imUrl,courseSchedule.getId(), imLiveBroadcastRoomVo.getSubjectId());
+                sysMessageService.batchSendImGroupMessage(MessageTypeEnum.IM_LIVE_COURSE_START_GROUP, courseSchedule.getActualTeacherId().toString(), imUrl,
+                        new String[]{classGroup.getId().toString()},null, classGroup.getName());
+            } catch (Exception e) {
+                log.error("直播课程提醒失败", e);
+            }
 
-        // id 集合
-        List<Long> ids = courseSchedules.stream().map(CourseSchedule::getId).collect(Collectors.toList());
+            // 更新通知状态
+            courseScheduleDao.updateRemindStatus(Lists.newArrayList(courseSchedule.getId()));
+        }
 
-        // 更新通知状态
-        courseScheduleDao.updateRemindStatus(ids);
         CompletableFuture.runAsync(() -> {
             for (CourseSchedule courseSchedule : courseSchedules) {
                 vipGroupService.createVipGroupLiveRoom(courseSchedule.getId().toString(), courseSchedule);

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

@@ -1122,6 +1122,6 @@
 	</select>
 
 	<select id="getByUserIdAndCourseId" resultMap="CourseScheduleStudentPayment">
-        SELECT * FROM `course_schedule_student_payment` WHERE `user_id_` = #{userId} AND `course_schedule_id_` = #{courseScheduleId}
+        SELECT * FROM `course_schedule_student_payment` WHERE `user_id_` = #{userId} AND `course_schedule_id_` = #{courseScheduleId} limit 1
     </select>
 </mapper>

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

@@ -197,6 +197,6 @@
     <select id="getByUserIdAndCourseId" resultMap="courseShare">
         SELECT *
         FROM course_share
-        WHERE user_id_ = #{studentId} AND course_id_ = #{courseScheduleId}
+        WHERE user_id_ = #{studentId} AND course_id_ = #{courseScheduleId} limit 1
     </select>
 </mapper>

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

@@ -805,7 +805,7 @@
         GROUP BY su.id_
     </select>
     <select id="countStudentSignInNum" resultType="java.lang.Integer">
-        SELECT COUNT(id_) FROM student_attendance WHERE course_schedule_id_ = #{courseScheduleId} AND status_ = #{status}
+        SELECT COUNT(id_) FROM student_attendance WHERE course_schedule_id_ = #{courseScheduleId} AND FIND_IN_SET(status_,#{status})
     </select>
     <select id="countHomeworkNum" resultType="java.lang.Integer">
         SELECT COUNT(id_) FROM student_course_homework WHERE course_schedule_id_ = #{courseScheduleId} AND status_ = 1