using Microsoft.AspNetCore.Authorization; using Service.Message; namespace WebApi.Controllers; [Authorize] [ApiController] [Route("api/[controller]/[action]")] public class MessageRecordController(IMessageService messageService, ILogger logger) : ControllerBase { /// /// 获取消息列表 /// [HttpGet] public async Task> GetList([FromQuery] int pageIndex = 1, [FromQuery] int pageSize = 20) { try { var (list, total) = await messageService.GetPagedListAsync(pageIndex, pageSize); return PagedResponse.Done(list.ToArray(), (int)total); } catch (Exception ex) { logger.LogError(ex, "获取消息列表失败"); return PagedResponse.Fail($"获取消息列表失败: {ex.Message}"); } } /// /// 获取未读消息数量 /// [HttpGet] public async Task> GetUnreadCount() { try { var count = await messageService.GetUnreadCountAsync(); return count.Ok(); } catch (Exception ex) { logger.LogError(ex, "获取未读消息数量失败"); return $"获取未读消息数量失败: {ex.Message}".Fail(); } } /// /// 标记已读 /// [HttpPost] public async Task> MarkAsRead([FromQuery] long id) { try { var result = await messageService.MarkAsReadAsync(id); return result.Ok(); } catch (Exception ex) { logger.LogError(ex, "标记消息已读失败,ID: {Id}", id); return $"标记消息已读失败: {ex.Message}".Fail(); } } /// /// 全部标记已读 /// [HttpPost] public async Task> MarkAllAsRead() { try { var result = await messageService.MarkAllAsReadAsync(); return result.Ok(); } catch (Exception ex) { logger.LogError(ex, "全部标记已读失败"); return $"全部标记已读失败: {ex.Message}".Fail(); } } /// /// 删除消息 /// [HttpPost] public async Task> Delete([FromQuery] long id) { try { var result = await messageService.DeleteAsync(id); return result.Ok(); } catch (Exception ex) { logger.LogError(ex, "删除消息失败,ID: {Id}", id); return $"删除消息失败: {ex.Message}".Fail(); } } /// /// 新增消息 (测试用) /// [HttpPost] public async Task> Add([FromBody] MessageRecord message) { try { var result = await messageService.AddAsync(message); return result.Ok(); } catch (Exception ex) { logger.LogError(ex, "新增消息失败"); return $"新增消息失败: {ex.Message}".Fail(); } } }