Browse Source

优化代码

hgw 2 years ago
parent
commit
1aa10bbfc0

+ 17 - 16
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/LiveRoomServiceImpl.java

@@ -529,10 +529,17 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
             if (StringUtils.isBlank(user.getStatus())) {
                 return;
             }
+            String userIdStr = user.getUserid();
+            //获取当前用户所在房间的uid
+            RBucket<String> userRoom = redissonClient.getBucket(LIVE_USER_ROOM.replace(USER_ID, userIdStr));
+            if (!userRoom.isExists()) {
+                return;
+            }
+            String roomUid = userRoom.get();
+
             Date now = new Date();
             //获取当前用户状态变更的时间
             long userStateTime = Optional.ofNullable(user.getTime()).orElse(now.getTime());
-            String userIdStr = user.getUserid();
             RBucket<Long> userStateTimeCache = redissonClient.getBucket(LIVE_USER_LAST_TIME.replace(USER_ID, userIdStr));
             if (userStateTimeCache.isExists()) {
                 //缓存的时间比当前传入时间大则放弃这条数据
@@ -542,13 +549,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
                 }
             }
             //将最新的时间写入缓存
-            userStateTimeCache.set(userStateTime, 5L, TimeUnit.MINUTES);
-            //获取当前用户所在房间的uid
-            RBucket<String> userRoom = redissonClient.getBucket(LIVE_USER_ROOM.replace(USER_ID, userIdStr));
-            if (!userRoom.isExists()) {
-                return;
-            }
-            String roomUid = userRoom.get();
+            userStateTimeCache.set(userStateTime, 60L, TimeUnit.MINUTES);
             //根据房间号获取房间信息
             RBucket<RoomInfoCache> roomInfoCache = this.getLiveRoomInfo(roomUid);
             if (!roomInfoCache.isExists()) {
@@ -557,7 +558,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
             RoomInfoCache roomInfo = roomInfoCache.get();
             // 查询userId是不是主讲人 ,如果是主讲人则返回
             if (roomInfo.getSpeakerId().toString().equals(userIdStr)) {
-                opsSpeaker(roomInfoCache, user, now, userIdStr);
+                this.opsSpeaker(roomInfoCache, user, now, userIdStr);
                 return;
             }
             //这里开始只处理观看者的数据,观看者只接受退出消息 status=0 是进入房间
@@ -569,7 +570,10 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
             //从房间累计用户信息中查询该用户的信息
             RMap<Long, String> roomTotalUser = this.getTotalUserCache(roomUid);
             //该房间未查询到用户数据则不处理
-            if (!roomTotalUser.isExists() && !roomTotalUser.containsKey(userId)) {
+            if (!roomTotalUser.isExists()) {
+                return;
+            }
+            if (!roomTotalUser.containsKey(userId)) {
                 return;
             }
             //查询用户数据
@@ -585,13 +589,10 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
             //从在线人员列表删除该人员
             onlineUserInfo.fastRemove(userId);
             //学员退出 写学生考勤表
-            StudentAttendance studentAttendance = studentAttendanceService.getOne(Wrappers.<StudentAttendance>lambdaQuery()
+            studentAttendanceService.update(Wrappers.<StudentAttendance>lambdaUpdate()
                     .eq(StudentAttendance::getStudentId, userId)
-                    .eq(StudentAttendance::getCourseScheduleId, roomInfo.getCourseId()));
-            if (Objects.nonNull(studentAttendance)) {
-                studentAttendance.setSignOutTime(now);
-                studentAttendanceService.updateById(studentAttendance);
-            }
+                    .eq(StudentAttendance::getCourseScheduleId, roomInfo.getCourseId())
+                    .set(StudentAttendance::getSignOutTime, now));
             //向直播间发送当前在线人数消息
             this.sendOnlineUserCount(roomUid, userId, onlineUserInfo.size());
             log.info("opsRoom>>>> looker userInfo: {}", userJsonStr);