f
This commit is contained in:
93
internal/infrastructure/external/haiyuapi/haiyuapi_errors.go
vendored
Normal file
93
internal/infrastructure/external/haiyuapi/haiyuapi_errors.go
vendored
Normal file
@@ -0,0 +1,93 @@
|
||||
package haiyuapi
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// 海宇API平台返回码
|
||||
const (
|
||||
CodeSuccess = 0 // 业务成功
|
||||
CodeQueryEmpty = 1000 // 查询为空
|
||||
CodeSystem = 1001 // 接口异常
|
||||
CodeDecryptFail = 1002 // 参数解密失败
|
||||
CodeRequestParam = 1003 // 基础参数校验不正确
|
||||
CodeInvalidIP = 1004 // 未经授权的IP
|
||||
CodeMissingAccessID = 1005 // 缺少Access-Id
|
||||
CodeInvalidAccessID = 1006 // 未经授权的AccessId
|
||||
CodeInsufficientBalance = 1007 // 账户余额不足,无法请求
|
||||
CodeProductNotSubscribed = 1008 // 未开通此产品
|
||||
CodeBusiness = 2001 // 业务失败
|
||||
)
|
||||
|
||||
var (
|
||||
ErrDatasource = errors.New("数据源异常")
|
||||
ErrSystem = errors.New("系统异常")
|
||||
ErrNotFound = errors.New("查询为空")
|
||||
)
|
||||
|
||||
// haiyuapiAPIError 海宇API平台错误
|
||||
type haiyuapiAPIError struct {
|
||||
Code int
|
||||
Message string
|
||||
}
|
||||
|
||||
func (e *haiyuapiAPIError) Error() string {
|
||||
return fmt.Sprintf("海宇API返回错误,code: %d,message: %s", e.Code, e.Message)
|
||||
}
|
||||
|
||||
// NewHaiyuapiAPIError 创建平台错误
|
||||
func NewHaiyuapiAPIError(code int, message string) *haiyuapiAPIError {
|
||||
if message == "" {
|
||||
if desc := GetPlatformCodeDesc(code); desc != "" {
|
||||
message = desc
|
||||
} else {
|
||||
message = "海宇API返回未知错误"
|
||||
}
|
||||
}
|
||||
return &haiyuapiAPIError{Code: code, Message: message}
|
||||
}
|
||||
|
||||
// platformCodeDesc 平台 code -> 官方 message
|
||||
var platformCodeDesc = map[int]string{
|
||||
CodeSuccess: "业务成功",
|
||||
CodeQueryEmpty: "查询为空",
|
||||
CodeSystem: "接口异常",
|
||||
CodeDecryptFail: "参数解密失败",
|
||||
CodeRequestParam: "基础参数校验不正确",
|
||||
CodeInvalidIP: "未经授权的IP",
|
||||
CodeMissingAccessID: "缺少Access-Id",
|
||||
CodeInvalidAccessID: "未经授权的AccessId",
|
||||
CodeInsufficientBalance: "账户余额不足,无法请求",
|
||||
CodeProductNotSubscribed: "未开通此产品",
|
||||
CodeBusiness: "业务失败",
|
||||
}
|
||||
|
||||
// GetPlatformCodeDesc 根据平台 code 获取描述
|
||||
func GetPlatformCodeDesc(code int) string {
|
||||
if desc, ok := platformCodeDesc[code]; ok {
|
||||
return desc
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// GetErrByCode 将海宇API code 映射为内部哨兵错误,供处理器 errors.Is 判断
|
||||
//
|
||||
// 1000 -> ErrNotFound(查询为空,可按产品约定当成功处理)
|
||||
// 1001, 1002, 1003 -> ErrSystem(接口/解密/参数校验异常)
|
||||
// 1004~1008, 2001 -> ErrDatasource(鉴权、余额、产品、业务类上游错误)
|
||||
func GetErrByCode(code int) error {
|
||||
switch code {
|
||||
case CodeSuccess:
|
||||
return nil
|
||||
case CodeQueryEmpty:
|
||||
return ErrNotFound
|
||||
case CodeSystem, CodeDecryptFail, CodeRequestParam:
|
||||
return ErrSystem
|
||||
case CodeInvalidIP, CodeMissingAccessID, CodeInvalidAccessID,
|
||||
CodeInsufficientBalance, CodeProductNotSubscribed, CodeBusiness:
|
||||
return ErrDatasource
|
||||
default:
|
||||
return ErrDatasource
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user