shangke 2 yıl önce
ebeveyn
işleme
140e60d1ba

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupDao.java

@@ -369,4 +369,11 @@ public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
 
     int countStudentUseingActivityNum(@Param("vipGroupActivityId") Integer vipGroupActivityId,
                                     @Param("studentId") Integer studentId);
+
+    /**
+     * 获取课程人数
+     * @param groupId 课程类型ID
+     * @return int
+     */
+    int getCourseStudentNumsByGroupId(@Param("groupId") Long groupId);
 }

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -1060,4 +1060,10 @@
             AND cg.del_flag_!=1
             AND cgsm.user_id_=#{studentId}
     </select>
+
+    <!--获取课程人数-->
+    <select id="getCourseStudentNumsByGroupId" resultType="java.lang.Integer">
+        SELECT t2.student_num_ FROM vip_group t1 JOIN vip_group_category t2 ON (t1.vip_group_category_id_ = t2.id_) WHERE t1.id_ = #{groupId}
+    </select>
+    <!--获取课程人数-->
 </mapper>

+ 2 - 0
mec-im/src/main/java/com/ym/pojo/RoomResult.java

@@ -45,6 +45,8 @@ public class RoomResult {
     private @Getter @Setter String groupId;
     @ApiModelProperty("服务提供商")
     private @Getter @Setter String serviceProvider;
+    @ApiModelProperty("课程人数")
+    private @Getter @Setter Integer studentNums;
 
     public RoomResult rtcRoomConfig(RTCRoomConfig rtcRoomConfig) {
         this.rtcRoomConfig = rtcRoomConfig;

+ 65 - 16
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -8,7 +8,6 @@ import com.google.common.collect.Maps;
 import com.microsvc.toolkit.middleware.rtc.RTCRoomPluginContext;
 import com.microsvc.toolkit.middleware.rtc.RTCRoomPluginService;
 import com.microsvc.toolkit.middleware.rtc.enums.EMemberAction;
-import com.microsvc.toolkit.middleware.rtc.enums.EMemberRole;
 import com.microsvc.toolkit.middleware.rtc.impl.TencentCloudRTCPlugin;
 import com.microsvc.toolkit.middleware.rtc.message.ImGroupMemberWrapper;
 import com.microsvc.toolkit.middleware.rtc.message.RTCRoomMessage;
@@ -117,6 +116,8 @@ public class RoomServiceImpl implements RoomService {
     private RedisTemplate<String, String> redisTemplate;
     @Autowired
     private RTCRoomPluginContext rtcRoomPluginContext;
+    @Autowired
+    private VipGroupDao vipGroupDao;
 
     @Override
     public Integer getCurrentCourseId(String roomId) {
@@ -337,6 +338,16 @@ public class RoomServiceImpl implements RoomService {
         // RTC服务提供方
         roomResult.setServiceProvider(Optional.ofNullable(courseSchedule.getServiceProvider()).orElse("rongCloud"));
 
+        // 课程人数
+        {
+            int studentNums = 1;
+            // 网管课
+            if (courseSchedule.getGroupType() == GroupType.VIP) {
+                studentNums = vipGroupDao.getCourseStudentNumsByGroupId(Long.parseLong(courseSchedule.getMusicGroupId()));
+            }
+            roomResult.setStudentNums(studentNums);
+        }
+
         List<RoomMember> roomMemberList = roomMemberDao.findByRid(roomId);
         if (roomMemberList != null && roomMemberList.size() > 0) {
             Set<String> userIds = roomMemberList.stream().map(e -> e.getUid()).collect(Collectors.toSet());
@@ -635,7 +646,7 @@ public class RoomServiceImpl implements RoomService {
         return roomMember;
     }
 
-    public String getRoomServiceProviter(String roomId ) {
+    public String getRoomServiceProvider(String roomId ) {
         Integer firstCourseId = Integer.parseInt(roomId.substring(1));
         CourseSchedule courseSchedule = courseScheduleDao.get(firstCourseId.longValue());
         return courseSchedule.getServiceProvider();
@@ -904,7 +915,7 @@ public class RoomServiceImpl implements RoomService {
 
         RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
 
-        String roomServiceProviter = getRoomServiceProviter(roomId);
+        String roomServiceProviter = getRoomServiceProvider(roomId);
         if (displayEnum.equals(DisplayEnum.None)) {
             roomDao.updateDisplayByRid(roomId, "");
             if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(roomServiceProviter)) {
@@ -1065,7 +1076,7 @@ public class RoomServiceImpl implements RoomService {
 
             RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
 
-            String roomServiceProviter = getRoomServiceProviter(roomId);
+            String roomServiceProviter = getRoomServiceProvider(roomId);
             if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(roomServiceProviter)) {
 
                 sendDisplayMessage(display, roomMember);
@@ -1103,7 +1114,7 @@ public class RoomServiceImpl implements RoomService {
 
             RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
 
-            String roomServiceProviter = getRoomServiceProviter(roomId);
+            String roomServiceProviter = getRoomServiceProvider(roomId);
             if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(roomServiceProviter)) {
 
                 sendDisplayMessage(display, roomMember);
@@ -1237,6 +1248,8 @@ public class RoomServiceImpl implements RoomService {
                 .enable(enable)
                 .targetId(userId)
                 .targetName(authUser.getUsername())
+                .songId(Optional.ofNullable(data.getMusicScoreAccompanimentId()).map(String::valueOf).orElse(null))
+                .songVolume(data.getSoundVolume())
                 .sendUserInfo(RTCRoomMessage.MessageUser.builder()
                         .sendUserId(data.getSendUserId())
                         .sendUserName(data.getSendUserName())
@@ -1258,7 +1271,7 @@ public class RoomServiceImpl implements RoomService {
 
         // 腾讯云消息推送
         RTCRoomMessage message = RTCRoomMessage.builder()
-                .objectName(RTCRoomMessage.DEVICE_MESSAGE)
+                .objectName(RTCRoomMessage.CONTROL_DEVICE_NOTIFY_MESSAGE)
                 .fromUserId(userId)
                 .toChatRoomId(roomId)
                 .content(messageContent)
@@ -1284,7 +1297,7 @@ public class RoomServiceImpl implements RoomService {
                 // 消息发送
                 if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(pluginService.pluginName())) {
                     // 腾讯云推送
-                    pluginService.sendChatRoomMessage(message.objectName(RTCRoomMessage.DEVICE_MESSAGE).content(messageContent));
+                    pluginService.sendChatRoomMessage(message.objectName(RTCRoomMessage.CONTROL_DEVICE_NOTIFY_MESSAGE).content(messageContent));
                 } else {
                     // 融云推送
                     imHelper.publishMessage(authUser.getId().toString(), roomId, deviceResourceMessage, 1);
@@ -1302,7 +1315,7 @@ public class RoomServiceImpl implements RoomService {
                 // 消息发送
                 if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(pluginService.pluginName())) {
                     // 腾讯云推送
-                    pluginService.sendChatRoomMessage(message.objectName(RTCRoomMessage.DEVICE_MESSAGE).content(messageContent));
+                    pluginService.sendChatRoomMessage(message.objectName(RTCRoomMessage.CONTROL_DEVICE_NOTIFY_MESSAGE).content(messageContent));
                 } else {
                     // 融云推送
                     imHelper.publishMessage(authUser.getId().toString(), roomId, deviceResourceMessage, 1);
@@ -1318,7 +1331,7 @@ public class RoomServiceImpl implements RoomService {
                 deviceResourceMessage.setSoundVolume(data.getSoundVolume());// 消息发送
                 if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(pluginService.pluginName())) {
                     // 腾讯云推送
-                    pluginService.sendChatRoomMessage(message.objectName(RTCRoomMessage.DEVICE_MESSAGE).content(messageContent));
+                    pluginService.sendChatRoomMessage(message.objectName(RTCRoomMessage.CONTROL_DEVICE_NOTIFY_MESSAGE).content(messageContent));
                 } else {
                     // 融云推送
                     imHelper.publishMessage(authUser.getId().toString(), roomId, deviceResourceMessage, 1);
@@ -1492,7 +1505,7 @@ public class RoomServiceImpl implements RoomService {
 
         RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
 
-        String roomServiceProviter = getRoomServiceProviter(roomId);
+        String roomServiceProviter = getRoomServiceProvider(roomId);
         if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(roomServiceProviter)) {
 
             // 获取RTC服务提供方
@@ -1564,7 +1577,7 @@ public class RoomServiceImpl implements RoomService {
 
         RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
 
-        String roomServiceProviter = getRoomServiceProviter(roomId);
+        String roomServiceProviter = getRoomServiceProvider(roomId);
         if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(roomServiceProviter)) {
 
             // 获取RTC服务提供方
@@ -2016,7 +2029,7 @@ public class RoomServiceImpl implements RoomService {
 
         RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
 
-        String roomServiceProviter = getRoomServiceProviter(roomId);
+        String roomServiceProviter = getRoomServiceProvider(roomId);
         roomDao.updateDisplayByRid(roomId, display);
         if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(roomServiceProviter)) {
 
@@ -2133,7 +2146,7 @@ public class RoomServiceImpl implements RoomService {
         RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
 
         // 获取RTC服务提供方
-        RTCRoomPluginService pluginService = rtcRoomPluginContext.getPluginService(getRoomServiceProviter(roomId));
+        RTCRoomPluginService pluginService = rtcRoomPluginContext.getPluginService(getRoomServiceProvider(roomId));
         if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(pluginService.pluginName())) {
 
             // 腾讯云RTC服务
@@ -2197,8 +2210,44 @@ public class RoomServiceImpl implements RoomService {
             courseScheduleStudentMusicScoreDao.batchInsert(scheduleStudentMusicScores);
         }
         MusicScoreMessage musicScoreMessage = JSON.parseObject(JSON.toJSONString(accompaniment), MusicScoreMessage.class);
-        MusicScoreDownloadMessageMessage msg = new MusicScoreDownloadMessageMessage(musicScoreMessage);
-        imHelper.publishMessage(authUser.getId().toString(), roomId, msg, 0);
+        // 发送消息
+        String serviceProvider = getRoomServiceProvider(musicScoreData.getRoomId());
+        if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(serviceProvider)) {
+
+            RTCRoomPluginService pluginService = rtcRoomPluginContext.getPluginService(serviceProvider);
+            // 腾讯消息推送
+            RTCRoomMessage.MessageContent messageContent = RTCRoomMessage.MessageContent
+                    .builder()
+                    .url(musicScoreMessage.getUrl())
+                    .mp3Url(musicScoreMessage.getMp3Url())
+                    .songId(String.valueOf(musicScoreMessage.getId()))
+                    .speed(musicScoreMessage.getSpeed())
+                    .sendUserInfo(RTCRoomMessage.MessageUser.builder()
+                            .sendUserId(String.valueOf(authUser.getId()))
+                            .sendUserName(authUser.getUsername())
+                            .avatarUrl(authUser.getAvatar())
+                            .build())
+                    .build();
+
+            RTCRoomMessage roomMessage = RTCRoomMessage.builder()
+                    .objectName(RTCRoomMessage.PLAY_MIDI_MESSAGE)
+                    .content(messageContent)
+                    .toChatRoomId(roomId)
+                    .fromUserId(String.valueOf(authUser.getId()))
+                    .isIncludeSender(1)
+                    .isPersisted(1)
+                    .build();
+
+            // 发送消息
+            pluginService.sendChatRoomMessage(roomMessage);
+
+        } else {
+
+            // 融云消息推送
+            MusicScoreDownloadMessageMessage msg = new MusicScoreDownloadMessageMessage(musicScoreMessage);
+            imHelper.publishMessage(authUser.getId().toString(), roomId, msg, 0);
+        }
+
     }
 
     @Override
@@ -2297,7 +2346,7 @@ public class RoomServiceImpl implements RoomService {
 
         RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, senderId);
 
-        String roomServiceProviter = getRoomServiceProviter(roomId);
+        String roomServiceProviter = getRoomServiceProvider(roomId);
         if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(roomServiceProviter)) {
 
             sendDisplayMessage(display, roomMember);