Browse Source

Merge branch 'online1' of http://git.dayaedu.com/yonge/mec into online_music_library

zouxuan 4 years ago
parent
commit
b125b3a82b

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

@@ -1583,4 +1583,6 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return java.util.List<com.ym.mec.biz.dal.dto.CourseRepeatCheckDto>
      */
     List<CourseRepeatCheckDto> getCourseRepeatCheckInfos();
+
+    CourseSchedule getLock (long courseId);
 }

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

@@ -3338,5 +3338,8 @@
         LEFT JOIN course_schedule_teacher_salary csts ON cs.id_=csts.course_schedule_id_
         WHERE cs.organ_id_!=41 AND cs.del_flag_=0 AND cs.create_time_>'2020-01-01 00:00:00' AND cs.create_time_&lt;'3000-01-01 00:00:00'
     </select>
+    <select id="getLock" resultMap="CourseSchedule">
+        SELECT * FROM course_schedule WHERE id_ = #{courseId} FOR UPDATE
+    </select>
 
 </mapper>

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

@@ -244,23 +244,21 @@ public class RoomServiceImpl implements RoomService {
         if(roomMember == null){
             return ;
         }
+
         log.info("joinRoomSuccess : roomId={}, userId={}", roomId, userId);
         RoleEnum roleEnum = RoleEnum.getEnumByValue(roomMember.getRole());
-        CourseSchedule schedule = courseScheduleDao.get(Long.parseLong(roomId.substring(1)));
+        CourseSchedule schedule = courseScheduleDao.getLock(Long.parseLong(roomId.substring(1)));
 
         String display = "";
         if(roleEnum == RoleTeacher){
             //如果是老师加入房间,调整节拍器状态
             courseScheduleStudentPaymentDao.adjustPlayMidi(schedule.getId(),null,null);
             display = "display://type=1?userId=" + userId + "?uri=";
-            updateDisplay(roomId, userId, display, 0);
         }else if (roleEnum == RoleEnum.RoleAssistant){
             display = "display://type=0?userId=" + userId + "?uri=";
-            updateDisplay(roomId, userId, display, 0);
         }
-
         Date curTime = DateTimeUtils.currentUTC();
-        Room room = roomDao.findByLockRid(roomId);
+        Room room = roomDao.findByRid(roomId);
         if (room == null) {
             //如果房间不存在,删除除了自己之外的其他用户
 //            roomMemberDao.deleteRoomMember(roomId,userId);
@@ -271,6 +269,10 @@ public class RoomServiceImpl implements RoomService {
                 throw new ApiException(ErrorEnum.ERR_CREATE_ROOM_ERROR, resultInfo.getErrorMessage());
             }
         }
+        if(roleEnum == RoleTeacher || roleEnum == RoleEnum.RoleAssistant){
+            updateDisplay(roomId, userId, display, 0);
+        }
+
         UserInfo userInfo = userDao.findByUid(userId);
         if (userInfo == null) {
             userInfo = new UserInfo();