|  | @@ -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())
 |