v1
This commit is contained in:
102
OrpaonVision.Core/Results/Result.cs
Normal file
102
OrpaonVision.Core/Results/Result.cs
Normal file
@@ -0,0 +1,102 @@
|
||||
namespace OrpaonVision.Core.Results;
|
||||
|
||||
/// <summary>
|
||||
/// 非泛型统一返回结果。
|
||||
///
|
||||
/// 约束:
|
||||
/// - 普通业务失败使用 Result 返回,不建议抛异常;
|
||||
/// - 异常场景请由上层捕获后转换为统一错误码与消息。
|
||||
/// </summary>
|
||||
public class Result
|
||||
{
|
||||
/// <summary>
|
||||
/// 是否成功。
|
||||
/// </summary>
|
||||
public bool Succeeded { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 业务编码(成功或失败编码)。
|
||||
/// </summary>
|
||||
public string Code { get; init; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 业务消息。
|
||||
/// </summary>
|
||||
public string Message { get; init; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 错误明细。
|
||||
/// </summary>
|
||||
public IReadOnlyCollection<string> Errors { get; init; } = Array.Empty<string>();
|
||||
|
||||
/// <summary>
|
||||
/// 跟踪 ID,用于日志链路关联。
|
||||
/// </summary>
|
||||
public string? TraceId { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建成功结果。
|
||||
/// </summary>
|
||||
public static Result Success(string code = "OK", string message = "Success")
|
||||
{
|
||||
return new Result
|
||||
{
|
||||
Succeeded = true,
|
||||
Code = code,
|
||||
Message = message
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建失败结果。
|
||||
/// </summary>
|
||||
public static Result Fail(string code, string message, params string[] errors)
|
||||
{
|
||||
return new Result
|
||||
{
|
||||
Succeeded = false,
|
||||
Code = code,
|
||||
Message = message,
|
||||
Errors = errors
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 泛型统一返回结果。
|
||||
/// </summary>
|
||||
public sealed class Result<T> : Result
|
||||
{
|
||||
/// <summary>
|
||||
/// 业务数据。
|
||||
/// </summary>
|
||||
public T? Data { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建成功结果。
|
||||
/// </summary>
|
||||
public static Result<T> Success(T data, string code = "OK", string message = "Success")
|
||||
{
|
||||
return new Result<T>
|
||||
{
|
||||
Succeeded = true,
|
||||
Code = code,
|
||||
Message = message,
|
||||
Data = data
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建失败结果。
|
||||
/// </summary>
|
||||
public static new Result<T> Fail(string code, string message, params string[] errors)
|
||||
{
|
||||
return new Result<T>
|
||||
{
|
||||
Succeeded = false,
|
||||
Code = code,
|
||||
Message = message,
|
||||
Errors = errors
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user