|
@@ -35,6 +35,7 @@ import java.util.*;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
import java.util.function.BiFunction;
|
|
|
import java.util.function.BiPredicate;
|
|
|
+import java.util.function.Consumer;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -447,23 +448,6 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
|
|
|
String speakerIdStr = room.getSpeakerId().toString();
|
|
|
String roomUid = room.getRoomUid();
|
|
|
|
|
|
- //删除房间全部人员缓存
|
|
|
- this.getTotalUserCache(roomUid).deleteAsync();
|
|
|
- //获取在线人员信息
|
|
|
- RMap<Long, String> onlineUserCache = this.getOnlineUserCache(roomUid);
|
|
|
- //删除人员对应直播间编号信息
|
|
|
- onlineUserCache.forEach((id, s) -> redissonClient.getBucket(LIVE_USER_ROOM.replace(USER_ID, id.toString())).deleteAsync());
|
|
|
- //删除房间在线人员缓存
|
|
|
- onlineUserCache.deleteAsync();
|
|
|
- //删除房间信息
|
|
|
- this.getLiveRoomInfo(room.getRoomUid()).deleteAsync();
|
|
|
- //删除点赞数
|
|
|
- redissonClient.getBucket(LIVE_ROOM_LIKE.replace(ROOM_UID, room.getRoomUid())).deleteAsync();
|
|
|
- //删除当前主讲人最后一次进入房间的ip
|
|
|
- redissonClient.getBucket(LIVE_USER_LAST_CLIENT_IP.replace(ROOM_UID, roomUid).replace(USER_ID, speakerIdStr)).deleteAsync();
|
|
|
- //删除当前主讲人最后一次心跳
|
|
|
- redissonClient.getBucket(LIVE_ROOM_HEART_BEAT.replace(ROOM_UID, roomUid)).deleteAsync();
|
|
|
-
|
|
|
//关闭直播间发送消息
|
|
|
ImRoomMessage message = new ImRoomMessage();
|
|
|
message.setFromUserId(speakerIdStr);
|
|
@@ -476,8 +460,40 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
|
|
|
} catch (Exception e) {
|
|
|
log.error("destroyLiveRoom>>>> FORCED_OFFLINE {}", e.getMessage());
|
|
|
}
|
|
|
- //删除房间
|
|
|
-// this.ImDestroyLiveRoom(room.getRoomUid());
|
|
|
+
|
|
|
+ Date now = new Date();
|
|
|
+ //删除人员与房间关联关系缓存的方法
|
|
|
+ Consumer<String> deleteUserRoomCache = (id) -> redissonClient.getBucket(LIVE_USER_ROOM.replace(USER_ID, id)).deleteAsync();
|
|
|
+ //给老师签退
|
|
|
+ teacherAttendanceService.update(Wrappers.<TeacherAttendance>lambdaUpdate()
|
|
|
+ .eq(TeacherAttendance::getTeacherId, room.getSpeakerId())
|
|
|
+ .eq(TeacherAttendance::getCourseScheduleId, room.getCourseId())
|
|
|
+ .set(TeacherAttendance::getSignOutTime, now));
|
|
|
+ //删除老师与房间关联关系
|
|
|
+ deleteUserRoomCache.accept(speakerIdStr);
|
|
|
+ //获取在线人员信息
|
|
|
+ RMap<Long, String> onlineUserCache = this.getOnlineUserCache(roomUid);
|
|
|
+ onlineUserCache.forEach((id, s) -> {
|
|
|
+ //删除观看者对应直播间编号的缓存
|
|
|
+ deleteUserRoomCache.accept(id.toString());
|
|
|
+ //观看者签退
|
|
|
+ studentAttendanceService.update(Wrappers.<StudentAttendance>lambdaUpdate()
|
|
|
+ .eq(StudentAttendance::getStudentId, id)
|
|
|
+ .eq(StudentAttendance::getCourseScheduleId, room.getCourseId())
|
|
|
+ .set(StudentAttendance::getSignOutTime, now));
|
|
|
+ });
|
|
|
+ //删除房间在线人员缓存
|
|
|
+ onlineUserCache.deleteAsync();
|
|
|
+ //删除房间信息
|
|
|
+ this.getLiveRoomInfo(room.getRoomUid()).deleteAsync();
|
|
|
+ //删除点赞数
|
|
|
+ redissonClient.getBucket(LIVE_ROOM_LIKE.replace(ROOM_UID, room.getRoomUid())).deleteAsync();
|
|
|
+ //删除当前主讲人最后一次进入房间的ip
|
|
|
+ redissonClient.getBucket(LIVE_USER_LAST_CLIENT_IP.replace(ROOM_UID, roomUid).replace(USER_ID, speakerIdStr)).deleteAsync();
|
|
|
+ //删除当前主讲人最后一次心跳
|
|
|
+ redissonClient.getBucket(LIVE_ROOM_HEART_BEAT.replace(ROOM_UID, roomUid)).deleteAsync();
|
|
|
+ //删除房间全部人员缓存
|
|
|
+ this.getTotalUserCache(roomUid).deleteAsync();
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -731,9 +747,9 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
|
|
|
userInfo.setUserId(sysUser.getId());
|
|
|
userInfo.setUserName(sysUser.getRealName());
|
|
|
userInfo.setFirstJoinTime(now);
|
|
|
- //查询学生是否有进入过,没有则写学生考勤表的进入时间
|
|
|
- this.setStudentAttendance(userId, roomInfo.getCourseGroupId(), roomInfo.getCourseId());
|
|
|
}
|
|
|
+ //查询学生是否有进入过,没有则写学生考勤表的进入时间
|
|
|
+ this.setStudentAttendance(userId, roomInfo.getCourseGroupId(), roomInfo.getCourseId());
|
|
|
userInfo.setDynamicJoinTime(now);
|
|
|
//用户json信息
|
|
|
String userJsonStr = JSONObject.toJSONString(userInfo);
|
|
@@ -812,6 +828,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
|
|
|
studentAttendance.setSignInTime(now);
|
|
|
studentAttendance.setCreateTime(now);
|
|
|
studentAttendanceService.save(studentAttendance);
|
|
|
+ log.info("SignInTime >>> user {} courseId {}", studentId, courseId);
|
|
|
}
|
|
|
}
|
|
|
|