소스 검색

Merge branch 'dev_20230222_live' into master_saas

liujunchi 2 년 전
부모
커밋
59eb4faadc

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

@@ -3,6 +3,7 @@ package com.ym.mec.biz.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.ImLiveRoomBlack;
+import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
 import com.ym.mec.biz.dal.vo.ImLiveRoomBlackVo;
 import com.ym.mec.common.page.PageInfo;
 
@@ -53,10 +54,10 @@ public interface ImLiveRoomBlackService extends IService<ImLiveRoomBlack> {
     /**
      * 发送黑名单消息到直播房间
      *
-     * @param roomUid    房间uid
+     * @param roomVo    房间
      * @param fromUserId 发送人id
      * @param userId     用户id
      */
-    void sendBlackMsg(String roomUid, Integer fromUserId, Integer userId, String type);
+    void sendBlackMsg(ImLiveBroadcastRoomVo roomVo, Integer fromUserId, Integer userId, String type);
 }
 

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

@@ -12,6 +12,7 @@ import com.microsvc.toolkit.middleware.live.LivePluginContext;
 import com.microsvc.toolkit.middleware.live.LivePluginService;
 import com.microsvc.toolkit.middleware.live.message.LiveRoomMessage;
 import com.microsvc.toolkit.middleware.live.message.LiveRoomUser;
+import com.microsvc.toolkit.middleware.live.message.RTCRequest;
 import com.microsvc.toolkit.middleware.live.message.RTCRoom;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
@@ -995,8 +996,12 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
                     return;
                 }
 
-                pluginService.rtcRoomRecordStop(rtcRoom.getSessionId());
-                // pluginService.rtcRoomRecordStart(roomUid, videoResolution);
+                pluginService.rtcRoomRecordStart(RTCRequest.RecordStart.builder()
+                        .sessionId(rtcRoom.getSessionId())
+                         .config(RTCRequest.RecordConfig.builder()
+                                .videoResolution(videoResolution)
+                                .build())
+                        .build());
             } catch (Exception e) {
                 log.error("startRecord error: {}", e.getMessage());
             }

+ 32 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveRoomBlackServiceImpl.java

@@ -5,11 +5,16 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.microsvc.toolkit.middleware.live.LivePluginContext;
+import com.microsvc.toolkit.middleware.live.LivePluginService;
+import com.microsvc.toolkit.middleware.live.message.LiveRoomMessage;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.ImLiveRoomBlackDao;
 import com.ym.mec.biz.dal.entity.ImLiveRoomBlack;
+import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
 import com.ym.mec.biz.dal.vo.ImLiveRoomBlackVo;
+import com.ym.mec.biz.service.ImLiveBroadcastRoomService;
 import com.ym.mec.biz.service.ImLiveRoomBlackService;
 import com.ym.mec.common.entity.ImRoomMessage;
 import com.ym.mec.common.exception.BizException;
@@ -17,7 +22,6 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.PageUtil;
 import com.ym.mec.common.page.WrapperUtil;
 import com.ym.mec.common.tenant.TenantContextHolder;
-import com.ym.mec.im.ImFeignService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -40,7 +44,9 @@ public class ImLiveRoomBlackServiceImpl extends ServiceImpl<ImLiveRoomBlackDao,
     @Autowired
     private SysUserFeignService sysUserFeignService;
     @Autowired
