You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

119 lines
3.2 KiB

using Microsoft.AspNetCore.Mvc;
using System.Net;
namespace CoreAgent.Domain.Models.Common;
/// <summary>
/// API操作结果
/// </summary>
public class ApiActionResult : IActionResult
{
/// <summary>
/// 是否成功
/// </summary>
public bool IsSuccess { get; set; }
/// <summary>
/// 消息
/// </summary>
public string Message { get; set; }
/// <summary>
/// 错误代码
/// </summary>
public string ErrorCode { get; set; }
/// <summary>
/// HTTP状态码
/// </summary>
public HttpStatusCode StatusCode { get; set; } = HttpStatusCode.OK;
/// <summary>
/// 创建成功结果
/// </summary>
/// <param name="message">消息</param>
/// <returns>API操作结果</returns>
public static ApiActionResult Ok(string message = "操作成功")
{
return new ApiActionResult
{
IsSuccess = true,
Message = message,
ErrorCode = string.Empty,
StatusCode = HttpStatusCode.OK
};
}
/// <summary>
/// 创建失败结果
/// </summary>
/// <param name="message">错误消息</param>
/// <param name="errorCode">错误代码</param>
/// <param name="statusCode">HTTP状态码</param>
/// <returns>API操作结果</returns>
public static ApiActionResult Error(string message, string errorCode = "ERROR", HttpStatusCode statusCode = HttpStatusCode.BadRequest)
{
return new ApiActionResult
{
IsSuccess = false,
Message = message,
ErrorCode = errorCode,
StatusCode = statusCode
};
}
public Task ExecuteResultAsync(ActionContext context)
{
var result = new ObjectResult(this) { StatusCode = (int)StatusCode };
return result.ExecuteResultAsync(context);
}
}
/// <summary>
/// 带数据的API操作结果
/// </summary>
/// <typeparam name="T">数据类型</typeparam>
public class ApiActionResult<T> : ApiActionResult
{
/// <summary>
/// 数据
/// </summary>
public T Data { get; set; }
/// <summary>
/// 创建成功结果
/// </summary>
/// <param name="data">数据</param>
/// <param name="message">消息</param>
/// <returns>API操作结果</returns>
public static ApiActionResult<T> Ok(T data, string message = "操作成功")
{
return new ApiActionResult<T>
{
IsSuccess = true,
Message = message,
ErrorCode = string.Empty,
StatusCode = HttpStatusCode.OK,
Data = data
};
}
/// <summary>
/// 创建失败结果
/// </summary>
/// <param name="message">错误消息</param>
/// <param name="errorCode">错误代码</param>
/// <param name="statusCode">HTTP状态码</param>
/// <returns>API操作结果</returns>
public static ApiActionResult<T> Error(string message, string errorCode = "ERROR", HttpStatusCode statusCode = HttpStatusCode.BadRequest)
{
return new ApiActionResult<T>
{
IsSuccess = false,
Message = message,
ErrorCode = errorCode,
StatusCode = statusCode,
Data = default
};
}
}