mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-04-30 22:42:29 +08:00
188 lines
6.0 KiB
Go
188 lines
6.0 KiB
Go
package constant
|
||
|
||
import (
|
||
sdkws "Open_IM/pkg/proto/sdk_ws"
|
||
"context"
|
||
"encoding/json"
|
||
"errors"
|
||
|
||
"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, "", ""}
|
||
ErrRpcConn = ErrInfo{GRPCConnIsNil, "grpc conn is nil", ""}
|
||
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", ""}
|
||
|
||
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", ""}
|
||
)
|
||
|
||
func NewErrNetwork(err error) error {
|
||
newErrNetwork := ErrNetwork
|
||
newErrNetwork.DetailErrMsg = err.Error()
|
||
return ErrNetwork
|
||
}
|
||
|
||
func NewErrData(err error) error {
|
||
newErrData := ErrData
|
||
newErrData.DetailErrMsg = err.Error()
|
||
return ErrNetwork
|
||
}
|
||
|
||
func toDetail(err error, info ErrInfo) ErrInfo {
|
||
errInfo := info
|
||
errInfo.DetailErrMsg = err.Error()
|
||
return errInfo
|
||
}
|
||
|
||
func ToAPIErrWithErr(err error) ErrInfo {
|
||
switch {
|
||
case errors.Is(err, gorm.ErrRecordNotFound):
|
||
return toDetail(err, ErrRecordNotFound)
|
||
case errors.Is(err, ErrArgs):
|
||
return toDetail(err, ErrArgs)
|
||
case errors.Is(err, ErrDatabase):
|
||
return ErrDatabase
|
||
}
|
||
|
||
errTarget := errors.New("")
|
||
var mErr *json.MarshalerError
|
||
switch {
|
||
case errors.As(err, &mErr):
|
||
return ErrData
|
||
case errors.As(err, errTarget):
|
||
return ErrDatabase
|
||
}
|
||
return ErrDefaultOther
|
||
}
|
||
|
||
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 //群主不能退群
|
||
)
|
||
|
||
// 用户错误码
|
||
const (
|
||
RegisteredAlreadyError = 94001 //用户已经注册过了
|
||
)
|
||
|
||
// token错误码
|
||
const (
|
||
TokenExpiredError = 95001
|
||
TokenInvalidError = 95002
|
||
TokenMalformedError = 95003
|
||
TokenNotValidYetError = 95004
|
||
TokenUnknownError = 95005
|
||
TokenKickedError = 95006
|
||
TokenDifferentPlatformIDError = 95007
|
||
TokenDifferentUserIDError = 95008
|
||
TokenNotExistError = 95009
|
||
)
|