新增房间管理员角色

This commit is contained in:
youngq 2024-09-14 14:10:28 +08:00
parent d4935029a0
commit aad7f3df40
2 changed files with 12 additions and 11 deletions

View File

@ -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>
/// 分享上传文件

View File

@ -17,5 +17,7 @@ namespace WGShare.Domain.Enums
Admin = 1,
[Description("普通用户")]
User = 2,
[Description("房间管理员")]
RoomManager = 3
}
}