f
This commit is contained in:
141
internal/infrastructure/external/nuoer/nuoer_errors.go
vendored
Normal file
141
internal/infrastructure/external/nuoer/nuoer_errors.go
vendored
Normal file
@@ -0,0 +1,141 @@
|
||||
package nuoer
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// 平台层 code 返回码(见文档2)
|
||||
const (
|
||||
CodeSuccess = 0 // 成功
|
||||
CodeResponseError = -1 // 响应异常
|
||||
)
|
||||
|
||||
// 业务层 busiCode 返回码(见文档2)
|
||||
const (
|
||||
BusiCodeSuccess = 10 // 查询成功【计费】
|
||||
BusiCodeNotFound = 1000 // 数据未查得
|
||||
BusiCodeInsufficientFund = 1001 // 账户余额不足
|
||||
BusiCodeAccountNotFound = 1002 // 账户信息不存在
|
||||
BusiCodeAppIDError = 1003 // appId异常
|
||||
BusiCodeProductError = 1004 // 产品编号异常
|
||||
BusiCodeAccountError = 1005 // 账号信息异常
|
||||
BusiCodeOverdraftLimit = 1006 // 透支余额已达上限
|
||||
BusiCodeDataRequestError = 1007 // 数据请求异常
|
||||
BusiCodeServiceNotOpen = 1009 // 服务尚未开通
|
||||
)
|
||||
|
||||
var (
|
||||
ErrDatasource = errors.New("数据源异常")
|
||||
ErrSystem = errors.New("系统异常")
|
||||
ErrNotFound = errors.New("查询为空")
|
||||
)
|
||||
|
||||
// platformCodeDesc 平台层 code -> 描述
|
||||
var platformCodeDesc = map[int]string{
|
||||
CodeSuccess: "成功",
|
||||
CodeResponseError: "响应异常",
|
||||
}
|
||||
|
||||
// busiCodeDesc 业务层 busiCode -> 描述
|
||||
var busiCodeDesc = map[int]string{
|
||||
BusiCodeSuccess: "查询成功【计费】",
|
||||
BusiCodeNotFound: "数据未查得",
|
||||
BusiCodeInsufficientFund: "账户余额不足",
|
||||
BusiCodeAccountNotFound: "账户信息不存在",
|
||||
BusiCodeAppIDError: "appId异常",
|
||||
BusiCodeProductError: "产品编号异常",
|
||||
BusiCodeAccountError: "账号信息异常",
|
||||
BusiCodeOverdraftLimit: "透支余额已达上限",
|
||||
BusiCodeDataRequestError: "数据请求异常",
|
||||
BusiCodeServiceNotOpen: "服务尚未开通",
|
||||
}
|
||||
|
||||
// GetPlatformCodeDesc 根据平台 code 获取描述
|
||||
func GetPlatformCodeDesc(code int) string {
|
||||
if desc, ok := platformCodeDesc[code]; ok {
|
||||
return desc
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// GetBusiCodeDesc 根据 busiCode 获取描述
|
||||
func GetBusiCodeDesc(busiCode int) string {
|
||||
if desc, ok := busiCodeDesc[busiCode]; ok {
|
||||
return desc
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// nuoerError 诺尔智汇平台层错误(响应 code 字段)
|
||||
type nuoerError struct {
|
||||
Code int
|
||||
Message string
|
||||
}
|
||||
|
||||
func (e *nuoerError) Error() string {
|
||||
return fmt.Sprintf("诺尔智汇返回错误,code: %d,msg: %s", e.Code, e.Message)
|
||||
}
|
||||
|
||||
// NewNuoerError 创建平台层错误
|
||||
func NewNuoerError(code int, message string) *nuoerError {
|
||||
if message == "" {
|
||||
if desc := GetPlatformCodeDesc(code); desc != "" {
|
||||
message = desc
|
||||
} else {
|
||||
message = "诺尔智汇返回未知错误"
|
||||
}
|
||||
}
|
||||
return &nuoerError{Code: code, Message: message}
|
||||
}
|
||||
|
||||
// nuoerBusiError 诺尔智汇业务层错误(data.busiCode 字段)
|
||||
type nuoerBusiError struct {
|
||||
BusiCode int
|
||||
BusiMsg string
|
||||
}
|
||||
|
||||
func (e *nuoerBusiError) Error() string {
|
||||
return fmt.Sprintf("诺尔智汇业务错误,busiCode: %d,busiMsg: %s", e.BusiCode, e.BusiMsg)
|
||||
}
|
||||
|
||||
// NewNuoerBusiError 创建业务层错误
|
||||
func NewNuoerBusiError(busiCode int, busiMsg string) *nuoerBusiError {
|
||||
if busiMsg == "" {
|
||||
if desc := GetBusiCodeDesc(busiCode); desc != "" {
|
||||
busiMsg = desc
|
||||
} else {
|
||||
busiMsg = "诺尔智汇业务返回未知错误"
|
||||
}
|
||||
}
|
||||
return &nuoerBusiError{BusiCode: busiCode, BusiMsg: busiMsg}
|
||||
}
|
||||
|
||||
// GetNotFoundErrByBusiCode 将 busiCode 映射为「查询为空」类错误(不扣费场景)
|
||||
func GetNotFoundErrByBusiCode(busiCode int) error {
|
||||
switch busiCode {
|
||||
case BusiCodeNotFound:
|
||||
return ErrNotFound
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// GetErrByBusiCode 将 busiCode 映射为内部哨兵错误,供处理器 errors.Is 判断
|
||||
func GetErrByBusiCode(busiCode int) error {
|
||||
if busiCode == BusiCodeSuccess {
|
||||
return nil
|
||||
}
|
||||
if notFound := GetNotFoundErrByBusiCode(busiCode); notFound != nil {
|
||||
return notFound
|
||||
}
|
||||
return ErrDatasource
|
||||
}
|
||||
|
||||
// GetErrByPlatformCode 将平台 code 映射为内部哨兵错误
|
||||
func GetErrByPlatformCode(code int) error {
|
||||
if code == CodeSuccess {
|
||||
return nil
|
||||
}
|
||||
return ErrDatasource
|
||||
}
|
||||
Reference in New Issue
Block a user