Compare commits
3 Commits
e7ea6956ef
...
9fcab57b4b
| Author | SHA1 | Date |
|---|---|---|
|
|
9fcab57b4b | |
|
|
561bc1ff95 | |
|
|
d3caf711fb |
|
|
@ -119,6 +119,11 @@ namespace WGShare.API.Controllers
|
||||||
if (!string.IsNullOrWhiteSpace(connectId))
|
if (!string.IsNullOrWhiteSpace(connectId))
|
||||||
{
|
{
|
||||||
_logger.LogInformation($"账号已在其他地方登录,强制下线!account:{user.Account} connectId:{connectId}");
|
_logger.LogInformation($"账号已在其他地方登录,强制下线!account:{user.Account} connectId:{connectId}");
|
||||||
|
var roomNum = RedisHelper.Instance.Get(RedisKeyConstant.SessionManage.GetUserJoinChannelKey(user.Id));
|
||||||
|
if (!string.IsNullOrWhiteSpace(roomNum))
|
||||||
|
{
|
||||||
|
await _hubContext.Clients.Group(roomNum).UserLeave(user.Id);
|
||||||
|
}
|
||||||
await _hubContext.Clients.Client(connectId).ForceLogout("账号已在其他地方登录,您被迫下线!");
|
await _hubContext.Clients.Client(connectId).ForceLogout("账号已在其他地方登录,您被迫下线!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,7 @@ namespace WGShare.API.Controllers.Backend
|
||||||
}
|
}
|
||||||
|
|
||||||
return await _sqlSugar.Updateable(entity)
|
return await _sqlSugar.Updateable(entity)
|
||||||
.IgnoreColumns(x => new { x.Pwd, x.ScreenShareId }).ExecuteCommandAsync() > 0;
|
.UpdateColumns(x => new { x.UserName, x.Account, x.RoleId, x.TenantId }).ExecuteCommandAsync() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPut("pwd")]
|
[HttpPut("pwd")]
|
||||||
|
|
@ -180,7 +180,7 @@ namespace WGShare.API.Controllers.Backend
|
||||||
memoryStream.Seek(0, SeekOrigin.Begin);
|
memoryStream.Seek(0, SeekOrigin.Begin);
|
||||||
|
|
||||||
var fileName = $@"excel/{Regex.Replace(file.FileName, @"\.(xlsx|xls)$", "", RegexOptions.IgnoreCase)}_验证不通过_{DateTime.UtcNow.Ticks}.xlsx";
|
var fileName = $@"excel/{Regex.Replace(file.FileName, @"\.(xlsx|xls)$", "", RegexOptions.IgnoreCase)}_验证不通过_{DateTime.UtcNow.Ticks}.xlsx";
|
||||||
_ossHelper.UploadWithExpireTime(fileName, memoryStream, 1);
|
_ossHelper.UploadWithExpireTime(fileName, memoryStream, 10);
|
||||||
var fileUrl = _ossHelper.GetAccessFileUrl(fileName, 1);
|
var fileUrl = _ossHelper.GetAccessFileUrl(fileName, 1);
|
||||||
|
|
||||||
return Ok((isSuccess: false, url: fileUrl));
|
return Ok((isSuccess: false, url: fileUrl));
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using SqlSugar.Extensions;
|
using SqlSugar.Extensions;
|
||||||
|
using System.Security.Claims;
|
||||||
using WGShare.API.Helpers;
|
using WGShare.API.Helpers;
|
||||||
using WGShare.Domain.Constant;
|
using WGShare.Domain.Constant;
|
||||||
using WGShare.Domain.FriendlyException;
|
using WGShare.Domain.FriendlyException;
|
||||||
|
|
@ -15,7 +16,7 @@ namespace WGShare.API.Controllers.Basic
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
var uid = HttpContext.User.Claims.FirstOrDefault(x => x.Type == "uid").Value;
|
var uid = HttpContext.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier).Value;
|
||||||
if (string.IsNullOrWhiteSpace(uid))
|
if (string.IsNullOrWhiteSpace(uid))
|
||||||
{
|
{
|
||||||
throw Oops.Oh("用户信息有误,请重新登录");
|
throw Oops.Oh("用户信息有误,请重新登录");
|
||||||
|
|
@ -90,16 +91,20 @@ namespace WGShare.API.Controllers.Basic
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string connectionId;
|
||||||
public string ConnectionId
|
public string ConnectionId
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
var connectid = RedisHelper.Instance.HGet(RedisKeyConstant.SessionManage.GetOnlineUserKey(TenantId), UId);
|
if (!string.IsNullOrWhiteSpace(connectionId))
|
||||||
if (string.IsNullOrWhiteSpace(connectid))
|
return connectionId;
|
||||||
|
|
||||||
|
connectionId = RedisHelper.Instance.HGet(RedisKeyConstant.SessionManage.GetOnlineUserKey(TenantId), UId);
|
||||||
|
if (string.IsNullOrWhiteSpace(connectionId))
|
||||||
{
|
{
|
||||||
throw Oops.Oh("用户信息有误,请重新登录");
|
throw Oops.Oh("用户信息有误,请重新登录");
|
||||||
}
|
}
|
||||||
return connectid;
|
return connectionId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,7 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
|
|
||||||
var list = await _sqlSugar.Queryable<Room>()
|
var list = await _sqlSugar.Queryable<Room>()
|
||||||
.Where(x => x.TenantId == TenantId && x.IsDelete == false)
|
.Where(x => x.TenantId == TenantId && x.IsDelete == false)
|
||||||
|
.OrderBy(x => x.Id, OrderByType.Desc)
|
||||||
.ToPageListAsync(dto.PageIndex, dto.PageSize, total);
|
.ToPageListAsync(dto.PageIndex, dto.PageSize, total);
|
||||||
|
|
||||||
var result = list.Adapt<List<RoomOutputDTO>>();
|
var result = list.Adapt<List<RoomOutputDTO>>();
|
||||||
|
|
|
||||||
|
|
@ -69,18 +69,18 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
throw Oops.Oh("用户已不在房间内!");
|
throw Oops.Oh("用户已不在房间内!");
|
||||||
}
|
}
|
||||||
|
|
||||||
var entities = new RoomManager
|
//var entities = new RoomManager
|
||||||
{
|
//{
|
||||||
RoomId = inputDTO.RoomId,
|
// RoomId = inputDTO.RoomId,
|
||||||
UserId = inputDTO.UserId
|
// UserId = inputDTO.UserId
|
||||||
};
|
//};
|
||||||
|
|
||||||
|
|
||||||
user.IsRoomManager = true;
|
user.IsRoomManager = true;
|
||||||
|
|
||||||
await _sqlSugar.Storageable(entities)
|
//await _sqlSugar.Storageable(entities)
|
||||||
.SplitInsert(x => !x.Any())
|
// .SplitInsert(x => !x.Any())
|
||||||
.ToStorage().AsInsertable.ExecuteCommandAsync();
|
// .ToStorage().AsInsertable.ExecuteCommandAsync();
|
||||||
|
|
||||||
RedisHelper.Instance.HSet(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, inputDTO.RoomNum), inputDTO.UserId, user);
|
RedisHelper.Instance.HSet(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, inputDTO.RoomNum), inputDTO.UserId, user);
|
||||||
|
|
||||||
|
|
@ -101,9 +101,9 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
throw Oops.Oh("用户已不在房间内!");
|
throw Oops.Oh("用户已不在房间内!");
|
||||||
}
|
}
|
||||||
|
|
||||||
await _sqlSugar.Deleteable<RoomManager>()
|
//await _sqlSugar.Deleteable<RoomManager>()
|
||||||
.Where(x => x.RoomId == inputDTO.RoomId && x.UserId == inputDTO.UserId)
|
// .Where(x => x.RoomId == inputDTO.RoomId && x.UserId == inputDTO.UserId)
|
||||||
.ExecuteCommandAsync();
|
// .ExecuteCommandAsync();
|
||||||
|
|
||||||
user.IsRoomManager = false;
|
user.IsRoomManager = false;
|
||||||
RedisHelper.Instance.HSet(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, inputDTO.RoomNum), inputDTO.UserId, user);
|
RedisHelper.Instance.HSet(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, inputDTO.RoomNum), inputDTO.UserId, user);
|
||||||
|
|
@ -161,6 +161,22 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询房间中的单个用户信息
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("user/{uid}")]
|
||||||
|
public async Task<ChannelUserInfo> GetUser([FromQuery] string roomNum, [FromRoute] string uid)
|
||||||
|
{
|
||||||
|
var channelUser = RedisHelper.Instance.HGet<ChannelUserInfo>(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum), uid);
|
||||||
|
if (channelUser == null)
|
||||||
|
{
|
||||||
|
throw Oops.Oh("用户不在房间内!");
|
||||||
|
}
|
||||||
|
|
||||||
|
return channelUser;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 检验房间是否存在
|
/// 检验房间是否存在
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -214,10 +230,13 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
{
|
{
|
||||||
var room = await _sqlSugar.Queryable<Room>().FirstAsync(x => x.Id == roomId);
|
var room = await _sqlSugar.Queryable<Room>().FirstAsync(x => x.Id == roomId);
|
||||||
|
|
||||||
var connectIds = RedisHelper.Instance.HMGet(RedisKeyConstant.SessionManage.GetOnlineUserKey(TenantId), inviteeUids);
|
//var connectIds = RedisHelper.Instance.HMGet(RedisKeyConstant.SessionManage.GetOnlineUserKey(TenantId), inviteeUids);
|
||||||
connectIds.RemoveWhere(x => string.IsNullOrWhiteSpace(x));
|
//connectIds.RemoveWhere(x => string.IsNullOrWhiteSpace(x));
|
||||||
|
|
||||||
await _hubContext.Clients.Clients(connectIds).Invitation(room.RoomNum, room.RoomName, UserName);
|
//await _hubContext.Clients.Clients(connectIds).Invitation(room.RoomNum, room.RoomName, UserName);
|
||||||
|
|
||||||
|
|
||||||
|
await _hubContext.Clients.Users(inviteeUids).Invitation(room.RoomNum, room.RoomName, UserName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -227,11 +246,7 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
[HttpGet("kickout")]
|
[HttpGet("kickout")]
|
||||||
public async Task KickOut([FromQuery] string roomNum, [FromQuery] string kickUid)
|
public async Task KickOut([FromQuery] string roomNum, [FromQuery] string kickUid)
|
||||||
{
|
{
|
||||||
var connectId = RedisHelper.Instance.HGet(RedisKeyConstant.SessionManage.GetOnlineUserKey(TenantId), kickUid);
|
await _hubContext.Clients.User(kickUid).ForceExitRoom(roomNum);
|
||||||
if (!string.IsNullOrWhiteSpace(connectId))
|
|
||||||
{
|
|
||||||
await _hubContext.Clients.Client(connectId).ForceExitRoom(roomNum);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -257,10 +272,9 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
});
|
});
|
||||||
RedisHelper.Instance.HMSet(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum), allUsers);
|
RedisHelper.Instance.HMSet(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum), allUsers);
|
||||||
// 通知其他人
|
// 通知其他人
|
||||||
await _hubContext.Clients.Group(roomNum).OperAllMicr(enableMicr);
|
await _hubContext.Clients.Group(roomNum).OperAllMicr(enableMicr, UId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 单用户开闭麦
|
/// 单用户开闭麦
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -301,20 +315,20 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
userInfo.EnableCamera = enableCamera;
|
userInfo.EnableCamera = enableCamera;
|
||||||
RedisHelper.Instance.HSet(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum), uid, userInfo);
|
RedisHelper.Instance.HSet(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum), uid, userInfo);
|
||||||
|
|
||||||
// 通知所有人该用户麦克风状态
|
// 通知所有人该用户摄像头状态
|
||||||
await _hubContext.Clients.Group(roomNum).OperCamera(userInfo);
|
await _hubContext.Clients.Group(roomNum).OperCamera(userInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
///// <summary>
|
||||||
/// 同步视图
|
///// 同步视图
|
||||||
/// </summary>
|
///// </summary>
|
||||||
/// <param name="type"></param>
|
///// <param name="type"></param>
|
||||||
/// <returns></returns>
|
///// <returns></returns>
|
||||||
[HttpGet("sync-view")]
|
//[HttpGet("sync-view")]
|
||||||
public async Task ChangeView([FromQuery] string roomNum, [FromQuery] string type)
|
//public async Task ChangeView([FromQuery] string roomNum, [FromQuery] string type)
|
||||||
{
|
//{
|
||||||
await _hubContext.Clients.Groups(roomNum).RefreshView(type);
|
// await _hubContext.Clients.Groups(roomNum).RefreshView(type);
|
||||||
}
|
//}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 全员观看
|
/// 全员观看
|
||||||
|
|
@ -323,13 +337,6 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
[HttpGet("show-user")]
|
[HttpGet("show-user")]
|
||||||
public async Task<string> GetShowUser([FromQuery] string roomNum)
|
public async Task<string> GetShowUser([FromQuery] string roomNum)
|
||||||
{
|
{
|
||||||
// 获取全部用户
|
|
||||||
var channelUsers = RedisHelper.Instance.HGetAll<ChannelUserInfo>(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum));
|
|
||||||
if (channelUsers.IsNullOrEmpty())
|
|
||||||
{
|
|
||||||
throw Oops.Oh("无效会议号!");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取全员观看用户
|
// 获取全员观看用户
|
||||||
var showUserId = RedisHelper.Instance.HGet(RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId), roomNum);
|
var showUserId = RedisHelper.Instance.HGet(RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId), roomNum);
|
||||||
if (!string.IsNullOrWhiteSpace(showUserId))
|
if (!string.IsNullOrWhiteSpace(showUserId))
|
||||||
|
|
@ -337,7 +344,14 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
return showUserId;
|
return showUserId;
|
||||||
}
|
}
|
||||||
|
|
||||||
return channelUsers.FirstOrDefault().Value.UID;
|
// 获取全部用户
|
||||||
|
var uids = RedisHelper.Instance.HKeys(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum));
|
||||||
|
if (uids.IsNullOrEmpty())
|
||||||
|
{
|
||||||
|
throw Oops.Oh("无效会议号!");
|
||||||
|
}
|
||||||
|
|
||||||
|
return uids.FirstOrDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -350,11 +364,13 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
// 设置房间全员观看用户
|
// 设置房间全员观看用户
|
||||||
RedisHelper.Instance.HSet(RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId), roomNum, uid);
|
RedisHelper.Instance.HSet(RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId), roomNum, uid);
|
||||||
|
|
||||||
var connectId = RedisHelper.Instance.HGet(RedisKeyConstant.SessionManage.GetOnlineUserKey(TenantId), UId);
|
//var connectId = RedisHelper.Instance.HGet(RedisKeyConstant.SessionManage.GetOnlineUserKey(TenantId), UId);
|
||||||
if (!string.IsNullOrWhiteSpace(connectId))
|
//if (!string.IsNullOrWhiteSpace(connectId))
|
||||||
{
|
//{
|
||||||
await _hubContext.Clients.GroupExcept(roomNum, connectId).ShowUser();
|
// await _hubContext.Clients.GroupExcept(roomNum, connectId).ShowUser();
|
||||||
}
|
//}
|
||||||
|
|
||||||
|
await _hubContext.Clients.Group(roomNum).ShowUser();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -367,10 +383,10 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
[HttpGet("join")]
|
[HttpGet("join")]
|
||||||
public async Task JoinChannel([FromQuery] string roomNum, [FromQuery] bool enableMicr = false, [FromQuery] bool enableCamera = false)
|
public async Task JoinChannel([FromQuery] string roomNum, [FromQuery] bool enableMicr = false, [FromQuery] bool enableCamera = false)
|
||||||
{
|
{
|
||||||
var isRoomManager = await _sqlSugar.Queryable<RoomManager>()
|
//var isRoomManager = await _sqlSugar.Queryable<RoomManager>()
|
||||||
.InnerJoin<Room>((rm, r) => r.Id == rm.RoomId)
|
// .InnerJoin<Room>((rm, r) => r.Id == rm.RoomId)
|
||||||
.Where((rm, r) => r.RoomNum == roomNum && rm.UserId == UId)
|
// .Where((rm, r) => r.RoomNum == roomNum && rm.UserId == UId)
|
||||||
.AnyAsync();
|
// .AnyAsync();
|
||||||
|
|
||||||
var userInfo = new ChannelUserInfo
|
var userInfo = new ChannelUserInfo
|
||||||
{
|
{
|
||||||
|
|
@ -383,17 +399,20 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
ScreenShareId = ScreenShareId,
|
ScreenShareId = ScreenShareId,
|
||||||
RoleId = RoleId,
|
RoleId = RoleId,
|
||||||
RoleName = ((RoleEnums)RoleId.ToInt32()).GetDescription(),
|
RoleName = ((RoleEnums)RoleId.ToInt32()).GetDescription(),
|
||||||
IsRoomManager = isRoomManager
|
IsRoomManager = false
|
||||||
};
|
};
|
||||||
using (var pipe = RedisHelper.Instance.StartPipe())
|
using (var pipe = RedisHelper.Instance.StartPipe())
|
||||||
{
|
{
|
||||||
|
// 进房第一人,则设置全员看ta
|
||||||
var script = $@"local exists = redis.call('HLEN', KEYS[1])
|
var script = $@"local exists = redis.call('HLEN', KEYS[1])
|
||||||
if exists == 0 then redis.call('HSET', KEYS[2], ARGV[1], ARGV[2]) end
|
if exists == 0 then redis.call('HSET', KEYS[2], ARGV[1], ARGV[2]) end
|
||||||
return exists";
|
return exists";
|
||||||
pipe.Eval(script, [RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum), RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId)], roomNum, UId);
|
pipe.Eval(script, [RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum), RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId)], roomNum, UId);
|
||||||
|
|
||||||
pipe.HSet(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum), UId, userInfo.ToJsonString());
|
// 记录频道得用户信息
|
||||||
pipe.HSet(RedisKeyConstant.SessionManage.GetUserJoinChannelKey(UId), roomNum, 1);
|
pipe.HSet(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum), UId, userInfo);
|
||||||
|
// 记录用户已参与频道
|
||||||
|
pipe.Set(RedisKeyConstant.SessionManage.GetUserJoinChannelKey(UId), roomNum);
|
||||||
pipe.EndPipe();
|
pipe.EndPipe();
|
||||||
}
|
}
|
||||||
await _hubContext.Groups.AddToGroupAsync(ConnectionId, roomNum);
|
await _hubContext.Groups.AddToGroupAsync(ConnectionId, roomNum);
|
||||||
|
|
@ -401,7 +420,7 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 离开频道
|
/// 单用户离开频道
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="roomNum"></param>
|
/// <param name="roomNum"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
|
|
@ -410,14 +429,17 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
{
|
{
|
||||||
using (var pipe = RedisHelper.Instance.StartPipe())
|
using (var pipe = RedisHelper.Instance.StartPipe())
|
||||||
{
|
{
|
||||||
|
// 判断,如果有全员看ta,则删除
|
||||||
var script = $@"local value = redis.call('HGET', KEYS[1], ARGV[1])
|
var script = $@"local value = redis.call('HGET', KEYS[1], ARGV[1])
|
||||||
if value == ARGV[2] or value == ARGV[3] then
|
if value == ARGV[2] or value == ARGV[3] then
|
||||||
return redis.call('HDEL', KEYS[1], ARGV[1])
|
return redis.call('HDEL', KEYS[1], ARGV[1])
|
||||||
else return -1 end";
|
else return -1 end";
|
||||||
// 执行 eval 命令
|
// 执行 eval 命令
|
||||||
pipe.Eval(script, [RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId)], roomNum, UId, ScreenShareId);
|
pipe.Eval(script, [RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId)], roomNum, UId, ScreenShareId);
|
||||||
|
// 删除频道中得该用户
|
||||||
pipe.HDel(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum), UId);
|
pipe.HDel(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum), UId);
|
||||||
pipe.HDel(RedisKeyConstant.SessionManage.GetUserJoinChannelKey(UId), roomNum);
|
// 删除用户已参与频道
|
||||||
|
pipe.Del(RedisKeyConstant.SessionManage.GetUserJoinChannelKey(UId));
|
||||||
pipe.EndPipe();
|
pipe.EndPipe();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -425,6 +447,33 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
await _hubContext.Groups.RemoveFromGroupAsync(ConnectionId, roomNum);
|
await _hubContext.Groups.RemoveFromGroupAsync(ConnectionId, roomNum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 全部离开频道
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="roomNum"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("leave-all")]
|
||||||
|
public async Task AllLevelChannel([FromQuery] string roomNum)
|
||||||
|
{
|
||||||
|
var uids = RedisHelper.Instance.HKeys(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum)).ToList();
|
||||||
|
using (var pipe = RedisHelper.Instance.StartPipe())
|
||||||
|
{
|
||||||
|
// 删除大家都看ta
|
||||||
|
pipe.HDel(RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId), roomNum);
|
||||||
|
// 删除频道里得用户
|
||||||
|
pipe.Del(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum));
|
||||||
|
if (!uids.IsNullOrEmpty())
|
||||||
|
{
|
||||||
|
var keys = uids.ConvertAll(uid => RedisKeyConstant.SessionManage.GetUserJoinChannelKey(uid));
|
||||||
|
pipe.Del(keys.ToArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
pipe.EndPipe();
|
||||||
|
}
|
||||||
|
|
||||||
|
await _hubContext.Clients.Group(roomNum).AllLeave();
|
||||||
|
}
|
||||||
|
|
||||||
#region 文件分享
|
#region 文件分享
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 分享上传文件
|
/// 分享上传文件
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
}
|
}
|
||||||
|
|
||||||
return await _sqlSugar.Updateable(entity)
|
return await _sqlSugar.Updateable(entity)
|
||||||
.IgnoreColumns(x => new { x.Pwd, x.TenantId, x.ScreenShareId }).ExecuteCommandAsync() > 0;
|
.UpdateColumns(x => new { x.Account, x.UserName, x.RoleId }).ExecuteCommandAsync() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ namespace WGShare.API.Controllers
|
||||||
/// 角色列表下拉框
|
/// 角色列表下拉框
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpGet("role-dp-list")]
|
[HttpGet("role-dp-list"), AllowAnonymous]
|
||||||
public async Task<List<Role>> GetDropDownList()
|
public async Task<List<Role>> GetDropDownList()
|
||||||
{
|
{
|
||||||
return await _sqlSugar.Queryable<Role>().Where(x => x.IsDelete == false).ToListAsync();
|
return await _sqlSugar.Queryable<Role>().Where(x => x.IsDelete == false).ToListAsync();
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ namespace WGShare.API.Helpers
|
||||||
claims.AddRange(new List<Claim>
|
claims.AddRange(new List<Claim>
|
||||||
{
|
{
|
||||||
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
|
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
|
||||||
new Claim("uid", uid),
|
new Claim(ClaimTypes.NameIdentifier, uid),
|
||||||
});
|
});
|
||||||
|
|
||||||
// 2. 从 appsettings.json 中读取SecretKey
|
// 2. 从 appsettings.json 中读取SecretKey
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ namespace WGShare.API.Hubs
|
||||||
Task Invitation(string roomNum, string roomName, string InviterName);
|
Task Invitation(string roomNum, string roomName, string InviterName);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 强制退出房间
|
/// 单用户踢出房间
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="roomNum">会议号</param>
|
/// <param name="roomNum">会议号</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
|
|
@ -70,12 +70,19 @@ namespace WGShare.API.Hubs
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task UserLeave(string uid);
|
Task UserLeave(string uid);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 所有用户退出频道
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task AllLeave();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 所有用户开闭麦
|
/// 所有用户开闭麦
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="enableMicr"></param>
|
/// <param name="enableMicr"></param>
|
||||||
|
/// <param name="operUid">操作人UID</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task OperAllMicr(bool enableMicr);
|
Task OperAllMicr(bool enableMicr,string operUid);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 用户关闭开启麦克风
|
/// 用户关闭开启麦克风
|
||||||
|
|
@ -99,7 +106,7 @@ namespace WGShare.API.Hubs
|
||||||
Task ManagerRefresh(ChannelUserInfo user);
|
Task ManagerRefresh(ChannelUserInfo user);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 强制退出
|
/// 强制登出
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task ForceLogout(string msg);
|
Task ForceLogout(string msg);
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@ using Masuit.Tools.Maths;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.SignalR;
|
using Microsoft.AspNetCore.SignalR;
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
|
using System;
|
||||||
|
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;
|
||||||
|
|
@ -24,14 +26,11 @@ namespace WGShare.API.Hubs
|
||||||
public async override Task OnConnectedAsync()
|
public async override Task OnConnectedAsync()
|
||||||
{
|
{
|
||||||
var tenant = Context.User?.Claims.FirstOrDefault(x => x.Type == "tenant")?.Value;
|
var tenant = Context.User?.Claims.FirstOrDefault(x => x.Type == "tenant")?.Value;
|
||||||
var uid = Context.User?.Claims.FirstOrDefault(x => x.Type == "uid")?.Value;
|
var uid = Context.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier)?.Value;
|
||||||
var account = Context.User?.Claims.FirstOrDefault(x => x.Type == "account")?.Value;
|
var account = Context.User?.Claims.FirstOrDefault(x => x.Type == "account")?.Value;
|
||||||
var ssid = Context.User?.Claims.FirstOrDefault(x => x.Type == "ssid")?.Value;
|
var ssid = Context.User?.Claims.FirstOrDefault(x => x.Type == "ssid")?.Value;
|
||||||
|
|
||||||
Console.WriteLine($"{DateTime.Now}连接成功 当前租户:" + tenant);
|
Console.WriteLine($"{DateTime.Now}连接成功 当前租户:{tenant} account:{account} uid:{uid} connectId:{Context.ConnectionId}");
|
||||||
Console.WriteLine($"{DateTime.Now} 连接成功 account:" + account);
|
|
||||||
Console.WriteLine($"{DateTime.Now} 连接成功 uid:" + uid);
|
|
||||||
Console.WriteLine($"{DateTime.Now}连接成功 connectId:" + Context.ConnectionId);
|
|
||||||
|
|
||||||
await ClearUserChannel(uid, tenant, account, ssid);
|
await ClearUserChannel(uid, tenant, account, ssid);
|
||||||
// 存储在线信息
|
// 存储在线信息
|
||||||
|
|
@ -41,14 +40,12 @@ namespace WGShare.API.Hubs
|
||||||
public async override Task OnDisconnectedAsync(Exception? exception)
|
public async override Task OnDisconnectedAsync(Exception? exception)
|
||||||
{
|
{
|
||||||
var tenant = Context.User?.Claims.FirstOrDefault(x => x.Type == "tenant")?.Value;
|
var tenant = Context.User?.Claims.FirstOrDefault(x => x.Type == "tenant")?.Value;
|
||||||
var uid = Context.User?.Claims.FirstOrDefault(x => x.Type == "uid")?.Value;
|
var uid = Context.User?.Claims.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier)?.Value;
|
||||||
var account = Context.User?.Claims.FirstOrDefault(x => x.Type == "account")?.Value;
|
var account = Context.User?.Claims.FirstOrDefault(x => x.Type == "account")?.Value;
|
||||||
var ssid = Context.User?.Claims.FirstOrDefault(x => x.Type == "ssid")?.Value;
|
var ssid = Context.User?.Claims.FirstOrDefault(x => x.Type == "ssid")?.Value;
|
||||||
|
|
||||||
Console.WriteLine($"{DateTime.Now}断开连接 当前租户:" + tenant);
|
|
||||||
Console.WriteLine($"{DateTime.Now}断开连接 account:" + account);
|
Console.WriteLine($"{DateTime.Now}断开连接 当前租户:{tenant} account:{account} uid:{uid} connectId:{Context.ConnectionId} exception:{exception?.Message} ");
|
||||||
Console.WriteLine($"{DateTime.Now}断开连接 uid:" + uid);
|
|
||||||
Console.WriteLine($"{DateTime.Now}断开连接 connectId:" + Context.ConnectionId);
|
|
||||||
|
|
||||||
if (Context.ConnectionId == RedisHelper.Instance.HGet(RedisKeyConstant.SessionManage.GetOnlineUserKey(tenant), uid))
|
if (Context.ConnectionId == RedisHelper.Instance.HGet(RedisKeyConstant.SessionManage.GetOnlineUserKey(tenant), uid))
|
||||||
{
|
{
|
||||||
|
|
@ -64,24 +61,22 @@ namespace WGShare.API.Hubs
|
||||||
{
|
{
|
||||||
Console.WriteLine($"{DateTime.Now} 执行删除开始");
|
Console.WriteLine($"{DateTime.Now} 执行删除开始");
|
||||||
// 获取用户参加得频道
|
// 获取用户参加得频道
|
||||||
var roomNums = RedisHelper.Instance.HKeys(RedisKeyConstant.SessionManage.GetUserJoinChannelKey(uid));
|
var roomNum = RedisHelper.Instance.Get(RedisKeyConstant.SessionManage.GetUserJoinChannelKey(uid));
|
||||||
using (var pipe = RedisHelper.Instance.StartPipe())
|
using (var pipe = RedisHelper.Instance.StartPipe())
|
||||||
{
|
{
|
||||||
Console.WriteLine($@"{DateTime.Now} account:{account} 退出以下频道:{string.Join(',', roomNums)}");
|
Console.WriteLine($@"{DateTime.Now} account:{account} 退出以下频道:{string.Join(',', roomNum)}");
|
||||||
if (!roomNums.IsNullOrEmpty())
|
if (!string.IsNullOrEmpty(roomNum))
|
||||||
{
|
{
|
||||||
// 所有房间移除该用户
|
// 所有房间移除该用户
|
||||||
roomNums.ForEach(roomNum =>
|
pipe.HDel(RedisKeyConstant.SessionManage.GetChannelUserKey(tenant, roomNum), uid);
|
||||||
{
|
|
||||||
pipe.HDel(RedisKeyConstant.SessionManage.GetChannelUserKey(tenant, roomNum), uid);
|
|
||||||
|
|
||||||
var script = $@"local value = redis.call('HGET', KEYS[1], ARGV[1])
|
// 判断是否全员看他,是则移除
|
||||||
|
var script = $@"local value = redis.call('HGET', KEYS[1], ARGV[1])
|
||||||
if value == ARGV[2] or value == ARGV[3] then
|
if value == ARGV[2] or value == ARGV[3] then
|
||||||
return redis.call('HDEL', KEYS[1], ARGV[1])
|
return redis.call('HDEL', KEYS[1], ARGV[1])
|
||||||
else return -1 end";
|
else return -1 end";
|
||||||
// 执行 eval 命令
|
// 执行 eval 命令
|
||||||
pipe.Eval(script, [RedisKeyConstant.SessionManage.GetChannelShowUserKey(tenant)], roomNum, uid, ssid);
|
pipe.Eval(script, [RedisKeyConstant.SessionManage.GetChannelShowUserKey(tenant)], roomNum, uid, ssid);
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除用户在线状态
|
// 删除用户在线状态
|
||||||
|
|
@ -106,7 +101,7 @@ namespace WGShare.API.Hubs
|
||||||
public async Task JoinChannel(string roomNum, bool enableMicr = true, bool enableCamera = true)
|
public async Task JoinChannel(string roomNum, bool enableMicr = true, bool enableCamera = true)
|
||||||
{
|
{
|
||||||
var tenant = Context.User?.Claims.FirstOrDefault(x => x.Type == "tenant")?.Value;
|
var tenant = Context.User?.Claims.FirstOrDefault(x => x.Type == "tenant")?.Value;
|
||||||
var uid = Context.User?.Claims.FirstOrDefault(x => x.Type == "uid")?.Value;
|
var uid = Context.User?.Claims.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier)?.Value;
|
||||||
var account = Context.User?.Claims.FirstOrDefault(x => x.Type == "account")?.Value;
|
var account = Context.User?.Claims.FirstOrDefault(x => x.Type == "account")?.Value;
|
||||||
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;
|
||||||
|
|
@ -116,29 +111,6 @@ namespace WGShare.API.Hubs
|
||||||
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);
|
||||||
|
|
||||||
//using (var pipe = RedisHelper.Instance.StartPipe())
|
|
||||||
//{
|
|
||||||
// var userInfo = new ChannelUserInfo(uid, Context.ConnectionId, enableMicr, enableCamera, account, ssid);
|
|
||||||
// pipe.HSet(RedisKeyConstant.SessionManage.GetChannelUserKey(tenant, roomNum), uid, userInfo.ToJsonString());
|
|
||||||
// //pipe.HIncrBy(RedisKeyConstant.SessionManage.GetChannelUserCountKey(tenant), roomNum, 1);
|
|
||||||
// pipe.HSet(RedisKeyConstant.SessionManage.GetUserJoinChannelKey(uid), roomNum, 1);
|
|
||||||
// pipe.EndPipe();
|
|
||||||
//}
|
|
||||||
|
|
||||||
//await Groups.AddToGroupAsync(Context.ConnectionId, roomNum);
|
|
||||||
//await Clients.GroupExcept(roomNum, Context.ConnectionId).UserJoined(new Domain.DTOs.User.UserOutputDTO
|
|
||||||
//{
|
|
||||||
// Id = uid,
|
|
||||||
// UserName = uname,
|
|
||||||
// Account = account,
|
|
||||||
// RoleId = roleId,
|
|
||||||
// RoleName = ((RoleEnums)roleId.ToInt32()).GetDescription(),
|
|
||||||
// EnableCamera = enableCamera,
|
|
||||||
// EnableMicr = enableMicr,
|
|
||||||
// ScreenShareId = ssid,
|
|
||||||
// IsOnline = true,
|
|
||||||
//});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -149,7 +121,7 @@ namespace WGShare.API.Hubs
|
||||||
public async Task LevelChannel(string roomNum)
|
public async Task LevelChannel(string roomNum)
|
||||||
{
|
{
|
||||||
var tenant = Context.User?.Claims.FirstOrDefault(x => x.Type == "tenant")?.Value;
|
var tenant = Context.User?.Claims.FirstOrDefault(x => x.Type == "tenant")?.Value;
|
||||||
var uid = Context.User?.Claims.FirstOrDefault(x => x.Type == "uid")?.Value;
|
var uid = Context.User?.Claims.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier)?.Value;
|
||||||
var account = Context.User?.Claims.FirstOrDefault(x => x.Type == "account")?.Value;
|
var account = Context.User?.Claims.FirstOrDefault(x => x.Type == "account")?.Value;
|
||||||
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;
|
||||||
|
|
@ -159,22 +131,6 @@ namespace WGShare.API.Hubs
|
||||||
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);
|
||||||
|
|
||||||
//using (var pipe = RedisHelper.Instance.StartPipe())
|
|
||||||
//{
|
|
||||||
// var script = $@"local value = redis.call('HGET', KEYS[1], ARGV[1])
|
|
||||||
// if value == ARGV[2] or value == ARGV[3] then
|
|
||||||
// return redis.call('HDEL', KEYS[1], ARGV[1])
|
|
||||||
// else return -1 end";
|
|
||||||
// // 执行 eval 命令
|
|
||||||
// pipe.Eval(script, [RedisKeyConstant.SessionManage.GetChannelShowUserKey(tenant)], roomNum, uid, ssid);
|
|
||||||
// pipe.HDel(RedisKeyConstant.SessionManage.GetChannelUserKey(tenant, roomNum), uid);
|
|
||||||
// pipe.HDel(RedisKeyConstant.SessionManage.GetUserJoinChannelKey(uid), roomNum);
|
|
||||||
// pipe.EndPipe();
|
|
||||||
//}
|
|
||||||
|
|
||||||
//await Clients.GroupExcept(roomNum, Context.ConnectionId).UserLeave(uid);
|
|
||||||
//await Groups.RemoveFromGroupAsync(Context.ConnectionId, roomNum);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -186,13 +142,14 @@ namespace WGShare.API.Hubs
|
||||||
public async Task SenMessage(string rooNum, string msg)
|
public async Task SenMessage(string rooNum, string msg)
|
||||||
{
|
{
|
||||||
var uname = Context.User?.Claims.FirstOrDefault(x => x.Type == "uname")?.Value;
|
var uname = Context.User?.Claims.FirstOrDefault(x => x.Type == "uname")?.Value;
|
||||||
var uid = Context.User?.Claims.FirstOrDefault(x => x.Type == "uid")?.Value;
|
var uid = Context.User?.Claims.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier)?.Value;
|
||||||
|
|
||||||
Console.WriteLine($" {DateTime.Now}发送消息 uname:" + uname);
|
Console.WriteLine($" {DateTime.Now}发送消息 uname:" + uname);
|
||||||
Console.WriteLine($" {DateTime.Now}发送消息 roomNum:" + rooNum);
|
Console.WriteLine($" {DateTime.Now}发送消息 roomNum:" + rooNum);
|
||||||
Console.WriteLine($" {DateTime.Now}发送消息 msg:" + msg);
|
Console.WriteLine($" {DateTime.Now}发送消息 msg:" + msg);
|
||||||
|
|
||||||
await Clients.GroupExcept(rooNum, Context.ConnectionId).ReceiveMessage(uid, uname, msg);
|
await Clients.OthersInGroup(rooNum).ReceiveMessage(uid, uname, msg);
|
||||||
|
//await Clients.GroupExcept(rooNum, Context.ConnectionId).ReceiveMessage(uid, uname, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
using Microsoft.AspNetCore.Mvc.Filters;
|
using Microsoft.AspNetCore.Mvc.Filters;
|
||||||
using Microsoft.AspNetCore.SignalR;
|
using Microsoft.AspNetCore.SignalR;
|
||||||
|
using System.Security.Claims;
|
||||||
using WGShare.API.Helpers;
|
using WGShare.API.Helpers;
|
||||||
using WGShare.API.Hubs;
|
using WGShare.API.Hubs;
|
||||||
using WGShare.Domain.Constant;
|
using WGShare.Domain.Constant;
|
||||||
|
|
@ -13,9 +14,10 @@ namespace WGShare.API.ServiceConfigs
|
||||||
public void OnAuthorization(AuthorizationFilterContext context)
|
public void OnAuthorization(AuthorizationFilterContext context)
|
||||||
{
|
{
|
||||||
if (context.HttpContext.User.Identity.IsAuthenticated
|
if (context.HttpContext.User.Identity.IsAuthenticated
|
||||||
&& !context.HttpContext.GetEndpoint().Metadata.Any(x => x is Microsoft.AspNetCore.Authorization.AllowAnonymousAttribute))
|
&& !context.HttpContext.GetEndpoint().Metadata.Any(x => x is Microsoft.AspNetCore.Authorization.AllowAnonymousAttribute)
|
||||||
|
&& context.HttpContext.Request.Path.StartsWithSegments("/be/"))
|
||||||
{
|
{
|
||||||
var uid = context.HttpContext.User.Claims.FirstOrDefault(x => x.Type == "uid")?.Value;
|
var uid = context.HttpContext.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier)?.Value;
|
||||||
if (string.IsNullOrWhiteSpace(uid))
|
if (string.IsNullOrWhiteSpace(uid))
|
||||||
{
|
{
|
||||||
context.Result = new Microsoft.AspNetCore.Mvc.UnauthorizedObjectResult(new { message = "身份认证有误,请重新登录!" });
|
context.Result = new Microsoft.AspNetCore.Mvc.UnauthorizedObjectResult(new { message = "身份认证有误,请重新登录!" });
|
||||||
|
|
|
||||||
|
|
@ -115,6 +115,12 @@
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:WGShare.API.Controllers.Frontend.RoomController.GetUser(System.String,System.String)">
|
||||||
|
<summary>
|
||||||
|
查询房间中所有用户信息
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:WGShare.API.Controllers.Frontend.RoomController.ExistsRoom(System.String)">
|
<member name="M:WGShare.API.Controllers.Frontend.RoomController.ExistsRoom(System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
检验房间是否存在
|
检验房间是否存在
|
||||||
|
|
@ -163,13 +169,6 @@
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:WGShare.API.Controllers.Frontend.RoomController.ChangeView(System.String,System.String)">
|
|
||||||
<summary>
|
|
||||||
同步视图
|
|
||||||
</summary>
|
|
||||||
<param name="type"></param>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
<member name="M:WGShare.API.Controllers.Frontend.RoomController.GetShowUser(System.String)">
|
<member name="M:WGShare.API.Controllers.Frontend.RoomController.GetShowUser(System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
全员观看
|
全员观看
|
||||||
|
|
@ -193,7 +192,14 @@
|
||||||
</member>
|
</member>
|
||||||
<member name="M:WGShare.API.Controllers.Frontend.RoomController.LevelChannel(System.String)">
|
<member name="M:WGShare.API.Controllers.Frontend.RoomController.LevelChannel(System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
离开频道
|
单用户离开频道
|
||||||
|
</summary>
|
||||||
|
<param name="roomNum"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WGShare.API.Controllers.Frontend.RoomController.AllLevelChannel(System.String)">
|
||||||
|
<summary>
|
||||||
|
全部离开频道
|
||||||
</summary>
|
</summary>
|
||||||
<param name="roomNum"></param>
|
<param name="roomNum"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
|
|
@ -375,7 +381,7 @@
|
||||||
</member>
|
</member>
|
||||||
<member name="M:WGShare.API.Hubs.IMessageClient.ForceExitRoom(System.String)">
|
<member name="M:WGShare.API.Hubs.IMessageClient.ForceExitRoom(System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
强制退出房间
|
单用户踢出房间
|
||||||
</summary>
|
</summary>
|
||||||
<param name="roomNum">会议号</param>
|
<param name="roomNum">会议号</param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
|
|
@ -417,11 +423,18 @@
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:WGShare.API.Hubs.IMessageClient.OperAllMicr(System.Boolean)">
|
<member name="M:WGShare.API.Hubs.IMessageClient.AllLeave">
|
||||||
|
<summary>
|
||||||
|
所有用户退出频道
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WGShare.API.Hubs.IMessageClient.OperAllMicr(System.Boolean,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
所有用户开闭麦
|
所有用户开闭麦
|
||||||
</summary>
|
</summary>
|
||||||
<param name="enableMicr"></param>
|
<param name="enableMicr"></param>
|
||||||
|
<param name="operUid">操作人UID</param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:WGShare.API.Hubs.IMessageClient.OperMicr(WGShare.Domain.Entities.ChannelUserInfo)">
|
<member name="M:WGShare.API.Hubs.IMessageClient.OperMicr(WGShare.Domain.Entities.ChannelUserInfo)">
|
||||||
|
|
@ -447,7 +460,7 @@
|
||||||
</member>
|
</member>
|
||||||
<member name="M:WGShare.API.Hubs.IMessageClient.ForceLogout(System.String)">
|
<member name="M:WGShare.API.Hubs.IMessageClient.ForceLogout(System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
强制退出
|
强制登出
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
|
|
||||||
|
|
@ -5,22 +5,22 @@
|
||||||
"Microsoft.AspNetCore": "Warning"
|
"Microsoft.AspNetCore": "Warning"
|
||||||
},
|
},
|
||||||
"Console": {
|
"Console": {
|
||||||
//"LogLevel": {
|
"LogLevel": {
|
||||||
// "Default": "Information",
|
"Default": "Information",
|
||||||
// "Microsoft": "Warning",
|
"Microsoft": "Warning",
|
||||||
//},
|
|
||||||
"FormatterName": "CustomTimePrefixingFormatter",
|
|
||||||
"FormatterOptions": {
|
|
||||||
"CustomPrefix": "|-<[",
|
|
||||||
"CustomSuffix": "]>-|",
|
|
||||||
"SingleLine": true,
|
|
||||||
"IncludeScopes": true,
|
|
||||||
"TimestampFormat": "HH:mm:ss.ffff ",
|
|
||||||
"UseUtcTimestamp": true,
|
|
||||||
"JsonWriterOptions": {
|
|
||||||
"Indented": true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
//"FormatterName": "CustomTimePrefixingFormatter",
|
||||||
|
//"FormatterOptions": {
|
||||||
|
// "CustomPrefix": "|-<[",
|
||||||
|
// "CustomSuffix": "]>-|",
|
||||||
|
// "SingleLine": true,
|
||||||
|
// "IncludeScopes": true,
|
||||||
|
// "TimestampFormat": "HH:mm:ss.ffff ",
|
||||||
|
// "UseUtcTimestamp": true,
|
||||||
|
// "JsonWriterOptions": {
|
||||||
|
// "Indented": true
|
||||||
|
// }
|
||||||
|
//}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ConnectionStrings": {
|
"ConnectionStrings": {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue