Browse Source

Merge branch 'dev_20230222_live' of http://git.dayaedu.com/yonge/mec into master_saas

zouxuan 2 years ago
parent
commit
761efc5a39

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ImLiveBroadcastRoomDto.java

@@ -55,6 +55,9 @@ public class ImLiveBroadcastRoomDto implements Serializable {
     @ApiModelProperty(value = "播出端-  pc网页端 移动端mobile")
     private String os = "pc";
 
+    @ApiModelProperty(value = "服务提供方 rongCloud tencentCloud")
+    private String serviceProvider;
+
     @ApiModel(value = "房间配置")
     public static class RoomConfig implements Serializable {
 
@@ -193,5 +196,13 @@ public class ImLiveBroadcastRoomDto implements Serializable {
     public void setOs(String os) {
         this.os = os;
     }
+
+    public String getServiceProvider() {
+        return serviceProvider;
+    }
+
+    public void setServiceProvider(String serviceProvider) {
+        this.serviceProvider = serviceProvider;
+    }
 }
 

+ 22 - 27
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -10,8 +10,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import com.google.common.collect.Lists;
 import com.microsvc.toolkit.middleware.live.LivePluginContext;
 import com.microsvc.toolkit.middleware.live.LivePluginService;
-import com.microsvc.toolkit.middleware.live.impl.TencentCloudLivePlugin;
-import com.microsvc.toolkit.middleware.live.message.LiveRoomConfig;
+import com.microsvc.toolkit.middleware.live.message.LiveRoomMessage;
 import com.microsvc.toolkit.middleware.live.message.LiveRoomUser;
 import com.microsvc.toolkit.middleware.live.message.RTCRoom;
 import com.ym.mec.auth.api.client.SysUserFeignService;
@@ -36,7 +35,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 com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
@@ -81,8 +79,6 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
     @Autowired
     private SysUserFeignService sysUserFeignService;
     @Autowired
-    private ImFeignService imFeignService;
-    @Autowired
     private RedissonClient redissonClient;
     @Autowired
     private SysMessageService sysMessageService;
@@ -98,8 +94,6 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
     private ImLiveRoomReservationService imLiveRoomReservationService;
     @Autowired
     private ImLiveRoomBlackService imLiveRoomBlackService;
-    @Autowired
-    private TencentCloudLivePlugin tencentCloudLivePlugin;
 
     @Autowired
     private LivePluginContext livePluginContext;
@@ -224,21 +218,18 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         if (count > 0) {
             room.setBlacklistFlag(1);
         }
-
+        LivePluginService pluginService = livePluginContext.getPluginService(room.getServiceProvider());
         // 直播房间配置信息
         String userSig = "";
         try {
-            userSig = tencentCloudLivePlugin.register(String.valueOf(sysUser.getId()), sysUser.getUsername(),
+            userSig = pluginService.register(String.valueOf(sysUser.getId()), sysUser.getUsername(),
                     sysUser.getAvatar());
-
         } catch (Exception e) {
             log.error("直播房间用户注册失败: userId={}", sysUser.getId(), e);
         }
 
         // 直播间配置信息
-        LiveRoomConfig liveRoomConfig = tencentCloudLivePlugin.getLiveRoomConfig();
-
-        return room.userSig(userSig).liveRoomConfig(liveRoomConfig);
+        return room.userSig(userSig).liveRoomConfig(pluginService.getLiveRoomConfig());
     }
 
     /**
@@ -615,12 +606,13 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
 
         //向聊天室发自定义消息踢出所有人
         try {
-            ImRoomMessage message = new ImRoomMessage();
+            LiveRoomMessage message = new LiveRoomMessage();
             message.setIsIncludeSender(1);
             message.setFromUserId(speakerId.toString());
-            message.setToChatroomId(roomUid);
+            message.setToChatRoomId(roomUid);
             message.setObjectName(ImRoomMessage.FORCED_OFFLINE);
-            imFeignService.publishRoomMsg(message);
+            LivePluginService pluginService = livePluginContext.getPluginService(room.getServiceProvider());
+            pluginService.sendChatRoomMessage(message);
             log.info("roomDestroy>>>> FORCED_OFFLINE {}", JSONObject.toJSONString(message));
             //销毁直播间
 //            imFeignService.destroyLiveRoom(roomUid);
@@ -788,17 +780,19 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             //从在线人员列表删除该人员
             onlineUserInfo.fastRemove(userId);
             //向直播间发送当前在线人数消息
-            this.sendOnlineUserCount(roomUid, userId, onlineUserInfo.size());
+            ImLiveBroadcastRoomVo roomVo = this.getImLiveBroadcastRoomVo(roomUid);
+            this.sendOnlineUserCount(roomVo, userId, onlineUserInfo.size());
             log.info("opsRoom>>>> looker userInfo: {}", JSONObject.toJSONString(userInfo));
             //用户离开直播间发送退出房间消息给主讲人
-            ImRoomMessage message = new ImRoomMessage();
+            LiveRoomMessage message = new LiveRoomMessage();
             message.setIsIncludeSender(1);
             message.setFromUserId(userId.toString());
-            message.setToChatroomId(roomUid);
+            message.setToChatRoomId(roomUid);
             message.setObjectName(ImRoomMessage.LOOKER_LOGIN_OUT);
             message.setContent(userId);
             try {
-                imFeignService.publishRoomMsg(message);
+                LivePluginService pluginService = livePluginContext.getPluginService(roomVo.getServiceProvider());
+                pluginService.sendChatRoomMessage(message);
                 log.info("opsRoom>>>> looker LOOKER_LOGIN_OUT : {}", JSONObject.toJSONString(userInfo));
             } catch (Exception e) {
                 log.error("opsRoom>>>>  looker error LOOKER_LOGIN_OUT {}", e.getMessage());
@@ -810,27 +804,28 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
     /**
      * 向直播间发送当前在线人数消息
      *
-     * @param roomUid    房间uid
+     * @param roomVo    直播间
      * @param fromUserId 发送人id
      * @param count      人数
      */
-    private void sendOnlineUserCount(String roomUid, Integer fromUserId, Integer count) {
+    private void sendOnlineUserCount(ImLiveBroadcastRoomVo roomVo, Integer fromUserId, Integer count) {
+        String roomUid = roomVo.getRoomUid();
         //校验传入参数,房间uid和发送人id不能为空
         if (!WrapperUtil.checkObj(roomUid, fromUserId, count)) {
             log.info(" sendOnlineUserCount>>>> param is null   roomUid: {}  fromUserId:{}  count:{}", roomUid, fromUserId, count);
             return;
         }
-        ImRoomMessage message = new ImRoomMessage();
+        LiveRoomMessage message = new LiveRoomMessage();
         message.setIsIncludeSender(1);
         message.setObjectName(ImRoomMessage.MEMBER_COUNT);
-        message.setToChatroomId(roomUid);
+        message.setToChatRoomId(roomUid);
         HashMap<String, Integer> sendMap = new HashMap<>();
         sendMap.put("count", count);
         message.setFromUserId(fromUserId.toString());
         message.setContent(sendMap);
         //发送消息
         try {
-            imFeignService.publishRoomMsg(message);
+            livePluginContext.getPluginService(roomVo.getServiceProvider()).sendChatRoomMessage(message);
             log.info("sendOnlineUserCount>>>> message: {}", JSONObject.toJSONString(message));
         } catch (Exception e) {
             log.error("sendOnlineUserCount>>>> error {}", e.getMessage());
@@ -960,7 +955,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         //进入房间写如在线人员列表
         onlineUserInfo.fastPut(userId, JSONObject.toJSONString(userInfo));
         //向直播间发送当前在线人数消息
-        this.sendOnlineUserCount(roomUid, userId, onlineUserInfo.size());
+        this.sendOnlineUserCount(imLiveBroadcastRoomVo, userId, onlineUserInfo.size());
         log.info("join sendOnlineUserCount>>>>   roomUid: {}  fromUserId:{}  count:{}", roomUid, userId, onlineUserInfo.size());
         log.info("joinRoom>>>> userInfo: {}", JSONObject.toJSONString(userInfo));
     }
@@ -985,7 +980,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         if (intEquals(roomSpeakerInfo.getWhetherVideo(), 0)) {
             //开始录制视频
             try {
-                imFeignService.startRecord(roomUid, videoResolution);
+//                imFeignService.startRecord(roomUid, videoResolution);
 
                 // 查询房间信息
                 ImLiveBroadcastRoomVo imLiveBroadcastRoomVo = getImLiveBroadcastRoomVo(roomUid);

+ 6 - 11
mec-web/src/main/java/com/ym/mec/web/controller/APIController.java

@@ -1,30 +1,27 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
+import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dto.StudentVipGroupShowListDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.page.StudentVipGroupQueryInfo;
 import com.ym.mec.biz.service.*;
+import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.entity.MallCreateOrderModel;
 import com.ym.mec.common.entity.OrderCancelModel;
 import com.ym.mec.common.entity.RefundModel;
-import com.ym.mec.thirdparty.adapay.Payment;
 import com.ym.mec.thirdparty.adapay.entity.BaseResult;
 import io.swagger.annotations.Api;
-
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.EmployeeDao;
-import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
-import com.ym.mec.common.controller.BaseController;
-
 import java.math.BigDecimal;
 import java.util.HashMap;
 import java.util.List;
@@ -35,8 +32,6 @@ import java.util.Map;
 @RestController
 public class APIController extends BaseController {
 	@Autowired
-	private OrderPayOpsService orderPayOpsService;
-	@Autowired
 	private SysUserCashAccountDao sysUserCashAccountDao;
 	@Autowired
 	private TeacherDao teacherDao;