core/errcode/errcode.go

104 lines
5.2 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 (
"strings"
"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") // 记录未找到
)
// 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 {
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] = strings.ToUpper(msg)
return status.New(codes.Code(code), strings.ToUpper(msg)).Err()
}