新增房间管理员角色
This commit is contained in:
parent
d4935029a0
commit
aad7f3df40
|
|
@ -63,9 +63,9 @@ namespace WGShare.API.Controllers.Frontend
|
|||
public async Task SetRoomManager([FromBody] RoomManagerInputDTO inputDTO)
|
||||
{
|
||||
var users = RedisHelper.Instance.HVals<ChannelUserInfo>(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, inputDTO.RoomNum));
|
||||
if (users.Count(x => x.IsRoomManager || x.RoleId == ((int)RoleEnums.Admin).ToString()) >= 32)
|
||||
if (users.Count(x => x.IsRoomManager || x.RoleId == ((int)RoleEnums.Admin).ToString() || x.RoleId == ((int)RoleEnums.RoomManager).ToString()) >= 12)
|
||||
{
|
||||
throw Oops.Oh("房间已达到20个发言人限制。请移除一位或联系管理员。");
|
||||
throw Oops.Oh("房间已达到12个发言人限制。请移除一位发言人");
|
||||
}
|
||||
var user = users.FirstOrDefault(x => x.UID == inputDTO.UserId);
|
||||
if (user == null)
|
||||
|
|
@ -103,7 +103,7 @@ namespace WGShare.API.Controllers.Frontend
|
|||
{
|
||||
// 取消显示用户,设置显示管理员
|
||||
var users = RedisHelper.Instance.HVals<ChannelUserInfo>(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, inputDTO.RoomNum));
|
||||
var showUser = users.FirstOrDefault(x => x.RoleId == ((int)RoleEnums.Admin).ToString() || x.IsRoomManager);
|
||||
var showUser = users.FirstOrDefault(x => x.RoleId == ((int)RoleEnums.Admin).ToString() || x.IsRoomManager || x.RoleId == ((int)RoleEnums.RoomManager).ToString());
|
||||
if (showUser != null)
|
||||
{
|
||||
RedisHelper.Instance.HSet(RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId), inputDTO.RoomNum, showUser.UID);
|
||||
|
|
@ -397,7 +397,7 @@ namespace WGShare.API.Controllers.Frontend
|
|||
using (var pipe = RedisHelper.Instance.StartPipe())
|
||||
{
|
||||
|
||||
if (RoleId == RoleEnums.Admin)
|
||||
if (RoleId == RoleEnums.Admin || RoleId == RoleEnums.RoomManager)
|
||||
{
|
||||
// 管理员进房,如果没有全员看ta,则设置
|
||||
var script = @"local hashKey = KEYS[1]
|
||||
|
|
@ -421,12 +421,11 @@ namespace WGShare.API.Controllers.Frontend
|
|||
var results = pipe.EndPipe();
|
||||
|
||||
// 判断,如果有全员看ta,则通知
|
||||
if (RoleId == RoleEnums.Admin && !results.IsNullOrEmpty() && results[0].ObjToInt() == 1)
|
||||
await _hubContext.Clients.Group(roomNum).ShowUser(UId, UserName, UId, UserName);
|
||||
if ((RoleId == RoleEnums.Admin || RoleId == RoleEnums.RoomManager) && !results.IsNullOrEmpty() && results[0].ObjToInt() == 1)
|
||||
await _hubContext.Clients.Group(roomNum).ShowUser(UId, UserName, string.Empty, string.Empty);
|
||||
}
|
||||
await _hubContext.Groups.AddToGroupAsync(ConnectionId, roomNum);
|
||||
await _hubContext.Clients.GroupExcept(roomNum, ConnectionId).UserJoined(userInfo);
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -454,7 +453,7 @@ namespace WGShare.API.Controllers.Frontend
|
|||
if (!result.IsNullOrEmpty() && result[0].ObjToInt() != -1)
|
||||
{
|
||||
var users = RedisHelper.Instance.HVals<ChannelUserInfo>(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum));
|
||||
var showUser = users.FirstOrDefault(x => x.RoleId == ((int)RoleEnums.Admin).ToString() || x.IsRoomManager);
|
||||
var showUser = users.FirstOrDefault(x => x.RoleId == ((int)RoleEnums.Admin).ToString() || x.IsRoomManager || x.RoleId == ((int)RoleEnums.RoomManager).ToString());
|
||||
if (showUser != null)
|
||||
{
|
||||
// 通知全员看ta
|
||||
|
|
@ -509,7 +508,7 @@ namespace WGShare.API.Controllers.Frontend
|
|||
var polledUserIdsSet = new HashSet<string>(polledUserIds);
|
||||
|
||||
// 排除管理员和发言人
|
||||
var candidates = channelUserInfos.Where(x => x.RoleId != ((int)RoleEnums.Admin).ToString() && !x.IsRoomManager);
|
||||
var candidates = channelUserInfos.Where(x => x.RoleId != ((int)RoleEnums.Admin).ToString() && !x.IsRoomManager && x.RoleId != ((int)RoleEnums.RoomManager).ToString());
|
||||
|
||||
// 使用 HashSet 提高查找效率
|
||||
var userInfos = new List<ChannelUserInfo>();
|
||||
|
|
@ -559,7 +558,7 @@ namespace WGShare.API.Controllers.Frontend
|
|||
{
|
||||
return;
|
||||
}
|
||||
var connectionIds = channelUsers.Where(x => x.RoleId == ((int)RoleEnums.Admin).ToString()).Select(x => x.ConnectId);
|
||||
var connectionIds = channelUsers.Where(x => x.RoleId == ((int)RoleEnums.Admin).ToString() || x.RoleId == ((int)RoleEnums.RoomManager).ToString()).Select(x => x.ConnectId);
|
||||
|
||||
if (connectionIds.Any())
|
||||
{
|
||||
|
|
@ -567,7 +566,7 @@ namespace WGShare.API.Controllers.Frontend
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
#region 文件分享
|
||||
/// <summary>
|
||||
/// 分享上传文件
|
||||
|
|
|
|||
|
|
@ -17,5 +17,7 @@ namespace WGShare.Domain.Enums
|
|||
Admin = 1,
|
||||
[Description("普通用户")]
|
||||
User = 2,
|
||||
[Description("房间管理员")]
|
||||
RoomManager = 3
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue