Przeglądaj źródła

添加直播服务提供方

liujunchi 2 lat temu
rodzic
commit
49def449dd

+ 3 - 3
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/UserController.java

@@ -410,7 +410,7 @@ public class UserController extends BaseController {
 		QRLoginDto qrLoginDto = new QRLoginDto();
 		qrLoginDto.setCode(uuid);
 		qrLoginDto.setClientId(clientId);
-		redisCache.put(uuid,qrLoginDto,50*60);
+		redisCache.put(uuid,qrLoginDto,5*60);
 		return succeed(uuid);
 	}
 
@@ -452,7 +452,7 @@ public class UserController extends BaseController {
 			qrLoginDto.setExpireFlag(true);
 			return succeed(qrLoginDto);
 		}
-		redisCache.put(code,data,50*60);
+		redisCache.put(code,data,5*60);
 		return succeed( (QRLoginDto) data);
 	}
 
@@ -482,7 +482,7 @@ public class UserController extends BaseController {
 
 		String uuid = UUID.randomUUID().toString();
 		dto.setPrivateKey(uuid);
-		redisCache.put(code,dto,50*60);
+		redisCache.put(code,dto,5*60);
 
 		dto.setUserInfo(null);
 

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImLiveBroadcastRoom.java

@@ -4,6 +4,7 @@ import java.util.Date;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.ym.mec.biz.dal.enums.LiveServiceProviderEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import com.baomidou.mybatisplus.annotation.TableId;
@@ -82,6 +83,10 @@ public class ImLiveBroadcastRoom implements Serializable {
     @ApiModelProperty(value = "播出端-  pc网页端 移动端mobile")
     private String os = "pc";
 
+    @TableField("service_provider_")
+    @ApiModelProperty(value = "服务提供方 RONG_CLOUD TENCENT_CLOUD")
+    private String serviceProvider;
+
     @TableField("created_by_")
     @ApiModelProperty(value = "创建人")
     private Integer createdBy;
@@ -100,6 +105,14 @@ public class ImLiveBroadcastRoom implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    public String getServiceProvider() {
+        return serviceProvider;
+    }
+
+    public void setServiceProvider(String serviceProvider) {
+        this.serviceProvider = serviceProvider;
+    }
+
     public Integer getId() {
         return id;
     }

+ 43 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/LiveServiceProviderEnum.java

@@ -0,0 +1,43 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.ym.mec.common.enums.BaseEnum;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2023-02-28
+ */
+public enum LiveServiceProviderEnum  implements BaseEnum<String, LevelEnum> {
+    RONG_CLOUD("融云"),
+    TENCENT_CLOUD("腾讯云"),
+    ;
+
+    private String code;
+    private String msg;
+
+    LiveServiceProviderEnum(String msg) {
+        this.code = this.name();
+        this.msg = msg;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+
+
+    public static LiveServiceProviderEnum getByName(String name) {
+        for (LiveServiceProviderEnum level : LiveServiceProviderEnum.values()) {
+            if (level.getMsg().equals(name)) {
+                return level;
+            }
+        }
+        return null;
+    }
+
+}

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/ImLiveBroadcastRoomVo.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.vo;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.microsvc.toolkit.middleware.live.message.LiveRoomConfig;
 import io.swagger.annotations.ApiModel;
@@ -96,9 +97,21 @@ public class ImLiveBroadcastRoomVo implements Serializable {
     @ApiModelProperty("直播间用户签名")
     private String userSig;
 
+
+    @ApiModelProperty(value = "服务提供方 RONG_CLOUD TENCENT_CLOUD")
+    private String serviceProvider;
+
     @ApiModelProperty("直播配置")
     private LiveRoomConfig liveRoomConfig;
 
+    public String getServiceProvider() {
+        return serviceProvider;
+    }
+
+    public void setServiceProvider(String serviceProvider) {
+        this.serviceProvider = serviceProvider;
+    }
+
     public Integer getId() {
         return id;
     }

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

@@ -8,8 +8,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 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.RTCRoom;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.ImLiveBroadcastRoomDao;
@@ -97,6 +100,9 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
     @Autowired
     private TencentCloudLivePlugin tencentCloudLivePlugin;
 
+    @Autowired
+    private LivePluginContext livePluginContext;
+
     //待替换的变量
     public static final String USER_ID = "${userId}";
     public static final String ROOM_UID = "${roomUid}";
@@ -978,6 +984,22 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             //开始录制视频
             try {
                 imFeignService.startRecord(roomUid, videoResolution);
+
+                // 查询房间信息
+                ImLiveBroadcastRoomVo imLiveBroadcastRoomVo = getImLiveBroadcastRoomVo(roomUid);
+                if (Objects.isNull(imLiveBroadcastRoomVo)) {
+                    log.info("opsRoom>>>> startRecord error roomUid: {}", roomUid);
+                    return;
+                }
+                LivePluginService pluginService = livePluginContext.getPluginService(imLiveBroadcastRoomVo.getServiceProvider());
+                RTCRoom rtcRoom = pluginService.rtcRoomInfo(roomSpeakerInfo.getRoomUid());
+                if (rtcRoom == null) {
+                    log.info("startRecord>>>> rtcRoom is null");
+                    return;
+                }
+
+                pluginService.rtcRoomRecordStop(rtcRoom.getSessionId());
+                // pluginService.rtcRoomRecordStart(roomUid, videoResolution);
             } catch (Exception e) {
                 log.error("startRecord error: {}", e.getMessage());
             }
@@ -1024,7 +1046,22 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         if (whetherVideoFlag && stateFlag) {
             try {
                 //停止录制视频
-                imFeignService.stopRecord(roomSpeakerInfo.getRoomUid());
+                // imFeignService.stopRecord(roomSpeakerInfo.getRoomUid());
+
+                // 查询房间信息
+                ImLiveBroadcastRoomVo imLiveBroadcastRoomVo = getImLiveBroadcastRoomVo(roomSpeakerInfo.getRoomUid());
+                if (imLiveBroadcastRoomVo == null) {
+                    log.warn("closeLive imLiveBroadcastRoomVo is null");
+                    return;
+                }
+                LivePluginService pluginService = livePluginContext.getPluginService(imLiveBroadcastRoomVo.getServiceProvider());
+                RTCRoom rtcRoom = pluginService.rtcRoomInfo(roomSpeakerInfo.getRoomUid());
+                if (rtcRoom == null) {
+                    log.warn("closeLive rtcRoom is null");
+                    return;
+                }
+
+                pluginService.rtcRoomRecordStop(rtcRoom.getSessionId());
             } catch (Exception e) {
                 log.error("stopRecord error: {}", e.getMessage());
             }
@@ -1126,7 +1163,10 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             SysUser sysUser = getSysUser(room.getSpeakerId());
             createSpeakerInfo(room, sysUser);
             //去融云创建房间
-            imFeignService.createLiveRoom(room.getRoomUid(), room.getRoomTitle());
+            LivePluginService pluginService = livePluginContext.getPluginService(room.getServiceProvider());
+            pluginService.chatRoomCreate(room.getRoomUid(),room.getRoomTitle(),sysUser.getId().toString());
+
+            // imFeignService.createLiveRoom(room.getRoomUid(), room.getRoomTitle());
             //推送预约直播间消息
             imLiveRoomReservationService.push(room);
             //推送直播开始消息

+ 2 - 1
mec-biz/src/main/resources/config/mybatis/ImLiveBroadcastRoomMapper.xml

@@ -57,7 +57,8 @@
         a.pre_template_ AS preTemplate,
         a.room_config_ AS roomConfig,
         a.popularize_ AS popularize,
-        a.popularize_type_ AS popularizeType
+        a.popularize_type_ AS popularizeType,
+        a.service_provider_ as serviceProvider
         from im_live_broadcast_room as a
         left join tenant_info AS t on a.tenant_id_ = t.id_
         left join sys_user AS b on a.speaker_id_ = b.id_