liujc преди 2 години
родител
ревизия
70732f6667

+ 30 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/ImController.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.admin.controller.open;
 
 import com.alibaba.fastjson.JSON;
 import com.google.common.collect.Lists;
+import com.microsvc.toolkit.middleware.im.properties.ImConfigProperties;
 import com.microsvc.toolkit.middleware.live.LivePluginContext;
 import com.microsvc.toolkit.middleware.live.LivePluginService;
 import com.microsvc.toolkit.middleware.live.impl.TencentCloudLivePlugin;
@@ -69,6 +70,10 @@ public class ImController extends BaseController {
     @Autowired
     private ImGroupService imGroupService;
 
+    @Autowired
+    private ImConfigProperties imConfig;
+
+
     @ApiOperation("新用户添加客服")
     @PostMapping(value = "/im/customerService")
     public HttpResponseResult<Boolean> customerService(@RequestBody UserFriendInfoVO info) {
@@ -156,6 +161,9 @@ public class ImController extends BaseController {
             callbackOnMemberStateChange.setClientIP(clientIP);
             callbackOnMemberStateChange.setOptPlatform(optPlatform);
             for (TencentData.MemberListDTO memberListDTO : callbackOnMemberStateChange.getMemberList()) {
+                if (imGroupService.checkImUserId(memberListDTO.getMemberAccount())) {
+                    return new TencentImCallbackResult();
+                }
                 memberListDTO.setMemberAccount(imGroupService.analysisImUserId(memberListDTO.getMemberAccount()));
             }
             // 直播间成员状态变更
@@ -169,6 +177,9 @@ public class ImController extends BaseController {
             callbackAfterMemberExit.setClientIP(clientIP);
             callbackAfterMemberExit.setOptPlatform(optPlatform);
             for (TencentData.MemberListDTO memberListDTO : callbackAfterMemberExit.getExitMemberList()) {
+                if (imGroupService.checkImUserId(memberListDTO.getMemberAccount())) {
+                    return new TencentImCallbackResult();
+                }
                 memberListDTO.setMemberAccount(imGroupService.analysisImUserId(memberListDTO.getMemberAccount()));
             }
             // 直播间成员状态变更
@@ -182,6 +193,9 @@ public class ImController extends BaseController {
             callbackAfterNewMemberJoin.setClientIP(clientIP);
             callbackAfterNewMemberJoin.setOptPlatform(optPlatform);
             for (TencentData.MemberListDTO memberListDTO : callbackAfterNewMemberJoin.getNewMemberList()) {
+                if (imGroupService.checkImUserId(memberListDTO.getMemberAccount())) {
+                    return new TencentImCallbackResult();
+                }
                 memberListDTO.setMemberAccount(imGroupService.analysisImUserId(memberListDTO.getMemberAccount()));
             }
             // 直播间成员状态变更
@@ -201,6 +215,10 @@ public class ImController extends BaseController {
 
         TencentData.CallbackStreamStateEvent event = TencentData.CallbackStreamStateEvent.from(body);
 
+        boolean b = checkStream(event.getStreamId());
+        if (!b) {
+            return TencentData.StreamEventCallbackResult.builder().code(0).build();
+        }
 
         ImUserStateSync imUserState = new ImUserStateSync();
         imUserState.setUserid(getSpeakerId(event.getStreamId()).toString());
@@ -232,6 +250,12 @@ public class ImController extends BaseController {
         return TencentData.StreamEventCallbackResult.builder().code(0).build();
     }
 
+
+    private boolean checkStream(String streamId) {
+        return imGroupService.checkImUserId(streamId.split("_",2)[1]);
+    }
+
+
     private Integer getSpeakerId(String streamId) {
         return Integer.parseInt(imGroupService.analysisImUserId(streamId.split("_",2)[1]));
     }
@@ -248,6 +272,12 @@ public class ImController extends BaseController {
 
         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());

+ 9 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupService.java

@@ -1,6 +1,5 @@
 package com.yonge.cooleshow.biz.dal.service;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper;
 import com.microsvc.toolkit.middleware.rtc.RTCRoomPluginService;
@@ -8,7 +7,6 @@ import com.yonge.cooleshow.biz.dal.dao.ImGroupDao;
 import com.yonge.cooleshow.biz.dal.dto.BasicUserInfo;
 import com.yonge.cooleshow.biz.dal.dto.ImGroupResultDto;
 import com.yonge.cooleshow.biz.dal.dto.ImGroupSearchDto;
-import com.yonge.cooleshow.biz.dal.entity.CourseSchedule;
 import com.yonge.cooleshow.biz.dal.entity.ImGroup;
 import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
 import com.yonge.cooleshow.biz.dal.entity.ImHistoryMessage;
@@ -61,6 +59,15 @@ public interface ImGroupService extends IService<ImGroup> {
      */
     String analysisImUserId(String imUserId);
 
+
+    /**
+     * 检测imUserid
+     *
+     * @param imUserId IM用户Id
+     * @return String
+     */
+    boolean checkImUserId(String imUserId);
+
     String analysisImUserClient(String imUserId);
 
     /**

+ 12 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupServiceImpl.java

@@ -48,7 +48,6 @@ import io.rong.methods.message.history.History;
 import io.rong.models.Result;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.checkerframework.checker.units.qual.A;
 import org.redisson.api.RBucket;
 import org.redisson.api.RedissonClient;
 import org.slf4j.Logger;
@@ -238,6 +237,18 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
         return imUserId;
     }
 
+
+    /**
+     * 检测imUserid
+     *
+     * @param imUserId IM用户Id
+     * @return String
+     */
+    @Override
+    public boolean checkImUserId(String imUserId) {
+       return imUserId.startsWith(imConfig.getAppPrefix());
+    }
+
     @Override
     public String analysisImUserClient(String imUserId) {
         if (StringUtils.isNotBlank(imConfig.getAppPrefix()) && imUserId.startsWith(imConfig.getAppPrefix())) {