CSharp-Single-EFCore/Bunny.Dao/Model/Result/Result.cs

187 lines
5.7 KiB
C#

using System.Net;
using Bunny.Dao.Model.Constant.Result;
using Microsoft.AspNetCore.Mvc;
namespace Bunny.Dao.Model.Result;
[Serializable]
public class Result<T>(HttpStatusCode code, T? data, string? message)
{
public Result(HttpStatusCode code, string? message) : this(code, default, message)
{
}
private Result(int code, T? data, string message) : this((HttpStatusCode)code, data, message)
{
}
/// <summary>
/// 返回码
/// </summary>
public HttpStatusCode Code { get; set; } = code;
/// <summary>
/// 返回说明
/// </summary>
public string? Message { get; set; } = message;
/// <summary>
/// 返回数据体 可为空
/// </summary>
public T? Data { get; set; } = data;
// 不再继承 IActionResult
public Task ExecuteResultAsync(ActionContext context)
{
return new Task<Result<T>>(() => new Result<T>(code, data, message));
}
/// <summary>
/// 操作成功
/// </summary>
public static Result<T> Success()
{
return new Result<T>(HttpStatusCode.OK, default, SuccessConstant.Success);
}
/// <summary>
/// 返回成功对象消息
/// </summary>
/// <param name="data">数据内容分</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Success(T data)
{
return new Result<T>(HttpStatusCode.OK, data, SuccessConstant.Success);
}
/// <summary>
/// 自定义返回成功消息
/// </summary>
/// <param name="code">code状态码</param>
/// <param name="message">消息内容</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Success(HttpStatusCode code, string message)
{
return new Result<T>(code, default, message);
}
/// <summary>
/// 自定义返回成功消息
/// </summary>
/// <param name="code">code状态码</param>
/// <param name="data">数据内容分</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Success(HttpStatusCode code, T data)
{
return new Result<T>(code, data, SuccessConstant.Success);
}
/// <summary>
/// 自定义返回成功消息
/// </summary>
/// <param name="message">消息内容</param>
/// <param name="data">数据内容分</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Success(string message, T data)
{
return new Result<T>(HttpStatusCode.OK, data, message);
}
/// <summary>
/// 自定义返回成功消息
/// </summary>
/// <param name="code">code状态码</param>
/// <param name="data">数据内容分</param>
/// <param name="message">消息内容</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Success(HttpStatusCode code, T data, string message)
{
return new Result<T>(code, data, message);
}
/// <summary>
/// 返回错误对象
/// </summary>
/// <returns>返回的数据内容</returns>
public static Result<T> Error()
{
return new Result<T>(HttpStatusCode.InternalServerError, default, ErrorConstant.InternalServerError);
}
/// <summary>
/// 返回错误对象
/// </summary>
/// <param name="code">code状态码</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Error(HttpStatusCode code)
{
return new Result<T>(code, default, ErrorConstant.InternalServerError);
}
/// <summary>
/// 返回错误对象
/// </summary>
/// <param name="data">数据内容分</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Error(T? data)
{
return new Result<T>(HttpStatusCode.InternalServerError, data, ErrorConstant.InternalServerError);
}
/// <summary>
/// 自定义返回成功消息
/// </summary>
/// <param name="code">code状态码</param>
/// <param name="message">消息内容</param>
/// <param name="data">错误数据</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Error(int code, string message, T? data = default)
{
return new Result<T>(code, data, message);
}
/// <summary>
/// 自定义返回成功消息
/// </summary>
/// <param name="code">code状态码</param>
/// <param name="message">消息内容</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Error(HttpStatusCode code, string message)
{
return new Result<T>(code, default, message);
}
/// <summary>
/// 返回错误对象
/// </summary>
/// <param name="code">code状态码</param>
/// <param name="data">数据内容分</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Error(HttpStatusCode code, T data)
{
return new Result<T>(code, data, ErrorConstant.InternalServerError);
}
/// <summary>
/// 返回错误对象
/// </summary>
/// <param name="message">消息内容</param>
/// <param name="data">数据内容分</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Error(string message, T data)
{
return new Result<T>(HttpStatusCode.InternalServerError, data, message);
}
/// <summary>
/// 自定义返回成功消息
/// </summary>
/// <param name="code">code状态码</param>
/// <param name="data">数据内容分</param>
/// <param name="message">消息内容</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Error(HttpStatusCode code, T data, string message)
{
return new Result<T>(code, data, message);
}
}