using Dpz.Core.Public.ViewModel.Response;
namespace Dpz.Core.WebApi.Controllers;
/// <summary>
/// 系统通知管理
/// </summary>
[ApiController, Route("api/[controller]"), Authorize(nameof(Permissions.System))]
public class SystemNotificationController(ISystemNotificationHistoryService notificationService)
: ControllerBase
{
/// <summary>
/// 获取最近的系统通知
/// </summary>
[HttpGet, AllowAnonymous]
[ProducesResponseType<List<SystemNotificationHistoryResponse>>(StatusCodes.Status200OK)]
public async Task<IActionResult> GetLatest(CancellationToken cancellationToken = default)
{
var list = await notificationService.GetRecentAsync(cancellationToken);
return Ok(list);
}
/// <summary>
/// 分页获取系统通知记录
/// </summary>
/// <param name="query">查询参数</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns></returns>
[HttpGet("page")]
[ProducesResponseType<List<SystemNotificationHistoryResponse>>(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
public async Task<IActionResult> GetPage(
[FromQuery] SystemNotificationQueryDto query,
CancellationToken cancellationToken = default
)
{
var list = await notificationService.GetPageAsync(
query.PageIndex,
query.PageSize,
cancellationToken
);
list.AddPaginationMetadata(Response.Headers);
return Ok(list);
}
/// <summary>
/// 删除系统通知记录
/// </summary>
/// <param name="id">记录 ID</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns></returns>
[HttpDelete("{id}")]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
public async Task<IActionResult> Delete(
string id,
CancellationToken cancellationToken = default
)
{
await notificationService.DeleteAsync(id, cancellationToken);
return NoContent();
}
}
评论加载中...