parent
806d585717
commit
484ab104ab
|
|
@ -627,7 +627,13 @@ namespace WGShare.API.Controllers.Frontend
|
|||
|
||||
if (connectionIds.Any())
|
||||
{
|
||||
await _hubContext.Clients.Clients(connectionIds).ApplyToSpeak(UId, UserName);
|
||||
var userInfo = RedisHelper.Instance.HGet<ChannelUserInfo>(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum), UId);
|
||||
var userName = UserName;
|
||||
if (userInfo != null)
|
||||
{
|
||||
userName = userInfo.UserName;
|
||||
}
|
||||
await _hubContext.Clients.Clients(connectionIds).ApplyToSpeak(UId, userName);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -85,9 +85,6 @@ namespace WGShare.API.Hubs
|
|||
_logger.LogInformation($@"{DateTime.Now} account:{account} 退出以下频道:{string.Join(',', roomNum)}");
|
||||
if (!string.IsNullOrEmpty(roomNum))
|
||||
{
|
||||
// 所有房间移除该用户
|
||||
pipe.HDel(RedisKeyConstant.SessionManage.GetChannelUserKey(tenant, roomNum), uid);
|
||||
|
||||
// 判断是否全员看他,是则移除
|
||||
var script = $@"local value = redis.call('HGET', KEYS[1], ARGV[1])
|
||||
if value == ARGV[2] or value == ARGV[3] then
|
||||
|
|
@ -95,6 +92,9 @@ namespace WGShare.API.Hubs
|
|||
else return -1 end";
|
||||
// 执行 eval 命令
|
||||
pipe.Eval(script, [RedisKeyConstant.SessionManage.GetChannelShowUserKey(tenant)], roomNum, uid, ssid);
|
||||
|
||||
// 房间移除该用户
|
||||
pipe.HDel(RedisKeyConstant.SessionManage.GetChannelUserKey(tenant, roomNum), uid);
|
||||
}
|
||||
|
||||
// 删除用户在线状态
|
||||
|
|
@ -103,7 +103,24 @@ namespace WGShare.API.Hubs
|
|||
// 删除用户已加入频道信息
|
||||
pipe.Del(RedisKeyConstant.SessionManage.GetUserJoinChannelKey(uid));
|
||||
|
||||
pipe.EndPipe();
|
||||
var result = pipe.EndPipe();
|
||||
|
||||
if (!result.IsNullOrEmpty() && result[0].ObjToInt() != -1)
|
||||
{
|
||||
// 如果离开的是全员看ta,则重新设置管理员为全员看ta
|
||||
var users = RedisHelper.Instance.HVals<ChannelUserInfo>(RedisKeyConstant.SessionManage.GetChannelUserKey(tenant, roomNum));
|
||||
var showUsers = users.Where(x => x.RoleId == ((int)RoleEnums.Admin).ToString() || x.IsRoomManager || x.RoleId == ((int)RoleEnums.RoomManager).ToString()).ToList();
|
||||
if (!showUsers.IsNullOrEmpty())
|
||||
{
|
||||
var showUser = showUsers.FirstOrDefault(x => x.EnableCamera == true);
|
||||
if (showUser == null)
|
||||
{
|
||||
showUser = showUsers.FirstOrDefault();
|
||||
}
|
||||
// 通知全员看ta
|
||||
await Clients.Group(roomNum).ShowUser(showUser.UID, showUser.UserName, string.Empty, string.Empty);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(roomNum))
|
||||
|
|
@ -226,10 +243,16 @@ namespace WGShare.API.Hubs
|
|||
var result = pipe.EndPipe();
|
||||
if (!result.IsNullOrEmpty() && result[0].ObjToInt() != -1)
|
||||
{
|
||||
// 如果离开的是全员看ta,则重新设置管理员为全员看ta
|
||||
var users = RedisHelper.Instance.HVals<ChannelUserInfo>(RedisKeyConstant.SessionManage.GetChannelUserKey(tenant, roomNum));
|
||||
var showUser = users.FirstOrDefault(x => x.RoleId == ((int)RoleEnums.Admin).ToString() || x.IsRoomManager || x.RoleId == ((int)RoleEnums.RoomManager).ToString());
|
||||
if (showUser != null)
|
||||
var showUsers = users.Where(x => x.RoleId == ((int)RoleEnums.Admin).ToString() || x.IsRoomManager || x.RoleId == ((int)RoleEnums.RoomManager).ToString()).ToList();
|
||||
if (!showUsers.IsNullOrEmpty())
|
||||
{
|
||||
var showUser = showUsers.FirstOrDefault(x => x.EnableCamera == true);
|
||||
if (showUser == null)
|
||||
{
|
||||
showUser = showUsers.FirstOrDefault();
|
||||
}
|
||||
// 通知全员看ta
|
||||
await Clients.Group(roomNum).ShowUser(showUser.UID, showUser.UserName, string.Empty, string.Empty);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -737,6 +737,13 @@
|
|||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WGShare.API.Hubs.IMessageClient.ReceivedOperation(System.String)">
|
||||
<summary>
|
||||
客户端接收到消息
|
||||
</summary>
|
||||
<param name="contentString"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WGShare.API.Hubs.SessionManageHub.JoinChannel(System.String,System.Boolean,System.Boolean,System.Boolean)">
|
||||
<summary>
|
||||
加入频道
|
||||
|
|
@ -764,6 +771,14 @@
|
|||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WGShare.API.Hubs.SessionManageHub.SendOperationToUser(System.String,System.String)">
|
||||
<summary>
|
||||
发送客户端指令到指定用户
|
||||
</summary>
|
||||
<param name="uid"></param>
|
||||
<param name="contentString"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WGShare.API.Hubs.SessionManageHub.GetDriversList(System.String)">
|
||||
<summary>
|
||||
获取设备列表
|
||||
|
|
|
|||
Loading…
Reference in New Issue