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

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>
/// 强退 /// 单条强退
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[HttpDelete("lock")] [HttpDelete("lock")]
[Log(Title = "强退", BusinessType = BusinessType.FORCE)] [Log(Title = "强退", BusinessType = BusinessType.FORCE)]
[ActionPermissionFilter(Permission = "monitor:online:forceLogout")]
public async Task<IActionResult> Lock([FromBody] LockUserDto dto) public async Task<IActionResult> Lock([FromBody] LockUserDto dto)
{ {
if (dto == null) { return ToResponse(ResultCode.PARAM_ERROR); } 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); CacheService.SetLockUser(dto.ClientId + dto.Name, expirTime, dto.Time);
return SUCCESS(new { expirTime }); 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> /// <returns></returns>
public override Task OnConnectedAsync() public override Task OnConnectedAsync()
{ {
var name = HttpContextExtension.GetName(App.HttpContext); var context = App.HttpContext;
var ip = HttpContextExtension.GetClientUserIp(App.HttpContext); var name = HttpContextExtension.GetName(context);
var ip = HttpContextExtension.GetClientUserIp(context);
var ip_info = IpTool.Search(ip); var ip_info = IpTool.Search(ip);
ClientInfo clientInfo = HttpContextExtension.GetClientInfo(context);
ClientInfo clientInfo = HttpContextExtension.GetClientInfo(App.HttpContext);
string device = clientInfo.ToString(); string device = clientInfo.ToString();
string qs = HttpContextExtension.GetQueryString(App.HttpContext); string qs = HttpContextExtension.GetQueryString(context);
string from = HttpUtility.ParseQueryString(qs).Get("from") ?? "web"; 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; string uuid = device + userid + ip;
var user = onlineClients.Any(u => u.ConnnectionId == Context.ConnectionId); var user = onlineClients.Any(u => u.ConnnectionId == Context.ConnectionId);
var user2 = onlineClients.Any(u => u.Uuid == uuid); var user2 = onlineClients.Any(u => u.Uuid == uuid);
@ -58,7 +60,8 @@ namespace ZR.Admin.WebApi.Hubs
{ {
Location = ip_info.City, Location = ip_info.City,
Uuid = uuid, Uuid = uuid,
Platform = from Platform = from,
ClientId = clientId ?? Context.ConnectionId
}; };
onlineClients.Add(onlineUser); onlineClients.Add(onlineUser);
Log.WriteLine(msg: $"{DateTime.Now}{name},{Context.ConnectionId}连接服务端success当前已连接{onlineClients.Count}个"); Log.WriteLine(msg: $"{DateTime.Now}{name},{Context.ConnectionId}连接服务端success当前已连接{onlineClients.Count}个");

View File

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