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-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-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 {
|
|
|
|
|
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-03 19:55:20 +08:00
|
|
|
|
return status.New(codes.Code(code), strings.ToUpper(msg)).Err()
|
2025-02-07 13:01:38 +08:00
|
|
|
|
}
|