Browse Source

消息推送

liujc 2 years ago
parent
commit
0ceae30f73

+ 1 - 1
mec-im/src/main/java/com/ym/config/ResourceServerConfig.java

@@ -26,7 +26,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
                         "/room/statusImMsg", "/group/batchDismiss", "/private/send", "/group/send", "/user/tencentImCallback",
                         "/group/dismiss", "/room/statusImMsg", "/history/get", "/user/statusImUser", "/liveRoom/recordSync",
                         "/liveRoom/publishRoomMsg", "/liveRoom/destroy", "/liveRoom/create", "/liveRoom/startRecord",
-                        "/liveRoom/stopRecord", "/liveRoom/userExistInRoom","/liveRoom/checkOnline",
+                        "/liveRoom/stopRecord", "/liveRoom/userExistInRoom","/liveRoom/checkOnline","/room/statusSyncTencent",
                         "/user/tencentStreamEventCallback", "/user/tencentStreamRecordCallback", "/user/tencentStreamExceptionCallback",
                         "/liveRoom/addUserUnableSpeak","/liveRoom/removeUserUnableSpeak","/liveRoom/syncChatRoomStatus","/liveRoom/tencentImCallback")
                 .permitAll().anyRequest().authenticated().and().csrf().disable();

+ 85 - 9
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -1452,15 +1452,62 @@ public class RoomServiceImpl implements RoomService {
         } else {
             roomMemberDao.updateMicByRidAndUid(roomId, userId, taskInfo.isOnOff());
         }
-        ControlDeviceNotifyMessage msg = new ControlDeviceNotifyMessage(ActionEnum.Approve.ordinal());
-        msg.setType(taskInfo.getTypeEnum().ordinal());
-        msg.setOpUserId(userId);
-        msg.setOpUserName(authUser.getUsername());
-        imHelper.publishMessage(userId, taskInfo.getApplyUserId(), roomId, msg);
 
-        DeviceStateChangedMessage deviceResourceMessage = new DeviceStateChangedMessage(taskInfo.getTypeEnum().ordinal(), taskInfo.isOnOff());
-        deviceResourceMessage.setUserId(userId);
-        imHelper.publishMessage(userId, roomId, deviceResourceMessage, 1);
+        RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
+
+        String roomServiceProviter = getRoomServiceProviter(roomId);
+        if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(roomServiceProviter)) {
+
+            // 获取RTC服务提供方
+            RTCRoomPluginService pluginService = rtcRoomPluginContext.getPluginService(TencentCloudRTCPlugin.PLUGIN_NAME);
+            // 腾讯云RTC服务
+            RTCRoomMessage.MessageContent.MessageContentBuilder action = RTCRoomMessage.MessageContent.builder()
+                    .type(ActionEnum.Approve.ordinal())
+                    .enable(taskInfo.isOnOff())
+                    .targetId(userId)
+                    .targetName(authUser.getUsername())
+                    .sendUserInfo(getSendUser(taskInfo.getApplyUserId(), RoleTeacher));
+
+
+            RTCRoomMessage roomMessage = RTCRoomMessage.builder()
+                    .objectName(RTCRoomMessage.CONTROL_DEVICE_NOTIFY_MESSAGE)
+                    .content(action.build())
+                    .toChatRoomId(roomMember.getRid())
+                    .fromUserId(roomMember.getUid())
+                    .isIncludeSender(1)
+                    .isPersisted(1)
+                    .build();
+
+            pluginService.sendChatRoomMessage(roomMessage);
+
+            // 腾讯云RTC服务
+            action = RTCRoomMessage.MessageContent.builder()
+                    .type(ActionEnum.Approve.ordinal())
+                    .enable(taskInfo.isOnOff())
+                    .sendUserInfo(getSendUser(roomMember.getUid(),RoleEnum.getEnumByValue(roomMember.getRole())));
+
+            // 腾讯云消息推送
+            RTCRoomMessage message = RTCRoomMessage.builder()
+                    .objectName(RTCRoomMessage.DEVICE_MESSAGE)
+                    .fromUserId(userId)
+                    .toChatRoomId(roomId)
+                    .content(action.build())
+                    .isPersisted(1)
+                    .isIncludeSender(0)
+                    .build();
+
+            pluginService.sendChatRoomMessage(message);
+        } else {
+            ControlDeviceNotifyMessage msg = new ControlDeviceNotifyMessage(ActionEnum.Approve.ordinal());
+            msg.setType(taskInfo.getTypeEnum().ordinal());
+            msg.setOpUserId(userId);
+            msg.setOpUserName(authUser.getUsername());
+            imHelper.publishMessage(userId, taskInfo.getApplyUserId(), roomId, msg);
+
+            DeviceStateChangedMessage deviceResourceMessage = new DeviceStateChangedMessage(taskInfo.getTypeEnum().ordinal(), taskInfo.isOnOff());
+            deviceResourceMessage.setUserId(userId);
+            imHelper.publishMessage(userId, roomId, deviceResourceMessage, 1);
+        }
         return true;
     }
 
@@ -1477,7 +1524,36 @@ public class RoomServiceImpl implements RoomService {
         msg.setType(taskInfo.getTypeEnum().ordinal());
         msg.setOpUserId(userId);
         msg.setOpUserName(authUser.getUsername());
-        imHelper.publishMessage(userId, taskInfo.getApplyUserId(), roomId, msg);
+
+        RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
+
+        String roomServiceProviter = getRoomServiceProviter(roomId);
+        if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(roomServiceProviter)) {
+
+            // 获取RTC服务提供方
+            RTCRoomPluginService pluginService = rtcRoomPluginContext.getPluginService(TencentCloudRTCPlugin.PLUGIN_NAME);
+
+            RTCRoomMessage.MessageContent.MessageContentBuilder action = RTCRoomMessage.MessageContent.builder()
+                    .type(ActionEnum.Reject.ordinal())
+                    .enable(taskInfo.isOnOff())
+                    .targetId(userId)
+                    .targetName(authUser.getUsername())
+                    .sendUserInfo(getSendUser(taskInfo.getApplyUserId(), RoleTeacher));
+
+
+            RTCRoomMessage roomMessage = RTCRoomMessage.builder()
+                    .objectName(RTCRoomMessage.CONTROL_DEVICE_NOTIFY_MESSAGE)
+                    .content(action.build())
+                    .toChatRoomId(roomMember.getRid())
+                    .fromUserId(roomMember.getUid())
+                    .isIncludeSender(1)
+                    .isPersisted(1)
+                    .build();
+
+            pluginService.sendChatRoomMessage(roomMessage);
+        } else {
+            imHelper.publishMessage(userId, taskInfo.getApplyUserId(), roomId, msg);
+        }
         return true;
     }