| 
					
				 | 
			
			
				@@ -5,14 +5,10 @@ import com.microsvc.toolkit.middleware.rtc.RTCRoomPluginService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.microsvc.toolkit.middleware.rtc.enums.EMemberAction; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.microsvc.toolkit.middleware.rtc.impl.TencentCloudRTCPlugin; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.microsvc.toolkit.middleware.rtc.message.RTCRoomMessage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.yonge.cooleshow.auth.api.entity.SysUser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dto.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.yonge.cooleshow.biz.dal.entity.CourseSchedule; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.entity.ImNetworkRoom; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.entity.ImNetworkRoomMember; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.enums.ImNetworkRoomMemberChangedEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.yonge.cooleshow.biz.dal.enums.RoleEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.yonge.cooleshow.biz.dal.service.ImGroupService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.service.ImNetworkRoomMemberService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.service.ImNetworkRoomMemberStatusService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.service.ImService; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -21,6 +17,7 @@ import org.slf4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.slf4j.LoggerFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.Date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -80,7 +77,7 @@ public class ImServiceImpl implements ImService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ImNetworkRoomMemberChangedMessage msg = new ImNetworkRoomMemberChangedMessage(roomMember, ImNetworkRoomMemberChangedEnum.JOIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //获取节拍器信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ImNetworkCustomMessage imNetworkCustomMessage = imNetworkRoomMemberStatusService.getMemberMidi(roomMember.getRoomId(), roomMember.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            msg.setMetronomeSwitch(imNetworkCustomMessage.getEnable()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            msg.setMetronomeSwitch(imNetworkCustomMessage.isEnable()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //获取伴奏信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ImNetworkRoomMusicSheetDownloadData musicSheetDownloadData = imNetworkRoomMemberStatusService.getMemberExamSong(roomMember.getRoomId(), roomMember.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             msg.setExamSongSwitch(musicSheetDownloadData.getEnable()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -120,6 +117,43 @@ public class ImServiceImpl implements ImService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void sendImPlayMidiMessage(ImNetworkCustomMessage customMessage) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        log.info("sendImPlayMidiMessage: customMessage={}", customMessage); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ImNetworkMetronomeMessage displayMessage = new ImNetworkMetronomeMessage(customMessage); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ImNetworkRoomMember roomMember = imNetworkRoomMemberService.lambdaQuery().eq(ImNetworkRoomMember::getUserId, customMessage.getCurrentUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(ImNetworkRoomMember::getRoomId, customMessage.getRoomId()).last("LIMIT 1").one(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 获取RTC服务提供方 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        RTCRoomPluginService pluginService = rtcRoomPluginContext.getPluginService(customMessage.getServiceProvider()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(pluginService.pluginName())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 腾讯云RTC服务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            RTCRoomMessage.MessageContent messageContent = RTCRoomMessage.MessageContent 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .enable(customMessage.isEnable()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .rate(customMessage.getRate()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .customType(customMessage.getCustomType()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .userId(customMessage.getUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .playVolume(customMessage.getPlayVolume()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .sendUserInfo(getSendUser(roomMember)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            RTCRoomMessage roomMessage = RTCRoomMessage.builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .objectName(RTCRoomMessage.PLAY_MIDI_MESSAGE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .content(messageContent) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .toChatRoomId(roomMember.getRoomId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .fromUserId(roomMember.getImUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .isIncludeSender(1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .isPersisted(1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pluginService.sendChatRoomMessage(roomMessage); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            imHelper.publishMessage(roomMember.getImUserId(), roomMember.getRoomId(), displayMessage, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private RTCRoomMessage.MessageUser getSendUser(ImNetworkRoomMember roomMember) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         RTCRoomMessage.MessageUser build = RTCRoomMessage.MessageUser.builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .sendUserId(roomMember.getImUserId()) 
			 |