zouxuan 3 năm trước cách đây
mục cha
commit
c4c2545d03

+ 13 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -1533,10 +1533,22 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @param teacherId
      * @return
      */
-    CourseSchedule getLastCourse(@Param("classGroupId") Integer classGroupId,
+    CourseSchedule getFirstCourse(@Param("classGroupId") Integer classGroupId,
                                  @Param("startTime") String startTime,
                                  @Param("teacherId") Integer teacherId,
                                  @Param("continueCourseTime") String continueCourseTime);
+    /**
+     * 获取下一次连堂课
+     *
+     * @param classGroupId
+     * @param endTime
+     * @param teacherId
+     * @return
+     */
+    CourseSchedule getLastCourse(@Param("classGroupId") Integer classGroupId,
+                                 @Param("endTime") String endTime,
+                                 @Param("teacherId") Integer teacherId,
+                                 @Param("continueCourseTime") String continueCourseTime);
 
     /**
      * 获取课程组已结束最后一节课时间

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

@@ -3233,8 +3233,8 @@
         GROUP BY cssp.user_id_;
     </select>
 
-    <select id="getLastCourse" resultMap="CourseSchedule">
-        SELECT cs.* FROM course_schedule cs
+    <select id="getFirstCourse" resultMap="CourseSchedule">
+        SELECT <include refid="resultSql"/> FROM course_schedule cs
         WHERE cs.class_group_id_ = #{classGroupId}
         AND TIMESTAMPDIFF(MINUTE, CONCAT(cs.class_date_," ",cs.end_class_time_),#{startTime}) &lt;= #{continueCourseTime}
         AND TIMESTAMPDIFF(MINUTE, CONCAT(cs.class_date_," ",cs.end_class_time_),#{startTime}) >= 0
@@ -3242,6 +3242,15 @@
         ORDER BY cs.class_date_ DESC,cs.end_class_time_ DESC
         LIMIT 1
     </select>
+    <select id="getLastCourse" resultMap="CourseSchedule">
+        SELECT <include refid="resultSql"/> FROM course_schedule cs
+        WHERE cs.class_group_id_ = #{classGroupId}
+        AND TIMESTAMPDIFF(MINUTE, #{endTime},CONCAT(cs.class_date_," ",cs.start_class_time_)) &lt;= #{continueCourseTime}
+        AND TIMESTAMPDIFF(MINUTE, #{endTime},CONCAT(cs.class_date_," ",cs.start_class_time_)) >= 0
+        AND cs.actual_teacher_id_ = #{teacherId} AND cs.pre_course_flag_ = 0
+        ORDER BY cs.class_date_ DESC,cs.start_class_time_ DESC
+        LIMIT 1
+    </select>
     <select id="findLastOverTime" resultType="java.util.Map">
         SELECT cs.music_group_id_ 'key',MAX(CONCAT(cs.class_date_,' ',cs.start_class_time_)) 'value'
         FROM course_schedule cs
@@ -3250,6 +3259,7 @@
             #{item}
         </foreach>
         GROUP BY cs.music_group_id_
+        LIMIT 1
     </select>
     <select id="findNotStartCourseByIds" resultType="java.lang.Long">
         SELECT cs.id_ FROM course_schedule cs WHERE cs.id_ IN

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

@@ -93,7 +93,7 @@
   </select>
   <select id="getConfigValue" resultType="java.lang.String">
     SELECT CASE WHEN stc.id_ IS NULL THEN sc.paran_value_ ELSE stc.param_value_ END paran_value_ FROM sys_config sc
-    LEFT JOIN sys_tenant_config stc ON sc.id_ = stc.sys_config_id_ AND sc.group_ = #{tenantId}
+    LEFT JOIN sys_tenant_config stc ON sc.id_ = stc.sys_config_id_ AND stc.tenant_id_ = #{tenantId}
     WHERE sc.group_ IS NOT NULL AND sc.group_ != '' AND sc.param_name_ = #{paramName}
   </select>
   <select id="queryAllMap" resultType="java.util.Map">

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

@@ -37,7 +37,6 @@ import com.ym.utils.DateTimeUtils;
 import com.ym.utils.IdentifierUtils;
 import com.ym.whiteboard.WhiteBoardHelper;
 import lombok.extern.slf4j.Slf4j;
-import lombok.val;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
@@ -115,7 +114,7 @@ public class RoomServiceImpl implements RoomService {
         while (true){
             String classDate = DateUtil.format(schedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
             String startClassTime = DateUtil.format(schedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
-            schedule = courseScheduleDao.getLastCourse(schedule.getClassGroupId(),classDate + " " + startClassTime,schedule.getActualTeacherId(),continueCourseTime);
+            schedule = courseScheduleDao.getFirstCourse(schedule.getClassGroupId(),classDate + " " + startClassTime,schedule.getActualTeacherId(),continueCourseTime);
             if(schedule != null){
                 roomId = schedule.getId().toString();
             }else {
@@ -125,6 +124,27 @@ public class RoomServiceImpl implements RoomService {
         return Integer.parseInt(roomId);
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    public String getCloseNetworkRoomTime(CourseSchedule courseSchedule,String continueCourseTime){
+        String autoCloseNetworkRoomTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.COURSE_AFTER_BUFFER_TIME,courseSchedule.getTenantId());
+        if(StringUtils.isEmpty(autoCloseNetworkRoomTime)){
+            autoCloseNetworkRoomTime = "15";
+        }
+        CourseSchedule schedule = courseSchedule;
+        //如果当前课程是连堂课,那么获取第一节课的课程编号
+        while (true){
+            String classDate = DateUtil.format(schedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
+            String endClassTime = DateUtil.format(schedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+            schedule = courseScheduleDao.getLastCourse(schedule.getClassGroupId(),classDate + " " + endClassTime,schedule.getActualTeacherId(),continueCourseTime);
+            if(schedule != null){
+                autoCloseNetworkRoomTime = DateUtil.minutesBetween(new Date(),schedule.getEndClassTime()) + "";
+            }else {
+                break;
+            }
+        }
+        return autoCloseNetworkRoomTime;
+    }
+
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     @Override
     public BaseResponse joinRoom(String roomId) throws Exception {
@@ -163,21 +183,17 @@ public class RoomServiceImpl implements RoomService {
             continueCourseTime = "5";
         }
 
-        String autoCloseNetworkRoomTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.COURSE_AFTER_BUFFER_TIME,courseSchedule.getTenantId());
-        if(StringUtils.isEmpty(autoCloseNetworkRoomTime)){
-            autoCloseNetworkRoomTime = "15";
-        }
         RoomResult roomResult = new RoomResult();
-        roomResult.setAutoCloseNetworkRoomTime(autoCloseNetworkRoomTime);
+        roomResult.setAutoCloseNetworkRoomTime(this.getCloseNetworkRoomTime(courseSchedule,continueCourseTime));
         CourseSchedule schedule = courseSchedule;
         //如果当前课程是连堂课,那么获取第一节课的课程编号
         while (true){
             String classDate = DateUtil.format(schedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
             String startClassTime = DateUtil.format(schedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
-            schedule = courseScheduleDao.getLastCourse(schedule.getClassGroupId(),classDate + " " + startClassTime,schedule.getActualTeacherId(),continueCourseTime);
+            schedule = courseScheduleDao.getFirstCourse(schedule.getClassGroupId(),classDate + " " + startClassTime,schedule.getActualTeacherId(),continueCourseTime);
             if(schedule != null){
                 roomId = schedule.getId().toString();
-                roomResult.setAutoCloseFlag(false);
+//                roomResult.setAutoCloseFlag(false);
             }else {
                 break;
             }