-    private ImFeignService imFeignService;
+    private LivePluginContext livePluginContext;
+    @Autowired
+    private ImLiveBroadcastRoomService imLiveBroadcastRoomService;
 
     /**
      * 查询当前机构学生 -下拉框
@@ -73,6 +79,7 @@ public class ImLiveRoomBlackServiceImpl extends ServiceImpl<ImLiveRoomBlackDao,
     public void add(Map<String, Object> param) {
         String roomUid = WrapperUtil.toStr(param, "roomUid");
         List<String> userIdList = WrapperUtil.toList(WrapperUtil.toStr(param, "userIdList", "用户id不能为空"));
+
         userIdList.forEach(userIdStr -> {
             Integer userId = Integer.parseInt(userIdStr);
             int count = this.count(Wrappers.<ImLiveRoomBlack>lambdaQuery()
@@ -88,10 +95,16 @@ public class ImLiveRoomBlackServiceImpl extends ServiceImpl<ImLiveRoomBlackDao,
             imLiveRoomBlack.setCreateBy(getSysUser().getId());
             imLiveRoomBlack.setCreateTime(new Date());
             this.save(imLiveRoomBlack);
+            ImLiveBroadcastRoomVo roomVo = imLiveBroadcastRoomService.queryRoomInfo(roomUid);
             //发送消息到直播房间
-            this.sendBlackMsg(roomUid, userId, userId, ImRoomMessage.BLOCK_BLACK_USER);
+            this.sendBlackMsg(roomVo, userId, userId, ImRoomMessage.BLOCK_BLACK_USER);
             //调用融云方法加入禁言
-            imFeignService.addUserUnableSpeak(roomUid, userIdStr);
+            LivePluginService pluginService = livePluginContext.getPluginService(roomVo.getServiceProvider());
+            try {
+                pluginService.chatRoomUserGagCreate(userIdStr, roomUid, -1);
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
         });
     }
 
@@ -107,15 +120,21 @@ public class ImLiveRoomBlackServiceImpl extends ServiceImpl<ImLiveRoomBlackDao,
     public void delete(Map<String, Object> param) {
         String roomUid = WrapperUtil.toStr(param, "roomUid");
         List<String> userIdList = WrapperUtil.toList(WrapperUtil.toStr(param, "userIdList", "用户id不能为空"));
+        ImLiveBroadcastRoomVo roomVo = imLiveBroadcastRoomService.queryRoomInfo(roomUid);
         userIdList.forEach(userIdStr -> {
             Integer userId = Integer.parseInt(userIdStr);
             this.remove(Wrappers.<ImLiveRoomBlack>lambdaQuery()
                     .eq(ImLiveRoomBlack::getRoomUid, roomUid)
                     .eq(ImLiveRoomBlack::getUserId, userId));
             //发送消息到直播房间
-            this.sendBlackMsg(roomUid, userId, userId, ImRoomMessage.UNBLOCK_BLACK_USER);
+            this.sendBlackMsg(roomVo, userId, userId, ImRoomMessage.UNBLOCK_BLACK_USER);
             //调用融云方法加入禁言
-            imFeignService.removeUserUnableSpeak(roomUid, userIdStr);
+            LivePluginService pluginService = livePluginContext.getPluginService(roomVo.getServiceProvider());
+            try {
+                pluginService.chatRoomuserGagRemove(userIdStr,roomUid);
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
         });
     }
 
@@ -136,27 +155,29 @@ public class ImLiveRoomBlackServiceImpl extends ServiceImpl<ImLiveRoomBlackDao,
     /**
      * 发送黑名单消息到直播房间
      *
-     * @param roomUid    房间uid
+     * @param roomVo    房间uid
      * @param fromUserId 发送人id
      * @param userId     用户id
      */
-    public void sendBlackMsg(String roomUid, Integer fromUserId, Integer userId, String type) {
+    public void sendBlackMsg(ImLiveBroadcastRoomVo roomVo, Integer fromUserId, Integer userId, String type) {
+        String roomUid = roomVo.getRoomUid();
         //校验传入参数,房间uid和发送人id不能为空
         if (!WrapperUtil.checkObj(roomUid, fromUserId, userId, type)) {
             log.info(" sendBlackMsg>>>> param is null   roomUid: {}  fromUserId:{}  type:{}", roomUid, fromUserId, type);
             return;
         }
-        ImRoomMessage message = new ImRoomMessage();
+        LiveRoomMessage message = new LiveRoomMessage();
         message.setIsIncludeSender(1);
         message.setObjectName(type);
-        message.setToChatroomId(roomUid);
+        message.setToChatRoomId(roomUid);
         HashMap<String, Integer> sendMap = new HashMap<>();
         sendMap.put("userId", userId);
         message.setFromUserId(fromUserId.toString());
         message.setContent(sendMap);
         //发送消息
         try {
-            imFeignService.publishRoomMsg(message);
+            LivePluginService pluginService = livePluginContext.getPluginService(roomVo.getServiceProvider());
+            pluginService.sendChatRoomMessage(message);
             log.info("sendBlackMsg>>>> message: {}", JSONObject.toJSONString(message));
         } catch (Exception e) {
             log.error("sendBlackMsg>>>> error {}", e.getMessage());

+ 0 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveRoomReservationServiceImpl.java

@@ -1,7 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -10,11 +9,9 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.ImLiveRoomReservationDao;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoom;
 import com.ym.mec.biz.dal.entity.ImLiveRoomReservation;
-import com.ym.mec.biz.dal.entity.Student;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
 import com.ym.mec.biz.service.ImLiveRoomReservationService;
-import com.ym.mec.biz.service.StudentService;
 import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
@@ -46,8 +43,6 @@ public class ImLiveRoomReservationServiceImpl extends ServiceImpl<ImLiveRoomRese
     @Autowired
     private SysUserFeignService sysUserFeignService;
     @Autowired
-    private StudentService studentService;
-    @Autowired
     private SysMessageService sysMessageService;
 
     /**

+ 0 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImSendGroupMessageServiceImpl.java

@@ -3,7 +3,6 @@ package com.ym.mec.biz.service.impl;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.ImSendGroupMessageDao;
-import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.entity.ImSendGroupMessage;
 import com.ym.mec.biz.dal.enums.ImSendTypeEnum;
 import com.ym.mec.biz.service.ImSendGroupMessageService;
@@ -28,8 +27,6 @@ public class ImSendGroupMessageServiceImpl extends BaseServiceImpl<Long, ImSendG
 	private SysMessageService sysMessageService;
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
-	@Autowired
-	private SysConfigDao sysConfigDao;
 
 	@Override
 	public BaseDAO<Long, ImSendGroupMessage> getDAO() {

+ 11 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/LiveGoodsMapperServiceImpl.java

@@ -1,6 +1,8 @@
 package com.ym.mec.biz.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.microsvc.toolkit.middleware.live.LivePluginContext;
+import com.microsvc.toolkit.middleware.live.message.LiveRoomMessage;
 import com.ym.mec.biz.dal.dao.LiveGoodsMapperDao;
 import com.ym.mec.biz.dal.dto.LiveGoodsMapperDto;
 import com.ym.mec.biz.dal.dto.RedisKeyConstant;
@@ -15,7 +17,6 @@ import com.ym.mec.common.entity.ImRoomMessage;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
-import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.collection.MapUtil;
 import org.apache.commons.collections.CollectionUtils;
 import org.redisson.api.RedissonClient;
@@ -24,7 +25,6 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
-import java.util.stream.Collectors;
 
 @Service
 public class LiveGoodsMapperServiceImpl extends BaseServiceImpl<Integer, LiveGoodsMapper>  implements LiveGoodsMapperService {
@@ -34,7 +34,7 @@ public class LiveGoodsMapperServiceImpl extends BaseServiceImpl<Integer, LiveGoo
 	@Autowired
 	private LiveGoodsMapperDao liveGoodsMapperDao;
 	@Autowired
-	private ImFeignService imFeignService;
+	private LivePluginContext livePluginContext;
 	@Autowired
 	private ImLiveBroadcastRoomService imLiveBroadcastRoomService;
 	@Autowired
@@ -104,13 +104,18 @@ public class LiveGoodsMapperServiceImpl extends BaseServiceImpl<Integer, LiveGoo
 	}
 
 	private void publishRoomMsg(ImLiveBroadcastRoom imLiveBroadcastRoom) {
-		ImRoomMessage message = new ImRoomMessage();
+		LiveRoomMessage message = new LiveRoomMessage();
 		message.setIsIncludeSender(1);
 		message.setObjectName(ImRoomMessage.LIVE_GOODS_CHANGE);
-		message.setToChatroomId(imLiveBroadcastRoom.getRoomUid());
+		message.setToChatRoomId(imLiveBroadcastRoom.getRoomUid());
 		message.setFromUserId(imLiveBroadcastRoom.getSpeakerId().toString());
 		message.setContent(liveGoodsMapperDao.getLiveGoodsList(imLiveBroadcastRoom.getRoomUid(),null,true));
-		imFeignService.publishRoomMsg(message);
+		try {
+			livePluginContext.getPluginService(imLiveBroadcastRoom.getServiceProvider())
+					.sendChatRoomMessage(message);
+		} catch (Exception e) {
+			throw new RuntimeException(e);
+		}
 	}
 
 	@Override

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/ImLiveBroadcastRoomMapper.xml

@@ -92,6 +92,9 @@
             <if test="param.speakerId != null">
                 and  a.speaker_id_ = #{param.speakerId}
             </if>
+            <if test="param.serviceProvider != null and param.serviceProvider != ''">
+                and  a.service_provider_ = #{param.serviceProvider}
+            </if>
         </where>
     </select>
 

+ 26 - 0
mec-im/src/main/java/com/ym/common/ETencentImCallbackCommand.java

@@ -0,0 +1,26 @@
+package com.ym.common;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2023-03-02
+ */
+public enum ETencentImCallbackCommand {
+
+    STATE_STATECHANGE("State.StateChange", "用户状态变更"),
+
+    ;
+
+    private String command;
+    private String desc;
+
+    private final String code;
+
+    ETencentImCallbackCommand(String command, String desc) {
+        this.command = command;
+        this.desc = desc;
+
+        this.code = this.name();
+    }
+}

+ 1 - 1
mec-im/src/main/java/com/ym/config/ResourceServerConfig.java

@@ -16,7 +16,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
                         "/group/dismiss", "/room/statusImMsg", "/history/get", "/user/statusImUser", "/liveRoom/recordSync",
                         "/liveRoom/publishRoomMsg", "/liveRoom/destroy", "/liveRoom/create", "/liveRoom/startRecord",
                         "/liveRoom/stopRecord", "/liveRoom/userExistInRoom","/liveRoom/checkOnline",
-                        "/liveRoom/addUserUnableSpeak","/liveRoom/removeUserUnableSpeak","/liveRoom/syncChatRoomStatus")
+                        "/liveRoom/addUserUnableSpeak","/liveRoom/removeUserUnableSpeak","/liveRoom/syncChatRoomStatus","/liveRoom/tencentImCallback")
                 .permitAll().anyRequest().authenticated().and().csrf().disable();
     }
 }

