优化强退功能新增批量强退在线用户

This commit is contained in:
不做码农 2023-08-29 21:35:09 +08:00
parent 24c9ceefde
commit b67c59710b
3 changed files with 33 additions and 9 deletions

View File

@ -37,11 +37,12 @@ namespace ZR.Admin.WebApi.Controllers.monitor
}
/// <summary>
/// 强退
/// 单条强退
/// </summary>
/// <returns></returns>
[HttpDelete("lock")]
[Log(Title = "强退", BusinessType = BusinessType.FORCE)]
[ActionPermissionFilter(Permission = "monitor:online:forceLogout")]
public async Task<IActionResult> Lock([FromBody] LockUserDto dto)
{
if (dto == null) { return ToResponse(ResultCode.PARAM_ERROR); }
@ -53,5 +54,21 @@ namespace ZR.Admin.WebApi.Controllers.monitor
CacheService.SetLockUser(dto.ClientId + dto.Name, expirTime, dto.Time);
return SUCCESS(new { expirTime });
}
/// <summary>
/// 批量强退
/// </summary>
/// <returns></returns>
[HttpDelete("batchlock")]
[Log(Title = "强退", BusinessType = BusinessType.FORCE)]
[ActionPermissionFilter(Permission = "monitor:online:batchLogout")]
public async Task<IActionResult> BatchLock([FromBody] LockUserDto dto)
{
if (dto == null) { return ToResponse(ResultCode.PARAM_ERROR); }
await HubContext.Clients.All.SendAsync(HubsConstant.LockUser, new { dto.Reason, dto.Time });
return SUCCESS(1);
}
}
}

View File

@ -37,16 +37,18 @@ namespace ZR.Admin.WebApi.Hubs
/// <returns></returns>
public override Task OnConnectedAsync()
{
var name = HttpContextExtension.GetName(App.HttpContext);
var ip = HttpContextExtension.GetClientUserIp(App.HttpContext);
var context = App.HttpContext;
var name = HttpContextExtension.GetName(context);
var ip = HttpContextExtension.GetClientUserIp(context);
var ip_info = IpTool.Search(ip);
ClientInfo clientInfo = HttpContextExtension.GetClientInfo(App.HttpContext);
ClientInfo clientInfo = HttpContextExtension.GetClientInfo(context);
string device = clientInfo.ToString();
string qs = HttpContextExtension.GetQueryString(App.HttpContext);
string from = HttpUtility.ParseQueryString(qs).Get("from") ?? "web";
string qs = HttpContextExtension.GetQueryString(context);
var query = HttpUtility.ParseQueryString(qs);
string from = query.Get("from") ?? "web";
string clientId = query.Get("clientId");
long userid = HttpContextExtension.GetUId(App.HttpContext);
long userid = HttpContextExtension.GetUId(context);
string uuid = device + userid + ip;
var user = onlineClients.Any(u => u.ConnnectionId == Context.ConnectionId);
var user2 = onlineClients.Any(u => u.Uuid == uuid);
@ -58,7 +60,8 @@ namespace ZR.Admin.WebApi.Hubs
{
Location = ip_info.City,
Uuid = uuid,
Platform = from
Platform = from,
ClientId = clientId ?? Context.ConnectionId
};
onlineClients.Add(onlineUser);
Log.WriteLine(msg: $"{DateTime.Now}{name},{Context.ConnectionId}连接服务端success当前已连接{onlineClients.Count}个");

View File

@ -50,6 +50,10 @@
/// </summary>
public int ClientNum { get; set; }
/// <summary>
/// 客户端id
/// </summary>
public string ClientId { get; set; }
/// <summary>
///
/// </summary>
public OnlineUsers()