Browse Source

Merge branch 'fix/0907' into master_saas

liujc 1 year ago
parent
commit
77c300aa04

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupService.java

@@ -164,4 +164,11 @@ public interface ImGroupService extends BaseService<String, ImGroup> {
      * @param imGroupId 群组id
      */
     void schoolJoinGroup(Integer cooperationOrganId, String imGroupId);
+
+    /**
+     * 检测IM有效性
+     *
+     * @param imUserId  imUserId
+     */
+    boolean checkImUserId(String imUserId);
 }

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java

@@ -714,4 +714,17 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
         addImGroup(Lists.newArrayList(imGroup.getId()),schoolStaff.getUserId(),ESchoolStaffType.ORCHESTRA_LEADER.getDescribe());
 
     }
+
+
+    /**
+     * 检测IM有效性
+     *
+     * @param imUserId  imUserId
+     */
+    @Override
+    public boolean checkImUserId(String imUserId) {
+        // 判断是否是纯数字
+        return  StringUtils.isNumeric(imUserId);
+
+    }
 }

+ 2 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -2841,7 +2841,6 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             imUserState.setUserid(userId.toString());
             imUserState.setStatus(onlineStatus == 1 && liveRoomStatus == 1?"0":"1");
             imUserState.setOs(callbackOnMemberStateChange.getOptPlatform());
-            imUserState.setTime(new Date().getTime());
             imUserState.setRoomUid(callbackOnMemberStateChange.getGroupId());
             imUserStates.add(imUserState);
         }
@@ -2874,7 +2873,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             imUserState.setUserid(userId.toString());
             imUserState.setStatus("3");
             imUserState.setOs(callbackAfterMemberExit.getOptPlatform());
-            imUserState.setTime(callbackAfterMemberExit.getEventTime().atZone(ZoneId.systemDefault()).toEpochSecond());
+            imUserState.setTime(callbackAfterMemberExit.getEventTime().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
             imUserState.setRoomUid(callbackAfterMemberExit.getGroupId());
             imUserStates.add(imUserState);
         }
@@ -2918,7 +2917,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             imUserState.setUserid(userId.toString());
             imUserState.setStatus(userMap.getOrDefault(userId.intValue(), new ImLiveBroadcastRoomMember()).getOnlineStatus() == 1 ? "0" : "1");
             imUserState.setOs(callbackAfterNewMemberJoin.getOptPlatform());
-            imUserState.setTime(callbackAfterNewMemberJoin.getEventTime().atZone(ZoneId.systemDefault()).toEpochSecond());
+            imUserState.setTime(callbackAfterNewMemberJoin.getEventTime().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
             imUserState.setRoomUid(callbackAfterNewMemberJoin.getGroupId());
             imUserStates.add(imUserState);
         }

+ 27 - 3
mec-im/src/main/java/com/ym/controller/UserController.java

@@ -9,6 +9,7 @@ import com.ym.common.BaseResponse;
 import com.ym.mec.biz.dal.dto.TencentData;
 import com.ym.mec.biz.dal.dto.TencentImCallbackResult;
 import com.ym.mec.biz.dal.enums.ETencentImCallbackCommand;
+import com.ym.mec.biz.service.ImGroupService;
 import com.ym.mec.biz.service.ImLiveBroadcastRoomService;
 import com.ym.mec.common.entity.ImUserState;
 import com.ym.service.LiveRoomService;
@@ -48,6 +49,9 @@ public class UserController {
     @Autowired
     private RoomService roomService;
 
+    @Autowired
+    private ImGroupService imGroupService;
+
     @RequestMapping(value = "/register", method = RequestMethod.POST)
     public Object register(@RequestBody UserModel userModel) throws Exception {
         return userService.register(userModel);
@@ -140,6 +144,10 @@ public class UserController {
                     // 学生编号
                     String userId = callbackOnMemberStateChange.getMemberList().get(0).getMemberAccount();
 
+                    if (!imGroupService.checkImUserId(userId)) {
+                        return new TencentImCallbackResult();
+                    }
+
                     String eventType = callbackOnMemberStateChange.getEventType();
                     // 学生离线消息通知
                     if ("Offline".equals(eventType)) {
@@ -188,6 +196,10 @@ public class UserController {
 
                     // 学生编号
                     String userId = callbackAfterMemberExit.getExitMemberList().get(0).getMemberAccount();
+
+                    if (!imGroupService.checkImUserId(userId)) {
+                        return new TencentImCallbackResult();
+                    }
                     try {
                         roomService.leaveRoomSuccess(roomId, userId, null);
                     } catch (Exception e) {
@@ -220,6 +232,10 @@ public class UserController {
 
                     // 学生编号
                     String userId = callbackAfterNewMemberJoin.getNewMemberList().get(0).getMemberAccount();
+
+                    if (!imGroupService.checkImUserId(userId)) {
+                        return new TencentImCallbackResult();
+                    }
                     try {
                         roomService.joinRoomSuccess(roomId, userId, null);
                     } catch (Exception e) {
@@ -233,7 +249,9 @@ public class UserController {
 
         return new TencentImCallbackResult();
     }
-
+    private boolean checkStream(String streamId) {
+        return imGroupService.checkImUserId(streamId.split("_",2)[1]);
+    }
 
     @ApiOperation("腾讯云直播-推流 回调接口")
     @PostMapping(value = "/tencentStreamEventCallback")
@@ -242,7 +260,10 @@ public class UserController {
         log.info("tencentStreamEventCallback body:{}", body);
 
         TencentData.CallbackStreamStateEvent event = TencentData.CallbackStreamStateEvent.from(body);
-
+        boolean b = checkStream(event.getStreamId());
+        if (!b) {
+            return TencentData.StreamEventCallbackResult.builder().code(0).build();
+        }
         // 直播间推流事件
         if (event.getStreamId().startsWith("LIVE")) {
 
@@ -293,7 +314,10 @@ public class UserController {
         log.info("tencentStreamRecordCallback body:{}", body);
 
         TencentData.CallbackSteamRecordEvent event = TencentData.CallbackSteamRecordEvent.from(body);
-
+        boolean b = checkStream(event.getStreamId());
+        if (!b) {
+            return TencentData.StreamEventCallbackResult.builder().code(0).build();
+        }
         // 直播录制事件通知
         if (event.getStreamId().startsWith("LIVE")) {
             log.info("taskId={}, url={}", event.getTaskId(), event.getVideoUrl());