2026-01-30 18:25:30 +08:00
|
|
|
|
package shujubao
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
|
"fmt"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
// ShujubaoError 数据宝服务错误
|
|
|
|
|
|
type ShujubaoError struct {
|
|
|
|
|
|
Code string `json:"code"`
|
|
|
|
|
|
Message string `json:"message"`
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Error 实现 error 接口
|
|
|
|
|
|
func (e *ShujubaoError) Error() string {
|
|
|
|
|
|
return fmt.Sprintf("数据宝错误 [%s]: %s", e.Code, e.Message)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// IsSuccess 检查是否成功
|
|
|
|
|
|
func (e *ShujubaoError) IsSuccess() bool {
|
|
|
|
|
|
return e.Code == "200" || e.Code == "0" || e.Code == "10000"
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// NewShujubaoError 创建新的数据宝错误
|
|
|
|
|
|
func NewShujubaoError(code, message string) *ShujubaoError {
|
|
|
|
|
|
return &ShujubaoError{
|
|
|
|
|
|
Code: code,
|
|
|
|
|
|
Message: message,
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 数据宝全系统错误码与描述映射(Code -> Desc)
|
|
|
|
|
|
var systemErrorCodeDesc = map[string]string{
|
|
|
|
|
|
"10000": "成功",
|
2026-01-31 12:15:42 +08:00
|
|
|
|
"10001": "查空",
|
2026-01-30 18:25:30 +08:00
|
|
|
|
"10002": "查询失败",
|
|
|
|
|
|
"10003": "系统处理异常",
|
|
|
|
|
|
"10004": "系统处理超时",
|
|
|
|
|
|
"10005": "服务异常",
|
|
|
|
|
|
"10006": "查无",
|
2026-01-31 12:15:42 +08:00
|
|
|
|
"10017": "查询失败",
|
|
|
|
|
|
"10018": "参数错误",
|
|
|
|
|
|
"10019": "系统异常",
|
2026-01-30 18:25:30 +08:00
|
|
|
|
"10020": "同一参数请求次数超限",
|
|
|
|
|
|
"99999": "其他错误",
|
|
|
|
|
|
"999": "接口处理异常",
|
|
|
|
|
|
"000": "key参数不能为空",
|
|
|
|
|
|
"001": "找不到这个key",
|
|
|
|
|
|
"002": "调用次数已用完",
|
|
|
|
|
|
"003": "用户该接口状态不可用",
|
|
|
|
|
|
"004": "接口信息不存在",
|
|
|
|
|
|
"005": "你没有认证信息",
|
|
|
|
|
|
"008": "当前接口只允许“企业认证”通过的账户进行调用,请在数据宝官网个人中心进行企业认证后再进行调用,谢谢!",
|
|
|
|
|
|
"009": "触发风控",
|
|
|
|
|
|
"011": "接口缺少参数",
|
|
|
|
|
|
"012": "没有ip访问权限",
|
|
|
|
|
|
"013": "接口模板不存在",
|
|
|
|
|
|
"015": "该接口已下架",
|
|
|
|
|
|
"020": "调用第三方产生异常",
|
|
|
|
|
|
"022": "调用第三方返回的数据格式错误",
|
|
|
|
|
|
"025": "你没有购买此接口",
|
|
|
|
|
|
"026": "用户信息不存在",
|
|
|
|
|
|
"027": "请求第三方地址超时,请稍后再试",
|
|
|
|
|
|
"028": "请求第三方地址被拒绝,请稍后再试",
|
|
|
|
|
|
"034": "签名不合法",
|
|
|
|
|
|
"035": "请求参数加密有误",
|
|
|
|
|
|
"036": "验签失败",
|
|
|
|
|
|
"037": "timestamp不能为空",
|
|
|
|
|
|
"038": "请求繁忙,请稍后联系管理员再试",
|
|
|
|
|
|
"039": "请在个人中心接口设置加密状态",
|
|
|
|
|
|
"040": "timestamp不合法",
|
|
|
|
|
|
"041": "timestamp已过期",
|
|
|
|
|
|
"042": "身份证手机号姓名银行卡等不符合规则",
|
|
|
|
|
|
"043": "该号段不支持验证",
|
|
|
|
|
|
"047": "请在个人中心获取密钥",
|
|
|
|
|
|
"048": "找不到这个secretKey",
|
|
|
|
|
|
"049": "用户还未申购该产品",
|
|
|
|
|
|
"050": "请联系客服开启验签",
|
|
|
|
|
|
"051": "超过当日调用次数",
|
|
|
|
|
|
"052": "机房限制调用,请联系客服切换其他机房",
|
|
|
|
|
|
"053": "系统错误",
|
|
|
|
|
|
"054": "token无效",
|
|
|
|
|
|
"055": "配置信息未完善,请联系数据宝工作人员",
|
|
|
|
|
|
"056": "apiName参数不能为空",
|
|
|
|
|
|
"057": "并发量超过限制,请联系客服",
|
|
|
|
|
|
"058": "撞库风控预警,请联系客服",
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// GetSystemErrorDesc 根据错误码获取系统错误描述(支持带 SYSTEM_ 前缀或纯数字)
|
|
|
|
|
|
func GetSystemErrorDesc(code string) string {
|
|
|
|
|
|
// 去掉 SYSTEM_ 前缀
|
|
|
|
|
|
key := code
|
|
|
|
|
|
if len(code) > 7 && code[:7] == "SYSTEM_" {
|
|
|
|
|
|
key = code[7:]
|
|
|
|
|
|
}
|
|
|
|
|
|
if desc, ok := systemErrorCodeDesc[key]; ok {
|
|
|
|
|
|
return desc
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// NewShujubaoErrorFromCode 根据状态码创建错误
|
|
|
|
|
|
func NewShujubaoErrorFromCode(code, message string) *ShujubaoError {
|
|
|
|
|
|
if message != "" {
|
|
|
|
|
|
return NewShujubaoError(code, message)
|
|
|
|
|
|
}
|
|
|
|
|
|
if desc := GetSystemErrorDesc(code); desc != "" {
|
|
|
|
|
|
return NewShujubaoError(code, desc)
|
|
|
|
|
|
}
|
|
|
|
|
|
return NewShujubaoError(code, "未知错误")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// IsShujubaoError 检查是否是数据宝错误
|
|
|
|
|
|
func IsShujubaoError(err error) bool {
|
|
|
|
|
|
_, ok := err.(*ShujubaoError)
|
|
|
|
|
|
return ok
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// GetShujubaoError 获取数据宝错误
|
|
|
|
|
|
func GetShujubaoError(err error) *ShujubaoError {
|
|
|
|
|
|
if shujubaoErr, ok := err.(*ShujubaoError); ok {
|
|
|
|
|
|
return shujubaoErr
|
|
|
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|