zouxuan il y a 5 ans
Parent
commit
b85bef7b09

+ 6 - 0
edu-im/edu-im-server/src/main/java/com/keao/edu/im/dao/RoomMemberDao.java

@@ -18,6 +18,8 @@ import java.util.List;
 public interface RoomMemberDao extends JpaRepository<RoomMember, Long> {
     public List<RoomMember> findByRid(String rid);
 
+    public List<RoomMember> findByRidAnAndMsidFlag(String rid,boolean msidFlag);
+
     @Lock(value = LockModeType.PESSIMISTIC_WRITE)
     public RoomMember findByRidAndUid(String rid, String uid);
 
@@ -40,6 +42,10 @@ public interface RoomMemberDao extends JpaRepository<RoomMember, Long> {
     public int updateRoleByRidAndUid(String rid, String uid, int role);
 
     @Modifying
+    @Query(value = "update rongyun_room_member set msid_flag=?3 where rid=?1 and uid=?2", nativeQuery = true)
+    public int updateMsidByRidAndUid(String rid, String uid,boolean msid);
+
+    @Modifying
     @Query(value = "update rongyun_room_member set role=?3 where rid=?1 and role=?2", nativeQuery = true)
     public int updateRoleByRidAndRole(String rid, int role);
 

+ 2 - 2
edu-im/edu-im-server/src/main/java/com/keao/edu/im/mec/im/IMHelper.java

@@ -266,7 +266,7 @@ public class IMHelper {
 
     @Async
     public void againRecord(JSONObject paramJson,Long registrationId,String roomId,JSONObject config,String msid) throws Exception {
-        List<RoomMember> roomMembers = roomMemberDao.findByRid(roomId);
+        List<RoomMember> roomMembers = roomMemberDao.findByRidAnAndMsidFlag(roomId,true);
         if (roomMembers == null || roomMembers.size() == 0) {
             throw new IllegalArgumentException("Paramer 'roomMembers' is can not be null");
         }
@@ -286,7 +286,7 @@ public class IMHelper {
             int i = 1;
             while (i<=3){
                 Thread.sleep(5000l);
-                List<RoomMember> members = roomMemberDao.findByRid(roomId);
+                List<RoomMember> members = roomMemberDao.findByRidAnAndMsidFlag(roomId,true);
                 if (members == null || members.size() == 0) {
                     throw new IllegalArgumentException("Paramer 'roomMembers' is can not be null");
                 }

+ 1 - 0
edu-im/edu-im-server/src/main/java/com/keao/edu/im/pojo/RoomMember.java

@@ -27,6 +27,7 @@ public class RoomMember {
     private @Getter @Setter boolean musicMode = true;
     private @Getter @Setter boolean mic = true;
     private @Getter @Setter boolean hand = false;
+    private @Getter @Setter boolean msidFlag = false;
 
     public RoomMember() {
     }

+ 5 - 1
edu-im/edu-im-server/src/main/java/com/keao/edu/im/service/Impl/RoomServiceImpl.java

@@ -327,7 +327,7 @@ public class RoomServiceImpl implements RoomService {
             imHelper.stopRecord(roomId);
         }else {
             eduUserFeignService.upsetTeacherAttendance(Long.parseLong(roomId),Integer.parseInt(userId),1);
-            imHelper.configRecord(roomId,roomMemberDao.findByRid(roomId),msid);
+            imHelper.configRecord(roomId,roomMemberDao.findByRidAnAndMsidFlag(roomId,true),msid);
         }
     }
 
@@ -1267,6 +1267,7 @@ public class RoomServiceImpl implements RoomService {
         RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
         log.info("statusSync roomMember:{}",roomMember);
         String msidStr = null;
+        boolean msidFlag = false;
         List<Member> members = notify.getMembers();
         if(members != null && members.size() != 0){
             JSONArray jsonArray = JSONObject.parseArray(JSONObject.toJSONString(members.get(0).getData().get("uris")));
@@ -1274,6 +1275,7 @@ public class RoomServiceImpl implements RoomService {
                 Object msid = JSONObject.parseObject(JSONObject.toJSONString(jsonArray.get(0))).get("msid");
                 if(msid != null){
                     msidStr = msid.toString();
+                    msidFlag = true;
                 }
             }
         }
@@ -1289,9 +1291,11 @@ public class RoomServiceImpl implements RoomService {
             redisTemplate.delete("sessionId:" + roomId);
         }else if(notify.getEvent() == 11){
             //成员加入
+            roomMemberDao.updateMsidByRidAndUid(roomId,userId,msidFlag);
             joinRoomSuccess(roomMember.getExamRegistrationId(),roomId,userId,msidStr);
         }else if(notify.getEvent() == 12){
             //成员退出
+            roomMemberDao.updateMsidByRidAndUid(roomId,userId,msidFlag);
             leaveRoomSuccess(roomMember.getExamRegistrationId(),roomId,userId,msidStr);
         }else if(notify.getEvent() == 20){
             //资源发生变动