using System.Threading.Tasks;
using F9MES.Application.Im;
using F9MES.Common.Result;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace F9MES.Api.Controllers;
/// IM 系统管理:性能/服务监测、配置界面、系统消息与公告管理
[ApiController]
[Route("api/im/admin")]
[Authorize]
public class ImAdminController : ControllerBase
{
private readonly ImAdminService _svc;
public ImAdminController(ImAdminService svc)
{
_svc = svc;
}
/// 性能监测
[HttpGet("performance")]
public async Task Performance()
{
return Ok(ApiResult.Ok(await _svc.PerformanceAsync()));
}
/// 服务监测
[HttpGet("service")]
public async Task Service()
{
return Ok(ApiResult.Ok(await _svc.ServiceStatusAsync()));
}
/// 读取 IM 配置
[HttpGet("config")]
public async Task Config()
{
return Ok(ApiResult.Ok(await _svc.GetConfigAsync()));
}
/// 保存 IM 配置
[HttpPost("config")]
public async Task SaveConfig([FromBody] List inputs)
{
await _svc.SaveConfigAsync(inputs ?? new());
return Ok(ApiResult.Ok(true, "配置已保存"));
}
/// 系统消息管理分页(msgType=-1 全部)
[HttpGet("messages")]
public async Task Messages([FromQuery] string? kw, [FromQuery] int msgType = -1, [FromQuery] int page = 1, [FromQuery] int size = 20)
{
return Ok(ApiResult.Ok(await _svc.GetMessagesAsync(kw, msgType, page, size)));
}
/// 删除消息
[HttpDelete("messages/{id}")]
public async Task DeleteMessage(long id)
{
await _svc.DeleteMessageAsync(id);
return Ok(ApiResult.Ok(true, "已删除"));
}
}