using Microsoft.AspNetCore.Authorization; namespace WebApi.Controllers; [Authorize] [ApiController] [Route("api/[controller]/[action]")] public class MessageRecordController(IMessageRecordService 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 BaseResponse.Done(count); } catch (Exception ex) { logger.LogError(ex, "获取未读消息数量失败"); return BaseResponse.Fail($"获取未读消息数量失败: {ex.Message}"); } } /// /// 标记已读 /// [HttpPost] public async Task> MarkAsRead([FromQuery] long id) { try { var result = await messageService.MarkAsReadAsync(id); return BaseResponse.Done(result); } catch (Exception ex) { logger.LogError(ex, "标记消息已读失败,ID: {Id}", id); return BaseResponse.Fail($"标记消息已读失败: {ex.Message}"); } } /// /// 全部标记已读 /// [HttpPost] public async Task> MarkAllAsRead() { try { var result = await messageService.MarkAllAsReadAsync(); return BaseResponse.Done(result); } catch (Exception ex) { logger.LogError(ex, "全部标记已读失败"); return BaseResponse.Fail($"全部标记已读失败: {ex.Message}"); } } /// /// 删除消息 /// [HttpPost] public async Task> Delete([FromQuery] long id) { try { var result = await messageService.DeleteAsync(id); return BaseResponse.Done(result); } catch (Exception ex) { logger.LogError(ex, "删除消息失败,ID: {Id}", id); return BaseResponse.Fail($"删除消息失败: {ex.Message}"); } } /// /// 新增消息 (测试用) /// [HttpPost] public async Task> Add([FromBody] MessageRecord message) { try { var result = await messageService.AddAsync(message); return BaseResponse.Done(result); } catch (Exception ex) { logger.LogError(ex, "新增消息失败"); return BaseResponse.Fail($"新增消息失败: {ex.Message}"); } } }