mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-04-30 22:42:29 +08:00
216 lines
6.9 KiB
Go
216 lines
6.9 KiB
Go
package constant
|
||
|
||
import (
|
||
sdkws "Open_IM/pkg/proto/sdk_ws"
|
||
"context"
|
||
"encoding/json"
|
||
"errors"
|
||
"fmt"
|
||
|
||
"gorm.io/gorm"
|
||
)
|
||
|
||
type ErrInfo struct {
|
||
ErrCode int32
|
||
ErrMsg string
|
||
DetailErrMsg string
|
||
}
|
||
|
||
func (e *ErrInfo) Error() string {
|
||
return e.ErrMsg
|
||
}
|
||
|
||
func (e *ErrInfo) Code() int32 {
|
||
return e.ErrCode
|
||
}
|
||
|
||
var (
|
||
ErrNone = &ErrInfo{0, "", ""}
|
||
ErrArgs = &ErrInfo{ArgsError, "ArgsError", ""}
|
||
ErrDatabase = &ErrInfo{DatabaseError, "DatabaseError", ""}
|
||
ErrInternalServer = &ErrInfo{ServerInternalError, "ServerInternalError", ""}
|
||
ErrNetwork = &ErrInfo{NetworkError, "NetworkError", ""}
|
||
ErrNoPermission = &ErrInfo{NoPermissionError, "NoPermissionError", ""}
|
||
ErrIdentity = &ErrInfo{IdentityError, "IdentityError", ""}
|
||
ErrCallback = &ErrInfo{ErrMsg: "CallbackError"}
|
||
ErrCallbackContinue = &ErrInfo{ErrMsg: "CallbackContinueError"}
|
||
|
||
ErrUserIDNotFound = &ErrInfo{UserIDNotFoundError, "UserIDNotFoundError", ""}
|
||
ErrGroupIDNotFound = &ErrInfo{GroupIDNotFoundError, "GroupIDNotFoundError", ""}
|
||
|
||
ErrRecordNotFound = &ErrInfo{RecordNotFoundError, "RecordNotFoundError", ""}
|
||
|
||
ErrRelationshipAlready = &ErrInfo{RelationshipAlreadyError, "RelationshipAlreadyError", ""}
|
||
ErrNotRelationshipYet = &ErrInfo{NotRelationshipYetError, "NotRelationshipYetError", ""}
|
||
|
||
ErrOnlyOneOwner = &ErrInfo{OnlyOneOwnerError, "OnlyOneOwnerError", ""}
|
||
ErrInGroupAlready = &ErrInfo{InGroupAlreadyError, "InGroupAlreadyError", ""}
|
||
ErrNotInGroupYet = &ErrInfo{NotInGroupYetError, "NotInGroupYetError", ""}
|
||
ErrDismissedAlready = &ErrInfo{DismissedAlreadyError, "DismissedAlreadyError", ""}
|
||
ErrOwnerNotAllowedQuit = &ErrInfo{OwnerNotAllowedQuitError, "OwnerNotAllowedQuitError", ""}
|
||
ErrRegisteredAlready = &ErrInfo{RegisteredAlreadyError, "RegisteredAlreadyError", ""}
|
||
ErrGroupTypeNotSupport = &ErrInfo{GroupTypeNotSupport, "", ""}
|
||
ErrGroupNoOwner = &ErrInfo{GroupNoOwner, "ErrGroupNoOwner", ""}
|
||
|
||
ErrDefaultOther = &ErrInfo{DefaultOtherError, "DefaultOtherError", ""}
|
||
ErrData = &ErrInfo{DataError, "DataError", ""}
|
||
ErrTokenExpired = &ErrInfo{TokenExpiredError, "TokenExpiredError", ""}
|
||
ErrTokenInvalid = &ErrInfo{TokenInvalidError, "TokenInvalidError", ""} //
|
||
ErrTokenMalformed = &ErrInfo{TokenMalformedError, "TokenMalformedError", ""} //格式错误
|
||
ErrTokenNotValidYet = &ErrInfo{TokenNotValidYetError, "TokenNotValidYetError", ""} //还未生效
|
||
ErrTokenUnknown = &ErrInfo{TokenUnknownError, "TokenUnknownError", ""} //未知错误
|
||
ErrTokenKicked = &ErrInfo{TokenKickedError, "TokenKickedError", ""}
|
||
ErrTokenNotExist = &ErrInfo{TokenNotExistError, "TokenNotExistError", ""} //在redis中不存在
|
||
ErrTokenDifferentPlatformID = &ErrInfo{TokenDifferentPlatformIDError, "TokenDifferentPlatformIDError", ""}
|
||
ErrTokenDifferentUserID = &ErrInfo{TokenDifferentUserIDError, "TokenDifferentUserIDError", ""}
|
||
|
||
ErrMessageHasReadDisable = &ErrInfo{MessageHasReadDisable, "MessageHasReadDisable", ""}
|
||
|
||
ErrDB = ErrDatabase
|
||
ErrSendLimit = ErrInternalServer
|
||
)
|
||
|
||
func NewErrNetwork(err error) error {
|
||
return toDetail(err, ErrNetwork)
|
||
}
|
||
|
||
func NewErrData(err error) error {
|
||
return toDetail(err, ErrData)
|
||
}
|
||
|
||
func toDetail(err error, info *ErrInfo) *ErrInfo {
|
||
errInfo := *info
|
||
errInfo.DetailErrMsg = err.Error()
|
||
return &errInfo
|
||
}
|
||
|
||
func ToAPIErrWithErr(err error) *ErrInfo {
|
||
errComm := errors.New("")
|
||
var marshalErr *json.MarshalerError
|
||
errInfo := &ErrInfo{}
|
||
switch {
|
||
case errors.As(err, &errComm):
|
||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||
return toDetail(err, ErrRecordNotFound)
|
||
}
|
||
return toDetail(err, ErrData)
|
||
case errors.As(err, &marshalErr):
|
||
return toDetail(err, ErrData)
|
||
case errors.As(err, &errInfo):
|
||
return toDetail(err, errInfo)
|
||
}
|
||
return toDetail(err, ErrDefaultOther)
|
||
}
|
||
|
||
func SetErrorForResp(err error, commonResp *sdkws.CommonResp) {
|
||
errInfo := ToAPIErrWithErr(err)
|
||
commonResp.ErrCode = errInfo.ErrCode
|
||
commonResp.ErrMsg = errInfo.ErrMsg
|
||
commonResp.DetailErrMsg = err.Error()
|
||
}
|
||
|
||
func CommonResp2Err(resp *sdkws.CommonResp) error {
|
||
if resp.ErrCode != NoError {
|
||
return errors.New(fmt.Sprintf("call rpc error, errCode is %d, errMsg is %s, detailErrMsg is %s", resp.ErrCode, resp.ErrMsg, resp.DetailErrMsg))
|
||
}
|
||
return nil
|
||
}
|
||
|
||
func Error2CommResp(ctx context.Context, info ErrInfo, detailErrMsg string) *sdkws.CommonResp {
|
||
err := &sdkws.CommonResp{
|
||
ErrCode: info.ErrCode,
|
||
ErrMsg: info.ErrMsg,
|
||
}
|
||
if detailErrMsg != "" {
|
||
err.DetailErrMsg = detailErrMsg
|
||
}
|
||
return err
|
||
}
|
||
|
||
const (
|
||
FormattingError = 10001
|
||
HasRegistered = 10002
|
||
NotRegistered = 10003
|
||
PasswordErr = 10004
|
||
GetIMTokenErr = 10005
|
||
RepeatSendCode = 10006
|
||
MailSendCodeErr = 10007
|
||
SmsSendCodeErr = 10008
|
||
CodeInvalidOrExpired = 10009
|
||
RegisterFailed = 10010
|
||
ResetPasswordFailed = 10011
|
||
RegisterLimit = 10012
|
||
LoginLimit = 10013
|
||
InvitationError = 10014
|
||
)
|
||
|
||
// 通用错误码
|
||
const (
|
||
NoError = 0 //无错误
|
||
ArgsError = 90001 //输入参数错误
|
||
DatabaseError = 90002 //redis/mysql等db错误
|
||
ServerInternalError = 90003 //服务器内部错误
|
||
NetworkError = 90004 //网络错误
|
||
NoPermissionError = 90005 //权限不足
|
||
GRPCConnIsNil = 90006 //grpc连接空
|
||
|
||
DefaultOtherError = 90006 //其他错误
|
||
DataError = 90007 //数据错误
|
||
|
||
IdentityError = 90008 // 身份错误 非管理员token,且token中userID与请求userID不一致
|
||
)
|
||
|
||
// 账号错误码
|
||
const (
|
||
UserIDNotFoundError = 91001 //UserID不存在 或未注册
|
||
GroupIDNotFoundError = 91002 //GroupID不存在
|
||
RecordNotFoundError = 91002 //记录不存在
|
||
)
|
||
|
||
// 关系链错误码
|
||
const (
|
||
RelationshipAlreadyError = 92001 //已经是好友关系(或者黑名单)
|
||
NotRelationshipYetError = 92002 //不是好友关系(或者黑名单)
|
||
)
|
||
|
||
// 群组错误码
|
||
const (
|
||
OnlyOneOwnerError = 93001 //只能有一个群主
|
||
InGroupAlreadyError = 93003 //已在群组中
|
||
NotInGroupYetError = 93004 //不在群组中
|
||
DismissedAlreadyError = 93004 //群组已经解散
|
||
OwnerNotAllowedQuitError = 93004 //群主不能退群
|
||
GroupTypeNotSupport = 93005
|
||
GroupNoOwner = 93006
|
||
)
|
||
|
||
// 用户错误码
|
||
const (
|
||
RegisteredAlreadyError = 94001 //用户已经注册过了
|
||
)
|
||
|
||
// token错误码
|
||
const (
|
||
TokenExpiredError = 95001
|
||
TokenInvalidError = 95002
|
||
TokenMalformedError = 95003
|
||
TokenNotValidYetError = 95004
|
||
TokenUnknownError = 95005
|
||
TokenKickedError = 95006
|
||
TokenDifferentPlatformIDError = 95007
|
||
TokenDifferentUserIDError = 95008
|
||
TokenNotExistError = 95009
|
||
)
|
||
|
||
// 消息错误码
|
||
const (
|
||
MessageHasReadDisable = 96001
|
||
)
|
||
|
||
// temp
|
||
|
||
var (
|
||
ErrServer = ErrInfo{500, "server error", ""}
|
||
ErrTencentCredential = ErrInfo{400, "ErrTencentCredential", ""}
|
||
)
|