+ 14 - 0
mec-im/src/main/java/com/ym/controller/LiveRoomController.java

@@ -1,9 +1,11 @@
 package com.ym.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.common.entity.ImRoomMessage;
 import com.ym.pojo.IMApiResultInfo;
 import com.ym.pojo.RecordNotify;
+import com.ym.pojo.TencentImCallbackResult;
 import com.ym.service.LiveRoomService;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -13,6 +15,8 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpServletRequest;
+
 /**
  * @author hgw
  * Created by 2022-02-21
@@ -96,4 +100,14 @@ public class LiveRoomController {
         log.info("syncChatRoomStatus body:{}", body);
     }
 
+
+    @ApiOperation("腾讯im 回调接口")
+    @PostMapping(value = "/tencentImCallback")
+    public TencentImCallbackResult tencentImCallback(@RequestBody String body, HttpServletRequest request) {
+        log.info("tencentImCallback body:{}", body);
+
+        log.info("tencentImCallback request param:{}", JSON.toJSONString(request.getParameterMap()));
+
+        return new TencentImCallbackResult();
+    }
 }

+ 40 - 0
mec-im/src/main/java/com/ym/pojo/TencentImCallbackResult.java

@@ -0,0 +1,40 @@
+package com.ym.pojo;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2023-03-02
+ */
+public class TencentImCallbackResult {
+
+    private String ActionStatus = "OK";
+
+    private String ErrorInfo;
+
+    private int ErrorCode = 0;
+
+    public String getActionStatus() {
+        return ActionStatus;
+    }
+
+    public void setActionStatus(String actionStatus) {
+        ActionStatus = actionStatus;
+    }
+
+    public String getErrorInfo() {
+        return ErrorInfo;
+    }
+
+    public void setErrorInfo(String errorInfo) {
+        ErrorInfo = errorInfo;
+    }
+
+    public int getErrorCode() {
+        return ErrorCode;
+    }
+
+    public void setErrorCode(int errorCode) {
+        ErrorCode = errorCode;
+    }
+}