using Microsoft.AspNetCore.Mvc; using Foxel.Models; using System.Security.Claims; namespace Foxel.Controllers { [ApiController] [Route("api/[controller]")] public abstract class BaseApiController : ControllerBase { protected int? GetCurrentUserId() { var userIdClaim = User.FindFirst(ClaimTypes.NameIdentifier)?.Value; return userIdClaim != null ? int.Parse(userIdClaim) : null; } protected ActionResult> Success(T data, string message = "操作成功", int statusCode = 200) { return Ok(new BaseResult { Success = true, Message = message, Data = data, StatusCode = statusCode }); } protected ActionResult> Success(string message = "操作成功", int statusCode = 200) { return Ok(new BaseResult { Success = true, Message = message, StatusCode = statusCode }); } protected ActionResult> Error(string message, int statusCode = 400) { return StatusCode(statusCode, new BaseResult { Success = false, Message = message, StatusCode = statusCode }); } protected ActionResult> PaginatedSuccess( List? data, int totalCount, int page, int pageSize, string message = "获取成功") { return Ok(new PaginatedResult { Success = true, Message = message, Data = data, TotalCount = totalCount, Page = page, PageSize = pageSize, StatusCode = 200 }); } protected ActionResult> PaginatedError(string message, int statusCode = 400) { return StatusCode(statusCode, new PaginatedResult { Success = false, Message = message, Data = new List(), TotalCount = 0, Page = 0, PageSize = 0, StatusCode = statusCode }); } } }