mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-11-06 05:12:10 +08:00
fix: err handle.
This commit is contained in:
parent
0bd7269f1e
commit
3165317634
@ -16,6 +16,7 @@ package msg
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/openimsdk/tools/utils/goassist"
|
||||||
|
|
||||||
cbapi "github.com/openimsdk/open-im-server/v3/pkg/callbackstruct"
|
cbapi "github.com/openimsdk/open-im-server/v3/pkg/callbackstruct"
|
||||||
"github.com/openimsdk/protocol/constant"
|
"github.com/openimsdk/protocol/constant"
|
||||||
@ -23,7 +24,6 @@ import (
|
|||||||
"github.com/openimsdk/protocol/sdkws"
|
"github.com/openimsdk/protocol/sdkws"
|
||||||
"github.com/openimsdk/tools/errs"
|
"github.com/openimsdk/tools/errs"
|
||||||
"github.com/openimsdk/tools/log"
|
"github.com/openimsdk/tools/log"
|
||||||
utils2 "github.com/openimsdk/tools/utils"
|
|
||||||
"github.com/redis/go-redis/v9"
|
"github.com/redis/go-redis/v9"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -59,13 +59,13 @@ func (m *msgServer) GetConversationsHasReadAndMaxSeq(ctx context.Context, req *m
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
resp = &msg.GetConversationsHasReadAndMaxSeqResp{Seqs: make(map[string]*msg.Seqs)}
|
resp = &msg.GetConversationsHasReadAndMaxSeqResp{Seqs: make(map[string]*msg.Seqs)}
|
||||||
for conversarionID, maxSeq := range maxSeqs {
|
for conversationID, maxSeq := range maxSeqs {
|
||||||
resp.Seqs[conversarionID] = &msg.Seqs{
|
resp.Seqs[conversationID] = &msg.Seqs{
|
||||||
HasReadSeq: hasReadSeqs[conversarionID],
|
HasReadSeq: hasReadSeqs[conversationID],
|
||||||
MaxSeq: maxSeq,
|
MaxSeq: maxSeq,
|
||||||
}
|
}
|
||||||
if v, ok := conversationMaxSeqMap[conversarionID]; ok {
|
if v, ok := conversationMaxSeqMap[conversationID]; ok {
|
||||||
resp.Seqs[conversarionID].MaxSeq = v
|
resp.Seqs[conversationID].MaxSeq = v
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return resp, nil
|
return resp, nil
|
||||||
@ -157,7 +157,7 @@ func (m *msgServer) MarkConversationAsRead(ctx context.Context, req *msg.MarkCon
|
|||||||
}
|
}
|
||||||
// avoid client missed call MarkConversationMessageAsRead by order
|
// avoid client missed call MarkConversationMessageAsRead by order
|
||||||
for _, val := range req.Seqs {
|
for _, val := range req.Seqs {
|
||||||
if !utils2.Contain(val, seqs...) {
|
if !goassist.Contain(val, seqs...) {
|
||||||
seqs = append(seqs, val)
|
seqs = append(seqs, val)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
88
pkg/common/servererrs/code.go
Normal file
88
pkg/common/servererrs/code.go
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
// Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package servererrs
|
||||||
|
|
||||||
|
// UnknownCode represents the error code when code is not parsed or parsed code equals 0.
|
||||||
|
const UnknownCode = 1000
|
||||||
|
|
||||||
|
// Error codes for various error scenarios.
|
||||||
|
const (
|
||||||
|
FormattingError = 10001 // Error in formatting
|
||||||
|
HasRegistered = 10002 // User has already registered
|
||||||
|
NotRegistered = 10003 // User is not registered
|
||||||
|
PasswordErr = 10004 // Password error
|
||||||
|
GetIMTokenErr = 10005 // Error in getting IM token
|
||||||
|
RepeatSendCode = 10006 // Repeat sending code
|
||||||
|
MailSendCodeErr = 10007 // Error in sending code via email
|
||||||
|
SmsSendCodeErr = 10008 // Error in sending code via SMS
|
||||||
|
CodeInvalidOrExpired = 10009 // Code is invalid or expired
|
||||||
|
RegisterFailed = 10010 // Registration failed
|
||||||
|
ResetPasswordFailed = 10011 // Resetting password failed
|
||||||
|
RegisterLimit = 10012 // Registration limit exceeded
|
||||||
|
LoginLimit = 10013 // Login limit exceeded
|
||||||
|
InvitationError = 10014 // Error in invitation
|
||||||
|
)
|
||||||
|
|
||||||
|
// General error codes.
|
||||||
|
const (
|
||||||
|
NoError = 0 // No error
|
||||||
|
DatabaseError = 90002 // Database error (redis/mysql, etc.)
|
||||||
|
NetworkError = 90004 // Network error
|
||||||
|
DataError = 90007 // Data error
|
||||||
|
|
||||||
|
CallbackError = 80000
|
||||||
|
|
||||||
|
// Account error codes.
|
||||||
|
UserIDNotFoundError = 1101 // UserID does not exist or is not registered
|
||||||
|
RegisteredAlreadyError = 1102 // User is already registered
|
||||||
|
|
||||||
|
// Group error codes.
|
||||||
|
GroupIDNotFoundError = 1201 // GroupID does not exist
|
||||||
|
GroupIDExisted = 1202 // GroupID already exists
|
||||||
|
NotInGroupYetError = 1203 // Not in the group yet
|
||||||
|
DismissedAlreadyError = 1204 // Group has already been dismissed
|
||||||
|
GroupTypeNotSupport = 1205
|
||||||
|
GroupRequestHandled = 1206
|
||||||
|
|
||||||
|
// Relationship error codes.
|
||||||
|
CanNotAddYourselfError = 1301 // Cannot add yourself as a friend
|
||||||
|
BlockedByPeer = 1302 // Blocked by the peer
|
||||||
|
NotPeersFriend = 1303 // Not the peer's friend
|
||||||
|
RelationshipAlreadyError = 1304 // Already in a friend relationship
|
||||||
|
|
||||||
|
// Message error codes.
|
||||||
|
MessageHasReadDisable = 1401
|
||||||
|
MutedInGroup = 1402 // Member muted in the group
|
||||||
|
MutedGroup = 1403 // Group is muted
|
||||||
|
MsgAlreadyRevoke = 1404 // Message already revoked
|
||||||
|
|
||||||
|
// Token error codes.
|
||||||
|
TokenExpiredError = 1501
|
||||||
|
TokenInvalidError = 1502
|
||||||
|
TokenMalformedError = 1503
|
||||||
|
TokenNotValidYetError = 1504
|
||||||
|
TokenUnknownError = 1505
|
||||||
|
TokenKickedError = 1506
|
||||||
|
TokenNotExistError = 1507
|
||||||
|
|
||||||
|
// Long connection gateway error codes.
|
||||||
|
ConnOverMaxNumLimit = 1601
|
||||||
|
ConnArgsErr = 1602
|
||||||
|
PushMsgErr = 1603
|
||||||
|
IOSBackgroundPushErr = 1604
|
||||||
|
|
||||||
|
// S3 error codes.
|
||||||
|
FileUploadedExpiredError = 1701 // Upload expired
|
||||||
|
)
|
||||||
62
pkg/common/servererrs/predefine.go
Normal file
62
pkg/common/servererrs/predefine.go
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
// Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package servererrs
|
||||||
|
|
||||||
|
import "github.com/openimsdk/tools/errs"
|
||||||
|
|
||||||
|
var (
|
||||||
|
ErrDatabase = errs.NewCodeError(DatabaseError, "DatabaseError")
|
||||||
|
ErrNetwork = errs.NewCodeError(NetworkError, "NetworkError")
|
||||||
|
ErrCallback = errs.NewCodeError(CallbackError, "CallbackError")
|
||||||
|
ErrCallbackContinue = errs.NewCodeError(CallbackError, "ErrCallbackContinue")
|
||||||
|
|
||||||
|
ErrUserIDNotFound = errs.NewCodeError(UserIDNotFoundError, "UserIDNotFoundError")
|
||||||
|
ErrGroupIDNotFound = errs.NewCodeError(GroupIDNotFoundError, "GroupIDNotFoundError")
|
||||||
|
ErrGroupIDExisted = errs.NewCodeError(GroupIDExisted, "GroupIDExisted")
|
||||||
|
|
||||||
|
ErrNotInGroupYet = errs.NewCodeError(NotInGroupYetError, "NotInGroupYetError")
|
||||||
|
ErrDismissedAlready = errs.NewCodeError(DismissedAlreadyError, "DismissedAlreadyError")
|
||||||
|
ErrRegisteredAlready = errs.NewCodeError(RegisteredAlreadyError, "RegisteredAlreadyError")
|
||||||
|
ErrGroupTypeNotSupport = errs.NewCodeError(GroupTypeNotSupport, "")
|
||||||
|
ErrGroupRequestHandled = errs.NewCodeError(GroupRequestHandled, "GroupRequestHandled")
|
||||||
|
|
||||||
|
ErrData = errs.NewCodeError(DataError, "DataError")
|
||||||
|
ErrTokenExpired = errs.NewCodeError(TokenExpiredError, "TokenExpiredError")
|
||||||
|
ErrTokenInvalid = errs.NewCodeError(TokenInvalidError, "TokenInvalidError") //
|
||||||
|
ErrTokenMalformed = errs.NewCodeError(TokenMalformedError, "TokenMalformedError") //
|
||||||
|
ErrTokenNotValidYet = errs.NewCodeError(TokenNotValidYetError, "TokenNotValidYetError") //
|
||||||
|
ErrTokenUnknown = errs.NewCodeError(TokenUnknownError, "TokenUnknownError") //
|
||||||
|
ErrTokenKicked = errs.NewCodeError(TokenKickedError, "TokenKickedError")
|
||||||
|
ErrTokenNotExist = errs.NewCodeError(TokenNotExistError, "TokenNotExistError") //
|
||||||
|
|
||||||
|
ErrMessageHasReadDisable = errs.NewCodeError(MessageHasReadDisable, "MessageHasReadDisable")
|
||||||
|
|
||||||
|
ErrCanNotAddYourself = errs.NewCodeError(CanNotAddYourselfError, "CanNotAddYourselfError")
|
||||||
|
ErrBlockedByPeer = errs.NewCodeError(BlockedByPeer, "BlockedByPeer")
|
||||||
|
ErrNotPeersFriend = errs.NewCodeError(NotPeersFriend, "NotPeersFriend")
|
||||||
|
ErrRelationshipAlready = errs.NewCodeError(RelationshipAlreadyError, "RelationshipAlreadyError")
|
||||||
|
|
||||||
|
ErrMutedInGroup = errs.NewCodeError(MutedInGroup, "MutedInGroup")
|
||||||
|
ErrMutedGroup = errs.NewCodeError(MutedGroup, "MutedGroup")
|
||||||
|
ErrMsgAlreadyRevoke = errs.NewCodeError(MsgAlreadyRevoke, "MsgAlreadyRevoke")
|
||||||
|
|
||||||
|
ErrConnOverMaxNumLimit = errs.NewCodeError(ConnOverMaxNumLimit, "ConnOverMaxNumLimit")
|
||||||
|
|
||||||
|
ErrConnArgsErr = errs.NewCodeError(ConnArgsErr, "args err, need token, sendID, platformID")
|
||||||
|
ErrPushMsgErr = errs.NewCodeError(PushMsgErr, "push msg err")
|
||||||
|
ErrIOSBackgroundPushErr = errs.NewCodeError(IOSBackgroundPushErr, "ios background push err")
|
||||||
|
|
||||||
|
ErrFileUploadedExpired = errs.NewCodeError(FileUploadedExpiredError, "FileUploadedExpiredError")
|
||||||
|
)
|
||||||
58
pkg/common/servererrs/relation.go
Normal file
58
pkg/common/servererrs/relation.go
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
// Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package servererrs
|
||||||
|
|
||||||
|
import "github.com/openimsdk/tools/errs"
|
||||||
|
|
||||||
|
var Relation = &relation{m: make(map[int]map[int]struct{})}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
Relation.Add(errs.RecordNotFoundError, UserIDNotFoundError)
|
||||||
|
Relation.Add(errs.RecordNotFoundError, GroupIDNotFoundError)
|
||||||
|
Relation.Add(errs.DuplicateKeyError, GroupIDExisted)
|
||||||
|
}
|
||||||
|
|
||||||
|
type relation struct {
|
||||||
|
m map[int]map[int]struct{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *relation) Add(codes ...int) {
|
||||||
|
if len(codes) < 2 {
|
||||||
|
panic("codes length must be greater than 2")
|
||||||
|
}
|
||||||
|
for i := 1; i < len(codes); i++ {
|
||||||
|
parent := codes[i-1]
|
||||||
|
s, ok := r.m[parent]
|
||||||
|
if !ok {
|
||||||
|
s = make(map[int]struct{})
|
||||||
|
r.m[parent] = s
|
||||||
|
}
|
||||||
|
for _, code := range codes[i:] {
|
||||||
|
s[code] = struct{}{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *relation) Is(parent, child int) bool {
|
||||||
|
if parent == child {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
s, ok := r.m[parent]
|
||||||
|
if !ok {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
_, ok = s[child]
|
||||||
|
return ok
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user