浏览代码

Merge branch 'online1'

# Conflicts:
#	mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
Joburgess 4 年之前
父节点
当前提交
f546a1464b

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

@@ -6,7 +6,6 @@ import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.common.dal.BaseDAO;
-
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
@@ -1589,7 +1588,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      */
     List<Map<Integer, Integer>> queryHasReatClass(@Param("classGroupIds") Set<String> classGroupIds, @Param("teacherId") String teacherId);
 
-    
+
     /**
      * 查询班级未上的课程类型对应的时长
      * @param classGroupIdList
@@ -1605,6 +1604,8 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      */
     List<CourseRepeatCheckDto> getCourseRepeatCheckInfos();
 
+    CourseSchedule getLock (long courseId);
+
     /**
      * @describe 统计指定课程合并的课程数量
      * @author qnc99

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

@@ -3346,5 +3346,8 @@
         WHERE cs.class_group_id_ = #{classGroupId} AND CONCAT(cs.class_date_," ",cs.start_class_time_) > NOW()
         GROUP BY cs.group_type_
     </select>
+    <select id="getLock" resultMap="CourseSchedule">
+        SELECT * FROM course_schedule WHERE id_ = #{courseId} FOR UPDATE
+    </select>
 
 </mapper>

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

@@ -612,7 +612,8 @@
 			LEFT JOIN vip_group vg ON cssp.music_group_id_ = vg.id_
 			LEFT JOIN vip_group_category vgc ON vg.vip_group_category_id_ = vgc.id_
 		WHERE
-			cssp.user_id_ IN
+			cssp.group_type_ = 'VIP'
+			AND cssp.user_id_ IN
 			<foreach collection="userIds" item="userId" open="(" close=")" separator=",">
 				#{userId}
 			</foreach>

+ 3 - 0
mec-im/src/main/java/com/ym/dao/RoomDao.java

@@ -18,6 +18,9 @@ import java.util.List;
 public interface RoomDao extends JpaRepository<Room, Long> {
     Room findByRid(String rid);
 
+    @Query(value = "select * from rongyun_room where rid=?1 FOR UPDATE", nativeQuery = true)
+    Room findByLockRid(String rid);
+
     @Modifying
     int deleteByRid(String rid);
 

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

@@ -244,37 +244,35 @@ 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.findByRid(roomId);
         if (room == null) {
             //如果房间不存在,删除除了自己之外的其他用户
 //            roomMemberDao.deleteRoomMember(roomId,userId);
-            try {
-                saveRoom(roomId, roomId, curTime, display);
-            }catch (Exception e){
-                log.error("joinRoomSuccess saveRoom error: {}", e.getMessage());
-            }
+            saveRoom(roomId, roomId, curTime, display);
             IMApiResultInfo resultInfo = imHelper.createGroup(new String[]{userId}, roomId, roomId);
             if (!resultInfo.isSuccess()) {
                 log.error("joinRoomSuccess createGroup error: roomId={}, {}", roomId, resultInfo.getErrorMessage());
                 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();