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