// 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() }