core/errcode/errcode.go

104 lines
5.2 KiB
Go
Raw Normal View History

2025-10-03 19:55:20 +08:00
// Package errcode 提供统一的错误码管理
// 定义了系统中所有可能的错误类型和对应的错误码
2025-02-07 13:01:38 +08:00
package errcode
import (
2025-10-03 19:55:20 +08:00
"strings"
2025-02-07 17:08:55 +08:00
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
2025-02-07 13:01:38 +08:00
)
2025-10-03 19:55:20 +08:00
// HTTP请求头相关错误码起始码:1000
2025-02-07 13:01:38 +08:00
var (
2025-10-04 20:21:45 +08:00
AllErrors = make(map[int]string)
2025-10-03 19:55:20 +08:00
ErrHeaderRequestId = NewError(1001, "Header Request-Id Not Found") // 请求ID头缺失
ErrHeaderAuthorization = NewError(1002, "Header Authorization Not Found") // 授权头缺失
ErrHeaderSecretKey = NewError(1003, "Header Secret-Key Not Found") // 密钥头缺失
ErrHeaderMustParams = NewError(1004, "Header Must Params") // 必需参数头缺失
2025-02-07 13:01:38 +08:00
)
2025-10-03 19:55:20 +08:00
// 标准业务错误码,起始码:1100
2025-02-07 13:01:38 +08:00
var (
2025-10-03 19:55:20 +08:00
ErrEmpty = NewError(1101, "Data Is Empty") // 数据为空
ErrRequestParse = NewError(1102, "Request Parse Fail") // 请求解析失败
ErrRequestMust = NewError(1103, "Request Params Required") // 请求参数必需
ErrPermission = NewError(1104, "Permission Denied") // 权限不足
ErrJsonUnmarshal = NewError(1105, "Json Unmarshal Fail") // JSON反序列化失败
ErrJsonMarshal = NewError(1106, "Json Marshal Fail") // JSON序列化失败
ErrInternal = NewError(1107, "Internal Server Error") // 内部服务器错误
ErrPassword = NewError(1108, "Password Incorrect") // 密码错误
ErrAccountDisabled = NewError(1110, "Account Disabled") // 账户已禁用
ErrDisabled = NewError(1111, "Status Disabled") // 状态已禁用
ErrRecordNotFound = NewError(1112, "Record Not Found") // 记录未找到
2025-02-07 13:01:38 +08:00
)
2025-10-03 19:55:20 +08:00
// JWT认证相关错误码起始码:1300
2025-02-07 13:01:38 +08:00
var (
2025-10-03 19:55:20 +08:00
ErrJWTAuthNotFound = NewError(1301, "JWT Authorization Not Found") // JWT授权未找到
ErrJWTBase64Decode = NewError(1302, "JWT Authorization Base64 Decode Error") // JWT Base64解码错误
ErrJWTAuthParseFail = NewError(1303, "JWT Authorization Fail") // JWT授权解析失败
ErrJWTAuthKeyId = NewError(1304, "JWT Key:Id Incorrect") // JWT密钥ID错误
ErrJWTAuthKeyIdentity = NewError(1305, "JWT Key:Identity Incorrect") // JWT密钥身份错误
ErrJWTAuthTokenChanged = NewError(1306, "JWT Authorization Changed") // JWT授权已变更
ErrJWTAuthExpire = NewError(1307, "JWT Authorization Expire") // JWT授权已过期
ErrJWTJsonDecode = NewError(1308, "JWT Authorization JSON Decode Error") // JWT JSON解码错误
ErrJWTJsonEncode = NewError(1309, "JWT Authorization JSON Encode Error") // JWT JSON编码错误
ErrJWTSecretKey = NewError(1310, "JWT SecretKey Error") // JWT密钥错误
2025-02-07 13:01:38 +08:00
)
2025-10-03 19:55:20 +08:00
// 基础设施相关错误码,起始码:1500
2025-02-07 13:01:38 +08:00
var (
2025-10-03 19:55:20 +08:00
ErrDB = NewError(1501, "DB Fatal Error") // 数据库致命错误
ErrRedis = NewError(1502, "Redis Fatal Error") // Redis致命错误
ErrMq = NewError(1503, "MQ Fatal Error") // 消息队列致命错误
ErrOss = NewError(1504, "OSS Fatal Error") // 对象存储致命错误
ErrRpc = NewError(1505, "RPC Fatal Error") // RPC致命错误
ErrApm = NewError(1506, "APM Fatal Error") // 应用性能监控致命错误
ErrEtcd = NewError(1507, "Etcd Fatal Error") // Etcd致命错误
2025-02-07 13:01:38 +08:00
)
2025-10-03 19:55:20 +08:00
// Google gRPC标准错误状态码起始码:1700
2025-02-07 13:01:38 +08:00
var (
2025-10-03 19:55:20 +08:00
OK = NewError(0, "OK") // 成功
ErrAccountNotFound = ErrNotFound(404, "Account") // 账户未找到
ErrCanceled = NewError(1702, "Canceled") // 操作已取消
ErrUnknown = NewError(1703, "Unknown") // 未知错误
ErrInvalidArgument = NewError(1704, "Invalid Argument") // 无效参数
ErrDeadlineExceeded = NewError(1705, "Deadline Exceeded") // 超时
ErrAlreadyExists = NewError(1706, "Already Exists") // 已存在
ErrPermissionDenied = NewError(1707, "Permission Denied") // 权限拒绝
ErrResourceExhausted = NewError(1708, "Resource Exhausted") // 资源耗尽
ErrFailedPrecondition = NewError(1709, "Failed Precondition") // 前置条件失败
ErrAborted = NewError(1710, "Aborted") // 操作中止
ErrOutOfRange = NewError(1711, "Out Of Range") // 超出范围
ErrUnimplemented = NewError(1712, "Unimplemented") // 未实现
ErrUnavailable = NewError(1713, "Unavailable") // 不可用
ErrDataLoss = NewError(1714, "Data Loss") // 数据丢失
ErrUnauthenticated = NewError(1715, "Unauthenticated") // 未认证
2025-02-07 14:05:18 +08:00
)
2025-10-03 19:55:20 +08:00
// NewError 创建新的错误实例
// code: 错误码
// msg: 错误消息
2025-02-07 13:01:38 +08:00
func NewError(code int, msg string) error {
2025-10-04 20:21:45 +08:00
AllErrors[code] = msg
2025-02-07 17:08:55 +08:00
return status.New(codes.Code(code), msg).Err()
2025-02-07 13:01:38 +08:00
}
2025-10-03 19:55:20 +08:00
// ErrFatal 创建致命错误,状态码:500
// code: 错误码
// msg: 错误消息
2025-02-07 17:08:55 +08:00
func ErrFatal(code int, msg string) error {
2025-10-04 20:21:45 +08:00
AllErrors[code] = msg
2025-02-07 17:08:55 +08:00
return status.New(codes.Code(code), msg).Err()
2025-02-07 13:01:38 +08:00
}
2025-10-03 19:55:20 +08:00
// ErrNotFound 创建未找到错误
// code: 错误码
// msg: 错误消息,会自动转换为大写
2025-02-07 17:08:55 +08:00
func ErrNotFound(code int, msg string) error {
2025-10-04 20:21:45 +08:00
AllErrors[code] = strings.ToUpper(msg)
2025-10-03 19:55:20 +08:00
return status.New(codes.Code(code), strings.ToUpper(msg)).Err()
2025-02-07 13:01:38 +08:00
}