100 lines
5.1 KiB
Go
100 lines
5.1 KiB
Go
// Package errcode 提供统一的错误码管理
|
||
// 定义了系统中所有可能的错误类型和对应的错误码
|
||
package errcode
|
||
|
||
import (
|
||
"strings"
|
||
|
||
"google.golang.org/grpc/codes"
|
||
"google.golang.org/grpc/status"
|
||
)
|
||
|
||
// HTTP请求头相关错误码,起始码:1000
|
||
var (
|
||
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") // 记录未找到
|
||
)
|
||
|
||
// JWT认证相关错误码,起始码:1300
|
||
var (
|
||
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密钥错误
|
||
)
|
||
|
||
// 基础设施相关错误码,起始码: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 {
|
||
return status.New(codes.Code(code), msg).Err()
|
||
}
|
||
|
||
// ErrFatal 创建致命错误,状态码:500
|
||
// code: 错误码
|
||
// msg: 错误消息
|
||
func ErrFatal(code int, msg string) error {
|
||
return status.New(codes.Code(code), msg).Err()
|
||
}
|
||
|
||
// ErrNotFound 创建未找到错误
|
||
// code: 错误码
|
||
// msg: 错误消息,会自动转换为大写
|
||
func ErrNotFound(code int, msg string) error {
|
||
return status.New(codes.Code(code), strings.ToUpper(msg)).Err()
|
||
}
|