Files
PTL/1.0.0/src/FASS.Scheduler.Lite/Attributes/ResultAttribute.cs
T
2026-07-14 21:29:27 +08:00

46 lines
1.8 KiB
C#

using Common.NETCore.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using System.Net;
namespace FASS.Scheduler.Attributes
{
public class ResultAttribute : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext context)
{
if (context.Result is StatusCodeResult statusCodeResult)
{
var responseResult = new ResponseResult();
responseResult.Code = statusCodeResult.StatusCode.ToString();
if (statusCodeResult is OkResult)
{
responseResult.Success = true;
responseResult.Data = Enum.GetName(typeof(HttpStatusCode), (HttpStatusCode)statusCodeResult.StatusCode);
}
else
{
responseResult.Success = false;
responseResult.Message = Enum.GetName(typeof(HttpStatusCode), (HttpStatusCode)statusCodeResult.StatusCode);
}
context.Result = new OkObjectResult(responseResult);
}
else if (context.Result is ObjectResult objectResult)
{
var responseResult = new ResponseResult();
responseResult.Code = (objectResult?.StatusCode ?? 0).ToString();
if (objectResult is OkObjectResult)
{
responseResult.Success = true;
responseResult.Data = objectResult.Value;
}
else
{
responseResult.Success = false;
responseResult.Message = objectResult?.Value;
}
context.Result = new OkObjectResult(responseResult);
}
}
}
}