فهرست منبع

fix直播、网络教室回调消息解析

Eric 1 سال پیش
والد
کامیت
809f8c677d

+ 36 - 30
mec-im/src/main/java/com/ym/controller/RoomController.java

@@ -139,18 +139,21 @@ public class RoomController{
             if (roomId.startsWith("S") || roomId.startsWith("I")) {
                 // 进出用户信息
                 String userId = eventInfo.getEventInfo().getUserId();
-                switch (ETencentTRTCCallbackCommand.get(eventInfo.getEventType())){
-                    case EVENT_TYPE_ENTER_ROOM:
-                        //成员加入
-                        roomService.joinRoomSuccess(roomId, userId,null);
-                        break;
-                    case EVENT_TYPE_EXIT_ROOM:
-                        //成员退出
-                        roomService.leaveRoomSuccess(roomId, userId,null, eventInfo.getCallbackTs());
-                        break;
-                    default:
-                        // 默认事件,直接忽略
-                        break;
+
+                if (userId.matches("\\d+")) {
+                    switch (ETencentTRTCCallbackCommand.get(eventInfo.getEventType())){
+                        case EVENT_TYPE_ENTER_ROOM:
+                            //成员加入
+                            roomService.joinRoomSuccess(roomId, userId,null);
+                            break;
+                        case EVENT_TYPE_EXIT_ROOM:
+                            //成员退出
+                            roomService.leaveRoomSuccess(roomId, userId,null, eventInfo.getCallbackTs());
+                            break;
+                        default:
+                            // 默认事件,直接忽略
+                            break;
+                    }
                 }
             }
 
@@ -161,24 +164,27 @@ public class RoomController{
                     return;
                 }
 
-                roomId = values[1];
-                // 直播课回调事件处理, 课程编号
-                switch (ETencentTRTCCallbackCommand.get(eventInfo.getEventType())){
-                    case EVENT_TYPE_START_VIDEO:
-                    case EVENT_TYPE_START_AUDIO:
-                    case EVENT_TYPE_START_ASSIT:
-                        //成员加入
-                        roomService.joinRoomSuccess(roomId, eventInfo.getEventInfo().getUserId(), null);
-                        break;
-                    case EVENT_TYPE_STOP_VIDEO:
-                    case EVENT_TYPE_STOP_AUDIO:
-                    case EVENT_TYPE_STOP_ASSIT:
-                        //成员退出
-                        roomService.leaveRoomSuccess(roomId, eventInfo.getEventInfo().getUserId(),null, eventInfo.getCallbackTs());
-                        break;
-                    default:
-                        // 默认事件,直接忽略
-                        break;
+                String userId = eventInfo.getEventInfo().getUserId();
+                if (userId.matches("\\d+")) {
+                    roomId = values[1];
+                    // 直播课回调事件处理, 课程编号
+                    switch (ETencentTRTCCallbackCommand.get(eventInfo.getEventType())){
+                        case EVENT_TYPE_START_VIDEO:
+                        case EVENT_TYPE_START_AUDIO:
+                        case EVENT_TYPE_START_ASSIT:
+                            //成员加入
+                            roomService.joinRoomSuccess(roomId, eventInfo.getEventInfo().getUserId(), null);
+                            break;
+                        case EVENT_TYPE_STOP_VIDEO:
+                        case EVENT_TYPE_STOP_AUDIO:
+                        case EVENT_TYPE_STOP_ASSIT:
+                            //成员退出
+                            roomService.leaveRoomSuccess(roomId, eventInfo.getEventInfo().getUserId(),null, eventInfo.getCallbackTs());
+                            break;
+                        default:
+                            // 默认事件,直接忽略
+                            break;
+                    }
                 }
             }
 

+ 58 - 38
mec-im/src/main/java/com/ym/controller/UserController.java

@@ -140,27 +140,28 @@ public class UserController {
                     // 学生编号
                     String userId = callbackOnMemberStateChange.getMemberList().get(0).getMemberAccount();
 
-                    String eventType = callbackOnMemberStateChange.getEventType();
-                    // 学生离线消息通知
-                    if ("Offline".equals(eventType)) {
-
-                        try {
-                            roomService.leaveRoomSuccess(roomId, userId, null);
-                        } catch (Exception e) {
-                            log.error("tencentImCallback leaveRoomSuccess error, roomId={}, userId={}", roomId, userId, e);
+                    if (userId.matches("\\d+")) {
+                        String eventType = callbackOnMemberStateChange.getEventType();
+                        // 学生离线消息通知
+                        if ("Offline".equals(eventType)) {
+
+                            try {
+                                roomService.leaveRoomSuccess(roomId, userId, null);
+                            } catch (Exception e) {
+                                log.error("tencentImCallback leaveRoomSuccess error, roomId={}, userId={}", roomId, userId, e);
+                            }
                         }
-                    }
 
-                    // 学生在线消息通知
-                    if ("Online".equals(eventType)) {
+                        // 学生在线消息通知
+                        if ("Online".equals(eventType)) {
 
-                        try {
-                            roomService.joinRoomSuccess(roomId, userId, null);
-                        } catch (Exception e) {
-                            log.error("tencentImCallback joinRoomSuccess error, roomId={}, userId={}", roomId, userId, e);
+                            try {
+                                roomService.joinRoomSuccess(roomId, userId, null);
+                            } catch (Exception e) {
+                                log.error("tencentImCallback joinRoomSuccess error, roomId={}, userId={}", roomId, userId, e);
+                            }
                         }
                     }
-
                 }
             }
 
@@ -188,10 +189,13 @@ public class UserController {
 
                     // 学生编号
                     String userId = callbackAfterMemberExit.getExitMemberList().get(0).getMemberAccount();
-                    try {
-                        roomService.leaveRoomSuccess(roomId, userId, null);
-                    } catch (Exception e) {
-                        log.error("tencentImCallback leaveRoomSuccess error, roomId={}, userId={}", roomId, userId, e);
+
+                    if (userId.matches("\\d+")) {
+                        try {
+                            roomService.leaveRoomSuccess(roomId, userId, null);
+                        } catch (Exception e) {
+                            log.error("tencentImCallback leaveRoomSuccess error, roomId={}, userId={}", roomId, userId, e);
+                        }
                     }
 
                 }
@@ -220,10 +224,13 @@ public class UserController {
 
                     // 学生编号
                     String userId = callbackAfterNewMemberJoin.getNewMemberList().get(0).getMemberAccount();
-                    try {
-                        roomService.joinRoomSuccess(roomId, userId, null);
-                    } catch (Exception e) {
-                        log.error("tencentImCallback joinRoomSuccess error, roomId={}, userId={}", roomId, userId, e);
+
+                    if (userId.matches("\\d+")) {
+                        try {
+                            roomService.joinRoomSuccess(roomId, userId, null);
+                        } catch (Exception e) {
+                            log.error("tencentImCallback joinRoomSuccess error, roomId={}, userId={}", roomId, userId, e);
+                        }
                     }
 
                 }
@@ -251,26 +258,34 @@ public class UserController {
             // 断流事件通知
             if (event.getEventType() == 0) {
 
-                // 更新推流时长
-                if (StringUtils.isNotBlank(event.getPushDuration()) && event.getPushDuration().matches("\\d+")) {
-                    // 更新直播推流时长
-                    imLiveBroadcastRoomService.updateLiveRoomPushStreamTime(event);
-                }
-                imUserState.setStatus("3");
+                Integer speakerId = getSpeakerId(event.getStreamId());
+                if (speakerId > 0) {
+                    // 更新推流时长
+                    if (StringUtils.isNotBlank(event.getPushDuration()) && event.getPushDuration().matches("\\d+")) {
+                        // 更新直播推流时长
+                        imLiveBroadcastRoomService.updateLiveRoomPushStreamTime(event);
+                    }
+                    imUserState.setStatus("3");
+
+                    // 自动关闭录制
+                    imLiveBroadcastRoomService.closeLive(getRoomUid(event.getStreamId()), speakerId, event.getSequence());
 
-                // 自动关闭录制
-                imLiveBroadcastRoomService.closeLive(getRoomUid(event.getStreamId()), getSpeakerId(event.getStreamId()),event.getSequence());
+                    // 同步点赞数
+                    imLiveBroadcastRoomService.syncLikeCount(getRoomUid(event.getStreamId()));
+                }
 
-                // 同步点赞数
-                imLiveBroadcastRoomService.syncLikeCount(getRoomUid(event.getStreamId()));
             }
 
             // 推流事件通知
             if (event.getEventType() == 1) {
-                // 自动开启录制
-                imLiveBroadcastRoomService.startLive(getRoomUid(event.getStreamId()), getSpeakerId(event.getStreamId()), null,event.getSequence());
 
-                imUserState.setStatus("0");
+                Integer speakerId = getSpeakerId(event.getStreamId());
+                if (speakerId > 0) {
+                    // 自动开启录制
+                    imLiveBroadcastRoomService.startLive(getRoomUid(event.getStreamId()), getSpeakerId(event.getStreamId()), null,event.getSequence());
+
+                    imUserState.setStatus("0");
+                }
             }
             //imLiveBroadcastRoomService.opsRoom(Lists.newArrayList(imUserState));
         }
@@ -279,7 +294,12 @@ public class UserController {
     }
 
     private Integer getSpeakerId(String streamId) {
-        return Integer.parseInt(streamId.split("_")[1]);
+
+        String userId = streamId.split("_")[1];
+        if (userId.matches("\\d+")) {
+            return Integer.parseInt(userId);
+        }
+        return -1;
     }
 
     private String getRoomUid(String streamId) {