| 
					
				 | 
			
			
				@@ -307,20 +307,14 @@ public class RoomServiceImpl implements RoomService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             roomMember = saveRoomMember(roomId,userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String joinSuccessKey = "joinRoomSuccess"+ roomId + userId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(redisTemplate.hasKey(joinSuccessKey)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //兼容旧版本,防止重复调用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            redisTemplate.delete(joinSuccessKey); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Boolean aBoolean = redisTemplate.opsForValue().setIfAbsent(joinSuccessKey, roomId, 2l, TimeUnit.SECONDS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(aBoolean){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             RoleEnum roleEnum = RoleEnum.getEnumByValue(roomMember.getRole()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if(roleEnum == RoleTeacher && StringUtils.isNotEmpty(deviceNum)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 signInSuccess(roomMember,deviceNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String leaveSuccessKey = "leaveRoomSuccess"+ roomId + userId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(redisTemplate.hasKey(leaveSuccessKey)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            redisTemplate.delete(leaveSuccessKey); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        redisTemplate.opsForValue().setIfAbsent(joinSuccessKey,roomId,2l,TimeUnit.SECONDS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         RoleEnum roleEnum = RoleEnum.getEnumByValue(roomMember.getRole()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         CourseSchedule schedule = courseScheduleDao.getLock(Long.parseLong(roomId.substring(1))); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -453,8 +447,8 @@ public class RoomServiceImpl implements RoomService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String leaveSuccessKey = "leaveRoomSuccess"+ roomId + userId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(redisTemplate.hasKey(leaveSuccessKey)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            redisTemplate.delete(leaveSuccessKey); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Boolean aBoolean = redisTemplate.opsForValue().setIfAbsent(leaveSuccessKey, roomId, 2, TimeUnit.SECONDS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(aBoolean){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (StringUtils.isNotEmpty(deviceNum)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //如果设备号不为空,更新设备号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if(roleEnum == RoleTeacher){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -463,11 +457,6 @@ public class RoomServiceImpl implements RoomService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String joinSuccessKey = "joinRoomSuccess"+ roomId + userId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(redisTemplate.hasKey(joinSuccessKey)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            redisTemplate.delete(joinSuccessKey); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        redisTemplate.opsForValue().setIfAbsent(leaveSuccessKey,roomId,2,TimeUnit.SECONDS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String username; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         SysUser sysUser = sysUserFeignService.queryUserById(parseInt); 
			 |