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