2026-07-22 17:15:33 +08:00
|
|
|
|
package jiyi
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
|
"errors"
|
|
|
|
|
|
"fmt"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
// 平台层 code 返回码
|
|
|
|
|
|
const (
|
|
|
|
|
|
CodeSuccess = 0 // 成功
|
|
|
|
|
|
CodeResponseError = -1 // 异常
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
// 业务层 busiCode 返回码(洞侦等接口通用)
|
|
|
|
|
|
const (
|
|
|
|
|
|
BusiCodeSuccess = 10 // 查询成功
|
|
|
|
|
|
BusiCodeNotFound = 1000 // 未查得
|
2026-07-22 17:40:57 +08:00
|
|
|
|
BusiCodeProductError = 1004 // 产品编号异常
|
2026-07-22 17:15:33 +08:00
|
|
|
|
BusiCodeSignError = 1005 // 签名异常
|
|
|
|
|
|
BusiCodeDataRequestError = 1007 // 数据请求异常
|
2026-07-22 17:40:57 +08:00
|
|
|
|
BusiCodeServiceNotOpen = 1008 // 服务尚未开通或已暂停
|
2026-07-22 17:15:33 +08:00
|
|
|
|
BusiCodeParamError = 1010 // 参数错误
|
|
|
|
|
|
BusiCodeUnknown = -1 // 未知错误
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
|
ErrDatasource = errors.New("数据源异常")
|
|
|
|
|
|
ErrSystem = errors.New("系统异常")
|
|
|
|
|
|
ErrNotFound = errors.New("查询为空")
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
var platformCodeDesc = map[int]string{
|
|
|
|
|
|
CodeSuccess: "成功",
|
|
|
|
|
|
CodeResponseError: "异常",
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var busiCodeDesc = map[int]string{
|
|
|
|
|
|
BusiCodeSuccess: "查询成功",
|
|
|
|
|
|
BusiCodeNotFound: "未查得",
|
2026-07-22 17:40:57 +08:00
|
|
|
|
BusiCodeProductError: "产品编号异常",
|
2026-07-22 17:15:33 +08:00
|
|
|
|
BusiCodeSignError: "签名异常",
|
|
|
|
|
|
BusiCodeDataRequestError: "数据请求异常",
|
2026-07-22 17:40:57 +08:00
|
|
|
|
BusiCodeServiceNotOpen: "服务尚未开通或已暂停使用",
|
2026-07-22 17:15:33 +08:00
|
|
|
|
BusiCodeParamError: "参数错误",
|
|
|
|
|
|
BusiCodeUnknown: "未知错误",
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 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 ""
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type jiyiError struct {
|
|
|
|
|
|
Code int
|
|
|
|
|
|
Message string
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (e *jiyiError) Error() string {
|
|
|
|
|
|
return fmt.Sprintf("集奕返回错误,code: %d,msg: %s", e.Code, e.Message)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// NewJiyiError 创建平台层错误
|
|
|
|
|
|
func NewJiyiError(code int, message string) *jiyiError {
|
|
|
|
|
|
if message == "" {
|
|
|
|
|
|
if desc := GetPlatformCodeDesc(code); desc != "" {
|
|
|
|
|
|
message = desc
|
|
|
|
|
|
} else {
|
|
|
|
|
|
message = "集奕返回未知错误"
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return &jiyiError{Code: code, Message: message}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type jiyiBusiError struct {
|
|
|
|
|
|
BusiCode int
|
|
|
|
|
|
BusiMsg string
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (e *jiyiBusiError) Error() string {
|
|
|
|
|
|
return fmt.Sprintf("集奕业务错误,busiCode: %d,busiMsg: %s", e.BusiCode, e.BusiMsg)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// NewJiyiBusiError 创建业务层错误
|
|
|
|
|
|
func NewJiyiBusiError(busiCode int, busiMsg string) *jiyiBusiError {
|
|
|
|
|
|
if busiMsg == "" {
|
|
|
|
|
|
if desc := GetBusiCodeDesc(busiCode); desc != "" {
|
|
|
|
|
|
busiMsg = desc
|
|
|
|
|
|
} else {
|
|
|
|
|
|
busiMsg = "集奕业务返回未知错误"
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return &jiyiBusiError{BusiCode: busiCode, BusiMsg: busiMsg}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// GetErrByBusiCode 将 busiCode 映射为内部哨兵错误
|
|
|
|
|
|
func GetErrByBusiCode(busiCode int) error {
|
|
|
|
|
|
if busiCode == BusiCodeSuccess {
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|
|
|
|
|
|
if busiCode == BusiCodeNotFound {
|
|
|
|
|
|
return ErrNotFound
|
|
|
|
|
|
}
|
|
|
|
|
|
return ErrDatasource
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// GetErrByPlatformCode 将平台 code 映射为内部哨兵错误
|
|
|
|
|
|
func GetErrByPlatformCode(code int) error {
|
|
|
|
|
|
if code == CodeSuccess {
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|
|
|
|
|
|
return ErrDatasource
|
|
|
|
|
|
}
|