shangke 1 年之前
父节点
当前提交
3561ecec45
共有 1 个文件被更改,包括 19 次插入2 次删除
  1. 19 2
      mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

+ 19 - 2
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -59,6 +59,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
 import java.util.concurrent.TimeUnit;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 import static com.ym.enums.RoleEnum.RoleStudent;
@@ -365,6 +366,14 @@ public class RoomServiceImpl implements RoomService {
 
         List<RoomMember> roomMemberList = roomMemberDao.findByRid(roomId);
         if (CollectionUtils.isNotEmpty(roomMemberList)) {
+
+            // 获取当前房间所有用户去重
+            Collection<RoomMember> roomMembers = roomMemberList.stream()
+                    .collect(Collectors.toMap(RoomMember::getUid, Function.identity(), (o, n) -> n)).values();
+
+            // 重置房间用户信息
+            roomMemberList = Lists.newArrayList(roomMembers);
+
             Set<String> userIds = roomMemberList.stream().map(RoomMember::getUid).collect(Collectors.toSet());
             Map<Integer, String> midiMap = MapUtil.convertMybatisMap(courseScheduleStudentPaymentDao.queryMidiByUserIdsAndCourseId(userIds, courseId.toString()));
             Map<Integer, String> examSongMap = MapUtil.convertMybatisMap(courseScheduleStudentPaymentDao.queryExamSongByUserIdsAndCourseId(userIds, courseId.toString()));
@@ -712,9 +721,9 @@ public class RoomServiceImpl implements RoomService {
         }
 
         String leaveSuccessKey = "leaveRoomSuccess" + roomId + userId;
-        Boolean aBoolean = redisTemplate.opsForValue().setIfAbsent(leaveSuccessKey, roomId, 1l, TimeUnit.SECONDS);
+        Boolean aBoolean = redisTemplate.opsForValue().setIfAbsent(leaveSuccessKey, roomId, 1L, TimeUnit.SECONDS);
         log.info("leaveRoomSuccess: roomId={}, userId={},deviceNum={},aBoolean={}", roomId, userId, deviceNum, aBoolean);
-        if (!aBoolean) {
+        if (Boolean.FALSE.equals(aBoolean)) {
             if (StringUtils.isNotEmpty(deviceNum)) {
                 //如果设备号不为空,更新设备号
                 if (roleEnum == RoleTeacher) {
@@ -1770,6 +1779,14 @@ public class RoomServiceImpl implements RoomService {
 
         // 网络课用户信息
         if (CollectionUtils.isNotEmpty(roomMemberList)) {
+
+            // 当前房间用户去重
+            Collection<RoomMember> roomMembers = roomMemberList.stream()
+                    .collect(Collectors.toMap(RoomMember::getUid, Function.identity(), (o, n) -> n)).values();
+
+            // 重置房间用户信息
+            roomMemberList = Lists.newArrayList(roomMembers);
+
             List<CourseScheduleStudentMusicScore> scheduleStudentMusicScores = courseScheduleStudentMusicScoreDao.queryByScoreIdAndCourseId(null, Long.parseLong(roomId.substring(1)), null, null, null);
             RoomResult roomResult = new RoomResult();
             Set<String> userIds = roomMemberList.stream().map(RoomMember::getUid).collect(Collectors.toSet());