core/errcode/errcode.go

115 lines
5.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Package errcode 提供统一的错误码管理
// 定义了系统中所有可能的错误类型和对应的错误码
package errcode
import (
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
// HTTP请求头相关错误码起始码:1000
var (
AllErrors = make(map[int]string)
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") // 必需参数头缺失
)
// 标准业务错误码,起始码:1100
var (
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") // 记录未找到
)
// Token认证相关错误码起始码:1300
var (
ErrTokenAuthNotFound = NewError(1301, "Token Authorization Not Found") // Token授权未找到
ErrTokenDataInvalid = NewError(1302, "Token Authorization Data Invalid") // Token授权数据无效
ErrTokenBase64Decode = NewError(1303, "Token Authorization Base64 Decode Error") // Token Base64解码错误
ErrTokenAuthParseFail = NewError(1304, "Token Authorization Fail") // Token授权解析失败
ErrTokenAuthKeyId = NewError(1305, "Token Key:Id Incorrect") // Token密钥ID错误
ErrTokenAuthKeyIdentity = NewError(1306, "Token Key:Identity Incorrect") // Token密钥身份错误
ErrTokenAuthTokenChanged = NewError(1307, "Token Authorization Changed") // Token授权已变更
ErrTokenAuthExpire = NewError(1308, "Token Authorization Expire") // Token授权已过期
ErrTokenJsonDecode = NewError(1309, "Token Authorization JSON Decode Error") // Token JSON解码错误
ErrTokenJsonEncode = NewError(1310, "Token Authorization JSON Encode Error") // Token JSON编码错误
ErrTokenSecretKey = NewError(1311, "Token SecretKey Error") // Token密钥错误
ErrTokenSecretKeyNotFound = NewError(1312, "Token SecretKey Not Found") // Token密钥未找到
ErrTokenGenerate = NewError(1313, "Generate Token Fail") // 生成令牌失败
ErrTokenParse = NewError(1314, "Parse Token Fail") // 解析令牌失败
)
// 基础设施相关错误码,起始码:1500
var (
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致命错误
)
// Google gRPC标准错误状态码起始码:1700
var (
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") // 未认证
)
// NewError 创建新的错误实例
// code: 错误码
// msg: 错误消息
func NewError(code int, msg string) error {
AllErrors[code] = msg
return status.New(codes.Code(code), msg).Err()
}
// ErrFatal 创建致命错误,状态码:500
// code: 错误码
// msg: 错误消息
func ErrFatal(code int, msg string) error {
AllErrors[code] = msg
return status.New(codes.Code(code), msg).Err()
}
// ErrNotFound 创建未找到错误
// code: 错误码
// msg: 错误消息,会自动转换为大写
func ErrNotFound(code int, msg string) error {
AllErrors[code] = msg
return status.New(codes.Code(code), msg).Err()
}
// IsErr 检查错误是否与指定的错误匹配
func IsErr(err, target error) bool {
return status.Code(err) == status.Code(target)
}
func String(err error, msg string) error {
return status.New(status.Code(err), err.Error()+", "+msg).Err()
}