zouxuan 4 years ago
parent
commit
48720c2518

+ 10 - 0
edu-im/edu-im-api/src/main/java/com/keao/edu/im/api/entity/ReqUserData.java

@@ -82,4 +82,14 @@ public class ReqUserData {
 	public void setMusicMode(boolean musicMode) {
 		this.musicMode = musicMode;
 	}
+
+	@Override
+	public String toString() {
+		return "ReqUserData{" +
+				"userName='" + userName + '\'' +
+				", roomId='" + roomId + '\'' +
+				", registrationId=" + registrationId +
+				", userId='" + userId + '\'' +
+				'}';
+	}
 }

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

@@ -103,8 +103,8 @@ public class IMHelper {
             sb.append("&userId=").append(URLEncoder.encode(child, UTF8));
         }
 
-        sb.append("&groupId=").append(URLEncoder.encode(groupId.toString(), UTF8));
-        sb.append("&groupName=").append(URLEncoder.encode(groupName.toString(), UTF8));
+        sb.append("&groupId=").append(URLEncoder.encode(groupId, UTF8));
+        sb.append("&groupName=").append(URLEncoder.encode(groupName, UTF8));
         String body = sb.toString();
         if (body.indexOf("&") == 0) {
             body = body.substring(1, body.length());
@@ -147,8 +147,8 @@ public class IMHelper {
             sb.append("&userId=").append(URLEncoder.encode(child, UTF8));
         }
 
-        sb.append("&groupId=").append(URLEncoder.encode(groupId.toString(), UTF8));
-        sb.append("&groupName=").append(URLEncoder.encode(groupName.toString(), UTF8));
+        sb.append("&groupId=").append(URLEncoder.encode(groupId, UTF8));
+        sb.append("&groupName=").append(URLEncoder.encode(groupName, UTF8));
         String body = sb.toString();
         if (body.indexOf("&") == 0) {
             body = body.substring(1, body.length());
@@ -186,7 +186,7 @@ public class IMHelper {
             sb.append("&userId=").append(URLEncoder.encode(child, UTF8));
         }
 
-        sb.append("&groupId=").append(URLEncoder.encode(groupId.toString(), UTF8));
+        sb.append("&groupId=").append(URLEncoder.encode(groupId, UTF8));
         String body = sb.toString();
         if (body.indexOf("&") == 0) {
             body = body.substring(1, body.length());
@@ -217,8 +217,8 @@ public class IMHelper {
         }
 
         StringBuilder sb = new StringBuilder();
-        sb.append("&userId=").append(URLEncoder.encode(userId.toString(), UTF8));
-        sb.append("&groupId=").append(URLEncoder.encode(groupId.toString(), UTF8));
+        sb.append("&userId=").append(URLEncoder.encode(userId, UTF8));
+        sb.append("&groupId=").append(URLEncoder.encode(groupId, UTF8));
         String body = sb.toString();
         if (body.indexOf("&") == 0) {
             body = body.substring(1, body.length());
@@ -263,7 +263,8 @@ public class IMHelper {
     public void againRecord(JSONObject paramJson,Long registrationId,String roomId,JSONObject config) throws Exception {
         List<RoomMember> roomMembers = roomMemberDao.findByRidAndMsidFlag(roomId,true);
         if (roomMembers == null || roomMembers.size() == 0) {
-            throw new IllegalArgumentException("Paramer 'roomMembers' is can not be null");
+            log.error("Paramer 'roomMembers' is can not be null");
+            return;
         }
         config.put("input",getInput(roomMembers));
         paramJson.put("config",config);
@@ -278,10 +279,12 @@ public class IMHelper {
             int i = 1;
             while (i<=3){
                 redisTemplate.delete("sessionId:" + roomId);
-                Thread.sleep(3000l);
-                List<RoomMember> members = roomMemberDao.findByRidAndMsidFlag(roomId,true);
-                if (members == null || members.size() == 0) {
-                    throw new IllegalArgumentException("Paramer 'roomMembers' is can not be null");
+                Thread.sleep(2000l);
+                roomMembers = roomMemberDao.findByRidAndMsidFlag(roomId,true);
+                if (roomMembers == null || roomMembers.size() == 0) {
+                    log.error("Paramer 'roomMembers' is can not be null");
+                    i++;
+                    continue;
                 }
                 if(i == 3){
                     config.put("input",getSignInput(roomMembers));
@@ -294,16 +297,16 @@ public class IMHelper {
                 HttpURLConnection connection = httpHelper.createIMRtcPostHttpConnection("/rtc/record/start.json", "application/json", roomId);
                 httpHelper.setBodyParameter(body, connection);
                 IMApiResultInfo imApiResultInfo = JSON.parseObject(httpHelper.returnResult(connection, body), IMApiResultInfo.class);
-                i++;
                 if(imApiResultInfo.getResultCode() == 10000){
                     redisTemplate.opsForValue().set(imApiResultInfo.getRecordId(),registrationId.toString());
                     log.info("直播视频录制第{}次重试成功",i);
                     return;
                 }
-                if(i > 3){
+                if(i == 3){
                     log.error("直播视频录制失败:resultInfo : {} 重试结束",imApiResultInfo);
                     return;
                 }
+                i++;
             }
         }
     }

+ 30 - 33
edu-im/edu-im-server/src/main/java/com/keao/edu/im/service/Impl/RoomServiceImpl.java

@@ -403,8 +403,7 @@ public class RoomServiceImpl implements RoomService {
     @Override
     @Transactional(rollbackFor = Exception.class,isolation = Isolation.SERIALIZABLE)
     public void destroyRoom(Long roomId,String userId) throws Exception {
-
-        CheckUtils.checkArgument(roomId != null, "destroyRoom roomId must't be null");
+        log.info("destroyRoom roomId:{} userId:{}", roomId, userId);
         List<RoomMember> roomMembers = roomMemberDao.findByRid(roomId.toString());
         if(roomMembers != null && roomMembers.size() > 0){
             roomMembers.forEach(e->{
@@ -440,13 +439,12 @@ public class RoomServiceImpl implements RoomService {
     @Override
     @Transactional(rollbackFor = Exception.class,isolation = Isolation.SERIALIZABLE)
     public Boolean kickMember(ReqUserData data) throws Exception {
+        log.info("kickMember param: {}", data);
         StudentExamApiDto examResult = eduUserFeignService.getExamResult(data.getRegistrationId());
         String roomId = examResult.getRoomId();
 
         SysUser authUser = sysUserFeignService.queryUserInfo();
         String userId = authUser.getId().toString();
-        CheckUtils.checkArgument(userId != null, "userId must't be null");
-        CheckUtils.checkArgument(roomId != null, "roomId must't be null");
 
         RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, data.getUserId());
         if(roomMember == null){
@@ -1188,33 +1186,34 @@ public class RoomServiceImpl implements RoomService {
         String roomId = notify.getRoomId();
         String userId = notify.getUserId();
         RoomMember roomMember = null;
-        if(notify.getEvent() == 1){
-            //同步房间信息
-        }else if(notify.getEvent() == 2){
-            //房间创建
-        }else if(notify.getEvent() == 3){
-            log.info("房间销毁 roomId: {}, userId: {}",roomId, userId);
-            redisTemplate.delete("sessionId:" + roomId);
-        }else if(notify.getEvent() == 11){
-            //成员加入
-            roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
-            if(roomMember == null){
-                return false;
-            }
-            joinRoomSuccess(roomMember);
-        }else if(notify.getEvent() == 12){
-            //成员退出
-            roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
-            if(roomMember == null){
-                return false;
-            }
-            leaveRoomSuccess(roomMember);
-        }else if(notify.getEvent() == 20){
-            roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
-            if(roomMember == null){
-                return false;
-            }
-            resourceChange(roomMember,notify.getMembers());
+        switch (notify.getEvent()){
+            case 3:
+                log.info("房间销毁 roomId: {}, userId: {}",roomId, userId);
+                redisTemplate.delete("sessionId:" + roomId);
+                break;
+            case 11:
+                //成员加入
+                roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
+                if(roomMember == null){
+                    return false;
+                }
+                joinRoomSuccess(roomMember);
+                break;
+            case 12:
+                //成员退出
+                roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
+                if(roomMember == null){
+                    return false;
+                }
+                leaveRoomSuccess(roomMember);
+                break;
+            case 20:
+                roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
+                if(roomMember == null){
+                    return false;
+                }
+                resourceChange(roomMember,notify.getMembers());
+                break;
         }
         return true;
     }
@@ -1243,8 +1242,6 @@ public class RoomServiceImpl implements RoomService {
                 }
             }
         }
-        //同步录制资源
-        //资源发生变动
         if(roomMember.isMsidFlag() != msidFlag){
             roomMemberDao.updateMsidFlagByRidAndUid(roomId,userId,state);
             if(roomMember.getExamRegistrationId() == null){