using Yh.Platform.Abstractions;
namespace YhCore.Common.Exceptions
{
/// int 错误码 → 新框架 映射(对齐 Java ErrorCode 常量值)。
///
/// 用途:业务直接抛 时,把数值错误码转成 IErrorCode:
/// throw new DException(ErrorCodeUtil.From(5001), "库存不足");
///
public static class ErrorCodeUtil
{
public const int Default = 1;
/// 按数值映射平台已知错误码;未知码保留原值(避免业务自定义错误码被吞成 Error=1)。
public static IErrorCode From(int code) => code switch
{
0 => ErrorCode.Success,
2 => ErrorCode.ParamError,
3 => ErrorCode.Forbidden,
4 => ErrorCode.Unauthorized,
5 => ErrorCode.Custom,
6 => ErrorCode.InternalServerError,
405 => ErrorCode.HttpMethodNotAllowed,
_ => new RawErrorCode(code, ""),
};
/// 未知码透传实现:保留调用方原始 code,msg 由业务消息承载。
private sealed record RawErrorCode(int Code, string Msg) : IErrorCode;
}
}