This commit is contained in:
parent
9a7c0c61d0
commit
6106f06f8a
|
|
@ -24,7 +24,7 @@
|
||||||
"LinuxServerList": [
|
"LinuxServerList": [
|
||||||
{
|
{
|
||||||
"UserName": "marking",
|
"UserName": "marking",
|
||||||
"Pwd": "0610DBF49053E6779393A74BE1ED4FD2",
|
"Pwd": "CE09921E2AD09E56095579DF1F7C614B",
|
||||||
"Host": "47.109.67.254:10022",
|
"Host": "47.109.67.254:10022",
|
||||||
"NickName": "marking001",
|
"NickName": "marking001",
|
||||||
"IIsFireUrl": null,
|
"IIsFireUrl": null,
|
||||||
|
|
@ -115,11 +115,11 @@
|
||||||
"DockerConfig": {
|
"DockerConfig": {
|
||||||
"Prot": "5192:5192",
|
"Prot": "5192:5192",
|
||||||
"AspNetCoreEnv": "",
|
"AspNetCoreEnv": "",
|
||||||
"LastEnvName": "29dev",
|
"LastEnvName": "marking001",
|
||||||
"RemoveDaysFromPublished": "10",
|
"RemoveDaysFromPublished": "10",
|
||||||
"WorkDir": "",
|
"WorkDir": "",
|
||||||
"Volume": "",
|
"Volume": "",
|
||||||
"Other": "--name wgshare-api -e ASPNETCORE_ENVIRONMENT=Development -e TZ=Asia/Shanghai",
|
"Other": "--name wgshare-api -e ASPNETCORE_ENVIRONMENT=Production -e TZ=Asia/Shanghai",
|
||||||
"EnvPairList": [
|
"EnvPairList": [
|
||||||
{
|
{
|
||||||
"EnvName": "29dev",
|
"EnvName": "29dev",
|
||||||
|
|
|
||||||
|
|
@ -380,13 +380,25 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取全部用户
|
// 获取全部用户
|
||||||
var uids = RedisHelper.Instance.HKeys(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum));
|
var userInfos = RedisHelper.Instance.HVals<ChannelUserInfo>(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum));
|
||||||
if (uids.IsNullOrEmpty())
|
if (userInfos.IsNullOrEmpty())
|
||||||
{
|
{
|
||||||
throw Oops.Oh("无效会议号!");
|
throw Oops.Oh("无效会议号!");
|
||||||
}
|
}
|
||||||
|
|
||||||
return uids.FirstOrDefault();
|
var managers = userInfos.Where(x => x.RoleId == ((int)RoleEnums.Admin).ToString() || x.IsRoomManager || x.RoleId == ((int)RoleEnums.RoomManager).ToString());
|
||||||
|
if (managers.IsNullOrEmpty())
|
||||||
|
{
|
||||||
|
return userInfos.FirstOrDefault().UID;
|
||||||
|
}
|
||||||
|
|
||||||
|
var user = managers.FirstOrDefault(x => x.EnableCamera = true);
|
||||||
|
if (user == null)
|
||||||
|
{
|
||||||
|
return managers.FirstOrDefault().UID;
|
||||||
|
}
|
||||||
|
|
||||||
|
return user.UID;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -616,6 +628,49 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取共享屏幕
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("shared-screen")]
|
||||||
|
public async Task<string> GetSharedScreen([FromQuery] string roomNum)
|
||||||
|
{
|
||||||
|
var showUserId = RedisHelper.Instance.HGet(RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId), roomNum);
|
||||||
|
if (showUserId.Length == 9)
|
||||||
|
{
|
||||||
|
// 全员观看userid =9 表示共享屏幕
|
||||||
|
return showUserId;
|
||||||
|
}
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 设置共享屏幕
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost("shared-screen")]
|
||||||
|
public async Task SharedScreen([FromQuery] string roomNum)
|
||||||
|
{
|
||||||
|
//var showUserId = RedisHelper.Instance.HGet(RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId), roomNum);
|
||||||
|
//if (showUserId.Length == 9)
|
||||||
|
//{
|
||||||
|
// var user = await _sqlSugar.Queryable<User>().FirstAsync(x => x.ScreenShareId == showUserId);
|
||||||
|
// if (user != null)
|
||||||
|
// {
|
||||||
|
// //
|
||||||
|
// await _hubContext.Clients.User(user.Id).ExitSharedScreen();
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
var connectId = RedisHelper.Instance.HGet(RedisKeyConstant.SessionManage.GetOnlineUserKey(TenantId), UId);
|
||||||
|
// 通知其他所有共享屏幕用户退出
|
||||||
|
await _hubContext.Clients.GroupExcept(roomNum, connectId).ExitSharedScreen();
|
||||||
|
|
||||||
|
// 设置新的共享屏幕
|
||||||
|
RedisHelper.Instance.HSet(RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId), roomNum, ScreenShareId);
|
||||||
|
// 通知全员观看新的共享屏幕
|
||||||
|
await _hubContext.Clients.Group(roomNum).ShowUser(UId, UserName, string.Empty, string.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
#region 文件分享
|
#region 文件分享
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
|
|
@ -154,5 +154,16 @@ namespace WGShare.API.Hubs
|
||||||
/// <param name="NickName"></param>
|
/// <param name="NickName"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task ModifyNickName(long UId, string NickName);
|
Task ModifyNickName(long UId, string NickName);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 退出共享屏幕
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task ExitSharedScreen();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 加入频道回调
|
||||||
|
/// </summary>
|
||||||
|
Task JoinChannelCallback(bool isSuccess);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,14 @@ using SqlSugar;
|
||||||
using SqlSugar.Extensions;
|
using SqlSugar.Extensions;
|
||||||
using System;
|
using System;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
using System.Security.Claims;
|
using System.Security.Claims;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using WGShare.API.Helpers;
|
using WGShare.API.Helpers;
|
||||||
using WGShare.Domain.Constant;
|
using WGShare.Domain.Constant;
|
||||||
using WGShare.Domain.Entities;
|
using WGShare.Domain.Entities;
|
||||||
using WGShare.Domain.Enums;
|
using WGShare.Domain.Enums;
|
||||||
|
using WGShare.Domain.FriendlyException;
|
||||||
using ZstdSharp.Unsafe;
|
using ZstdSharp.Unsafe;
|
||||||
|
|
||||||
namespace WGShare.API.Hubs
|
namespace WGShare.API.Hubs
|
||||||
|
|
@ -123,8 +125,8 @@ namespace WGShare.API.Hubs
|
||||||
var ssid = Context.User?.Claims.FirstOrDefault(x => x.Type == "ssid")?.Value;
|
var ssid = Context.User?.Claims.FirstOrDefault(x => x.Type == "ssid")?.Value;
|
||||||
var uname = Context.User?.Claims.FirstOrDefault(x => x.Type == "uname")?.Value;
|
var uname = Context.User?.Claims.FirstOrDefault(x => x.Type == "uname")?.Value;
|
||||||
var roleId = Context.User?.Claims.FirstOrDefault(x => x.Type == "roleid")?.Value;
|
var roleId = Context.User?.Claims.FirstOrDefault(x => x.Type == "roleid")?.Value;
|
||||||
|
try
|
||||||
|
{
|
||||||
Console.WriteLine($"{DateTime.Now}加入频道 会议号:" + roomNum);
|
Console.WriteLine($"{DateTime.Now}加入频道 会议号:" + roomNum);
|
||||||
Console.WriteLine($"{DateTime.Now}加入频道 account:" + account);
|
Console.WriteLine($"{DateTime.Now}加入频道 account:" + account);
|
||||||
Console.WriteLine($"{DateTime.Now}加入频道 tenant:" + tenant);
|
Console.WriteLine($"{DateTime.Now}加入频道 tenant:" + tenant);
|
||||||
|
|
@ -175,8 +177,17 @@ namespace WGShare.API.Hubs
|
||||||
await Groups.AddToGroupAsync(Context.ConnectionId, roomNum);
|
await Groups.AddToGroupAsync(Context.ConnectionId, roomNum);
|
||||||
await Clients.GroupExcept(roomNum, Context.ConnectionId).UserJoined(userInfo);
|
await Clients.GroupExcept(roomNum, Context.ConnectionId).UserJoined(userInfo);
|
||||||
|
|
||||||
}
|
await Clients.Caller.JoinChannelCallback(true);
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
|
||||||
|
await Clients.Caller.JoinChannelCallback(false);
|
||||||
|
_logger.LogError(ex, $@"加入频道异常,tenant:{tenant},uid:{uid},ssid:{ssid},uname:{uname} {Environment.NewLine}{ex.Message}");
|
||||||
|
await ExceptionNotice.SendAsync(ex, $@"加入频道异常,tenant:{tenant},uid:{uid},ssid:{ssid},uname:{uname} ");
|
||||||
|
}
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 离开频道
|
/// 离开频道
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
|
|
@ -286,6 +286,18 @@
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:WGShare.API.Controllers.Frontend.RoomController.GetSharedScreen(System.String)">
|
||||||
|
<summary>
|
||||||
|
获取共享屏幕
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WGShare.API.Controllers.Frontend.RoomController.SharedScreen(System.String)">
|
||||||
|
<summary>
|
||||||
|
设置共享屏幕
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:WGShare.API.Controllers.Frontend.RoomController.AddFile(WGShare.Domain.DTOs.File.ShareFileInputDTO)">
|
<member name="M:WGShare.API.Controllers.Frontend.RoomController.AddFile(WGShare.Domain.DTOs.File.ShareFileInputDTO)">
|
||||||
<summary>
|
<summary>
|
||||||
分享上传文件
|
分享上传文件
|
||||||
|
|
@ -702,6 +714,17 @@
|
||||||
<param name="NickName"></param>
|
<param name="NickName"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:WGShare.API.Hubs.IMessageClient.ExitSharedScreen">
|
||||||
|
<summary>
|
||||||
|
退出共享屏幕
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WGShare.API.Hubs.IMessageClient.JoinChannelCallback(System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
加入频道回调
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="M:WGShare.API.Hubs.SessionManageHub.JoinChannel(System.String,System.Boolean,System.Boolean,System.Boolean)">
|
<member name="M:WGShare.API.Hubs.SessionManageHub.JoinChannel(System.String,System.Boolean,System.Boolean,System.Boolean)">
|
||||||
<summary>
|
<summary>
|
||||||
加入频道
|
加入频道
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue