using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Authorization; using FutureMailAPI.Services; using FutureMailAPI.DTOs; using FutureMailAPI.Helpers; namespace FutureMailAPI.Controllers { [ApiController] [Route("api/v1/[controller]")] public class PersonalSpaceController : BaseController { private readonly IPersonalSpaceService _personalSpaceService; private readonly ILogger _logger; public PersonalSpaceController(IPersonalSpaceService personalSpaceService, ILogger logger) { _personalSpaceService = personalSpaceService; _logger = logger; } /// /// 获取用户时间线 /// /// 时间线类型 /// 开始日期 /// 结束日期 /// 用户时间线 [HttpGet("timeline")] public async Task GetTimeline( [FromQuery] TimelineType type = TimelineType.ALL, [FromQuery] DateTime? startDate = null, [FromQuery] DateTime? endDate = null) { try { var userId = GetCurrentUserId(); if (userId <= 0) { return Unauthorized(ApiResponse.ErrorResult("无效的用户令牌")); } var query = new TimelineQueryDto { Type = type, StartDate = startDate, EndDate = endDate }; var result = await _personalSpaceService.GetTimelineAsync(userId, query); if (result.Success) { return Ok(result); } return BadRequest(result); } catch (Exception ex) { _logger.LogError(ex, "获取时间线时发生错误"); return StatusCode(500, ApiResponse.ErrorResult("服务器内部错误")); } } /// /// 获取用户统计数据 /// /// 用户统计数据 [HttpGet("statistics")] public async Task GetStatistics() { try { var userId = GetCurrentUserId(); if (userId <= 0) { return Unauthorized(ApiResponse.ErrorResult("无效的用户令牌")); } var result = await _personalSpaceService.GetStatisticsAsync(userId); if (result.Success) { return Ok(result); } return BadRequest(result); } catch (Exception ex) { _logger.LogError(ex, "获取统计数据时发生错误"); return StatusCode(500, ApiResponse.ErrorResult("服务器内部错误")); } } /// /// 获取用户订阅信息 /// /// 用户订阅信息 [HttpGet("subscription")] public async Task GetSubscription() { try { var userId = GetCurrentUserId(); if (userId <= 0) { return Unauthorized(ApiResponse.ErrorResult("无效的用户令牌")); } var result = await _personalSpaceService.GetSubscriptionAsync(userId); if (result.Success) { return Ok(result); } return BadRequest(result); } catch (Exception ex) { _logger.LogError(ex, "获取订阅信息时发生错误"); return StatusCode(500, ApiResponse.ErrorResult("服务器内部错误")); } } /// /// 获取用户资料 /// /// 用户资料 [HttpGet("profile")] public async Task GetUserProfile() { try { var userId = GetCurrentUserId(); if (userId <= 0) { return Unauthorized(ApiResponse.ErrorResult("无效的用户令牌")); } var result = await _personalSpaceService.GetUserProfileAsync(userId); if (result.Success) { return Ok(result); } return BadRequest(result); } catch (Exception ex) { _logger.LogError(ex, "获取用户资料时发生错误"); return StatusCode(500, ApiResponse.ErrorResult("服务器内部错误")); } } } }