mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-11-05 21:02:11 +08:00
feat: add openim env
This commit is contained in:
parent
f499cecc3c
commit
817153be37
@ -169,12 +169,12 @@ linters-settings:
|
|||||||
- '*.Embedded'
|
- '*.Embedded'
|
||||||
- '*.External'
|
- '*.External'
|
||||||
|
|
||||||
# forbidigo:
|
forbidigo:
|
||||||
# # Forbid the following identifiers (identifiers are written using regexp):
|
# # Forbid the following identifiers (identifiers are written using regexp):
|
||||||
# forbid:
|
forbid:
|
||||||
# - ^print.*$
|
# - ^print.*$
|
||||||
# - 'fmt\.Print.*'
|
- 'fmt\.Print.*'
|
||||||
# - fmt.Println.* # too much log noise
|
- fmt.Println.* # too much log noise
|
||||||
# - ginkgo\\.F.* # these are used just for local development
|
# - ginkgo\\.F.* # these are used just for local development
|
||||||
# # Exclude godoc examples from forbidigo checks. Default is true.
|
# # Exclude godoc examples from forbidigo checks. Default is true.
|
||||||
# exclude_godoc_examples: false
|
# exclude_godoc_examples: false
|
||||||
@ -454,7 +454,6 @@ linters-settings:
|
|||||||
# # specify an error message to output when a blacklisted package is used
|
# # specify an error message to output when a blacklisted package is used
|
||||||
# - github.com/Sirupsen/logrus: "logging is allowed only by logutils.Log"
|
# - github.com/Sirupsen/logrus: "logging is allowed only by logutils.Log"
|
||||||
|
|
||||||
|
|
||||||
importas:
|
importas:
|
||||||
# if set to `true`, force to use alias.
|
# if set to `true`, force to use alias.
|
||||||
no-unaliased: true
|
no-unaliased: true
|
||||||
@ -672,6 +671,7 @@ linters-settings:
|
|||||||
- errors.New(
|
- errors.New(
|
||||||
- errors.Unwrap(
|
- errors.Unwrap(
|
||||||
- .Wrap(
|
- .Wrap(
|
||||||
|
- .WrapMsg(
|
||||||
- .Wrapf(
|
- .Wrapf(
|
||||||
- .WithMessage(
|
- .WithMessage(
|
||||||
- .WithMessagef(
|
- .WithMessagef(
|
||||||
@ -679,6 +679,7 @@ linters-settings:
|
|||||||
ignorePackageGlobs:
|
ignorePackageGlobs:
|
||||||
- encoding/*
|
- encoding/*
|
||||||
- github.com/pkg/*
|
- github.com/pkg/*
|
||||||
|
- github.com/openimsdk/*
|
||||||
|
|
||||||
wsl:
|
wsl:
|
||||||
# If true append is only allowed to be cuddled if appending value is
|
# If true append is only allowed to be cuddled if appending value is
|
||||||
@ -705,7 +706,6 @@ linters-settings:
|
|||||||
# Allow only slices initialized with a length of zero. Default is false.
|
# Allow only slices initialized with a length of zero. Default is false.
|
||||||
always: false
|
always: false
|
||||||
|
|
||||||
|
|
||||||
# The custom section can be used to define linter plugins to be loaded at runtime. See README doc
|
# The custom section can be used to define linter plugins to be loaded at runtime. See README doc
|
||||||
# for more info.
|
# for more info.
|
||||||
#custom:
|
#custom:
|
||||||
@ -731,6 +731,7 @@ linters:
|
|||||||
- errcheck
|
- errcheck
|
||||||
- decorder
|
- decorder
|
||||||
- ineffassign
|
- ineffassign
|
||||||
|
- forbidigo
|
||||||
- revive
|
- revive
|
||||||
- reassign
|
- reassign
|
||||||
- tparallel
|
- tparallel
|
||||||
|
|||||||
@ -86,6 +86,7 @@ func Start(config *config.GlobalConfig, client registry.SvcDiscoveryRegistry, se
|
|||||||
&msgRpcClient,
|
&msgRpcClient,
|
||||||
notification.WithRpcFunc(userRpcClient.GetUsersInfo),
|
notification.WithRpcFunc(userRpcClient.GetUsersInfo),
|
||||||
)
|
)
|
||||||
|
|
||||||
// Register Friend server with refactored MongoDB and Redis integrations
|
// Register Friend server with refactored MongoDB and Redis integrations
|
||||||
pbfriend.RegisterFriendServer(server, &friendServer{
|
pbfriend.RegisterFriendServer(server, &friendServer{
|
||||||
friendDatabase: controller.NewFriendDatabase(
|
friendDatabase: controller.NewFriendDatabase(
|
||||||
@ -128,7 +129,7 @@ func (s *friendServer) ApplyToAddFriend(ctx context.Context, req *pbfriend.Apply
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if in1 && in2 {
|
if in1 && in2 {
|
||||||
return nil, errs.ErrRelationshipAlready.WrapMsg("has f")
|
return nil, errs.ErrRelationshipAlready.WrapMsg("already friends has f")
|
||||||
}
|
}
|
||||||
if err = s.friendDatabase.AddFriendRequest(ctx, req.FromUserID, req.ToUserID, req.ReqMsg, req.Ex); err != nil {
|
if err = s.friendDatabase.AddFriendRequest(ctx, req.FromUserID, req.ToUserID, req.ReqMsg, req.Ex); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
@ -298,6 +298,7 @@ func CallbackAfterTransferGroupOwner(ctx context.Context, cfg *GroupEventCallbac
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func CallbackBeforeInviteUserToGroup(ctx context.Context, cfg *GroupEventCallbackConfig, req *group.InviteUserToGroupReq) (err error) {
|
func CallbackBeforeInviteUserToGroup(ctx context.Context, cfg *GroupEventCallbackConfig, req *group.InviteUserToGroupReq) (err error) {
|
||||||
if !cfg.BeforeCreateGroup.Enable {
|
if !cfg.BeforeCreateGroup.Enable {
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@ -70,18 +70,22 @@ func Start(config *config.GlobalConfig, client discoveryregistry.SvcDiscoveryReg
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
groupDB, err := mgo.NewGroupMongo(mongo.GetDatabase(config.Mongo.Database))
|
groupDB, err := mgo.NewGroupMongo(mongo.GetDatabase(config.Mongo.Database))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
groupMemberDB, err := mgo.NewGroupMember(mongo.GetDatabase(config.Mongo.Database))
|
groupMemberDB, err := mgo.NewGroupMember(mongo.GetDatabase(config.Mongo.Database))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
groupRequestDB, err := mgo.NewGroupRequestMgo(mongo.GetDatabase(config.Mongo.Database))
|
groupRequestDB, err := mgo.NewGroupRequestMgo(mongo.GetDatabase(config.Mongo.Database))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
userRpcClient := rpcclient.NewUserRpcClient(client, config.RpcRegisterName.OpenImUserName, &config.Manager, &config.IMAdmin)
|
userRpcClient := rpcclient.NewUserRpcClient(client, config.RpcRegisterName.OpenImUserName, &config.Manager, &config.IMAdmin)
|
||||||
msgRpcClient := rpcclient.NewMessageRpcClient(client, config.RpcRegisterName.OpenImMsgName)
|
msgRpcClient := rpcclient.NewMessageRpcClient(client, config.RpcRegisterName.OpenImMsgName)
|
||||||
conversationRpcClient := rpcclient.NewConversationRpcClient(client, config.RpcRegisterName.OpenImConversationName)
|
conversationRpcClient := rpcclient.NewConversationRpcClient(client, config.RpcRegisterName.OpenImConversationName)
|
||||||
@ -206,13 +210,16 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbgroup.CreateGroupR
|
|||||||
if !utils.Contain(opUserID, userIDs...) {
|
if !utils.Contain(opUserID, userIDs...) {
|
||||||
userIDs = append(userIDs, opUserID)
|
userIDs = append(userIDs, opUserID)
|
||||||
}
|
}
|
||||||
|
|
||||||
if utils.Duplicate(userIDs) {
|
if utils.Duplicate(userIDs) {
|
||||||
return nil, errs.ErrArgs.WrapMsg("group member repeated")
|
return nil, errs.ErrArgs.WrapMsg("group member repeated")
|
||||||
}
|
}
|
||||||
|
|
||||||
userMap, err := s.User.GetUsersInfoMap(ctx, userIDs)
|
userMap, err := s.User.GetUsersInfoMap(ctx, userIDs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(userMap) != len(userIDs) {
|
if len(userMap) != len(userIDs) {
|
||||||
return nil, errs.ErrUserIDNotFound.WrapMsg("user not found")
|
return nil, errs.ErrUserIDNotFound.WrapMsg("user not found")
|
||||||
}
|
}
|
||||||
@ -397,9 +404,11 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbgroup.Invite
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(userMap) != len(req.InvitedUserIDs) {
|
if len(userMap) != len(req.InvitedUserIDs) {
|
||||||
return nil, errs.ErrRecordNotFound.WrapMsg("user not found")
|
return nil, errs.ErrRecordNotFound.WrapMsg("user not found")
|
||||||
}
|
}
|
||||||
|
|
||||||
var groupMember *relationtb.GroupMemberModel
|
var groupMember *relationtb.GroupMemberModel
|
||||||
var opUserID string
|
var opUserID string
|
||||||
if !authverify.IsAppManagerUid(ctx, &s.config.Manager, &s.config.IMAdmin) {
|
if !authverify.IsAppManagerUid(ctx, &s.config.Manager, &s.config.IMAdmin) {
|
||||||
|
|||||||
@ -23,9 +23,9 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func (s *groupServer) GetJoinedSuperGroupList(context.Context, *pbgroup.GetJoinedSuperGroupListReq) (*pbgroup.GetJoinedSuperGroupListResp, error) {
|
func (s *groupServer) GetJoinedSuperGroupList(context.Context, *pbgroup.GetJoinedSuperGroupListReq) (*pbgroup.GetJoinedSuperGroupListResp, error) {
|
||||||
return nil, errs.Wrap(errors.New("GetJoinedSuperGroupList is deprecated"), "This feature is deprecated and no longer supported.")
|
return nil, errs.WrapMsg(errors.New("GetJoinedSuperGroupList is deprecated"), "This feature is deprecated and no longer supported.")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *groupServer) GetSuperGroupsInfo(context.Context, *pbgroup.GetSuperGroupsInfoReq) (resp *pbgroup.GetSuperGroupsInfoResp, err error) {
|
func (s *groupServer) GetSuperGroupsInfo(context.Context, *pbgroup.GetSuperGroupsInfoReq) (resp *pbgroup.GetSuperGroupsInfoResp, err error) {
|
||||||
return nil, errs.Wrap(errors.New("GetSuperGroupsInfo is deprecated"), "This feature is deprecated and no longer supported.")
|
return nil, errs.WrapMsg(errors.New("GetSuperGroupsInfo is deprecated"), "This feature is deprecated and no longer supported.")
|
||||||
}
|
}
|
||||||
|
|||||||
@ -114,6 +114,7 @@ func (m *msgServer) MarkMsgsAsRead(ctx context.Context, req *msg.MarkMsgsAsReadR
|
|||||||
if err != nil && errs.Unwrap(err) != redis.Nil {
|
if err != nil && errs.Unwrap(err) != redis.Nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if hasReadSeq > currentHasReadSeq {
|
if hasReadSeq > currentHasReadSeq {
|
||||||
err = m.MsgDatabase.SetHasReadSeq(ctx, req.UserID, req.ConversationID, hasReadSeq)
|
err = m.MsgDatabase.SetHasReadSeq(ctx, req.UserID, req.ConversationID, hasReadSeq)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@ -42,11 +42,8 @@ func (m *msgServer) validateDeleteSyncOpt(opt *msg.DeleteSyncOpt) (isSyncSelf, i
|
|||||||
return opt.IsSyncSelf, opt.IsSyncOther
|
return opt.IsSyncSelf, opt.IsSyncOther
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *msgServer) ClearConversationsMsg(
|
func (m *msgServer) ClearConversationsMsg(ctx context.Context, req *msg.ClearConversationsMsgReq) (*msg.ClearConversationsMsgResp, error) {
|
||||||
ctx context.Context,
|
if err := authverify.CheckAccessV3(ctx, req.UserID, &m.config.Manager, &m.config.IMAdmin); err != nil {
|
||||||
req *msg.ClearConversationsMsgReq,
|
|
||||||
) (*msg.ClearConversationsMsgResp, error) {
|
|
||||||
if err := authverify.CheckAccessV3(ctx, req.UserID, m.config); err != nil {
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if err := m.clearConversation(ctx, req.ConversationIDs, req.UserID, req.DeleteSyncOpt); err != nil {
|
if err := m.clearConversation(ctx, req.ConversationIDs, req.UserID, req.DeleteSyncOpt); err != nil {
|
||||||
@ -55,11 +52,8 @@ func (m *msgServer) ClearConversationsMsg(
|
|||||||
return &msg.ClearConversationsMsgResp{}, nil
|
return &msg.ClearConversationsMsgResp{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *msgServer) UserClearAllMsg(
|
func (m *msgServer) UserClearAllMsg(ctx context.Context, req *msg.UserClearAllMsgReq) (*msg.UserClearAllMsgResp, error) {
|
||||||
ctx context.Context,
|
if err := authverify.CheckAccessV3(ctx, req.UserID, &m.config.Manager, &m.config.IMAdmin); err != nil {
|
||||||
req *msg.UserClearAllMsgReq,
|
|
||||||
) (*msg.UserClearAllMsgResp, error) {
|
|
||||||
if err := authverify.CheckAccessV3(ctx, req.UserID, m.config); err != nil {
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
conversationIDs, err := m.ConversationLocalCache.GetConversationIDs(ctx, req.UserID)
|
conversationIDs, err := m.ConversationLocalCache.GetConversationIDs(ctx, req.UserID)
|
||||||
@ -74,7 +68,7 @@ func (m *msgServer) UserClearAllMsg(
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *msgServer) DeleteMsgs(ctx context.Context, req *msg.DeleteMsgsReq) (*msg.DeleteMsgsResp, error) {
|
func (m *msgServer) DeleteMsgs(ctx context.Context, req *msg.DeleteMsgsReq) (*msg.DeleteMsgsResp, error) {
|
||||||
if err := authverify.CheckAccessV3(ctx, req.UserID, m.config); err != nil {
|
if err := authverify.CheckAccessV3(ctx, req.UserID, &m.config.Manager, &m.config.IMAdmin); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
isSyncSelf, isSyncOther := m.validateDeleteSyncOpt(req.DeleteSyncOpt)
|
isSyncSelf, isSyncOther := m.validateDeleteSyncOpt(req.DeleteSyncOpt)
|
||||||
@ -107,10 +101,7 @@ func (m *msgServer) DeleteMsgs(ctx context.Context, req *msg.DeleteMsgsReq) (*ms
|
|||||||
return &msg.DeleteMsgsResp{}, nil
|
return &msg.DeleteMsgsResp{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *msgServer) DeleteMsgPhysicalBySeq(
|
func (m *msgServer) DeleteMsgPhysicalBySeq(ctx context.Context, req *msg.DeleteMsgPhysicalBySeqReq) (*msg.DeleteMsgPhysicalBySeqResp, error) {
|
||||||
ctx context.Context,
|
|
||||||
req *msg.DeleteMsgPhysicalBySeqReq,
|
|
||||||
) (*msg.DeleteMsgPhysicalBySeqResp, error) {
|
|
||||||
err := m.MsgDatabase.DeleteMsgsPhysicalBySeqs(ctx, req.ConversationID, req.Seqs)
|
err := m.MsgDatabase.DeleteMsgsPhysicalBySeqs(ctx, req.ConversationID, req.Seqs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -118,11 +109,8 @@ func (m *msgServer) DeleteMsgPhysicalBySeq(
|
|||||||
return &msg.DeleteMsgPhysicalBySeqResp{}, nil
|
return &msg.DeleteMsgPhysicalBySeqResp{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *msgServer) DeleteMsgPhysical(
|
func (m *msgServer) DeleteMsgPhysical(ctx context.Context, req *msg.DeleteMsgPhysicalReq) (*msg.DeleteMsgPhysicalResp, error) {
|
||||||
ctx context.Context,
|
if err := authverify.CheckAdmin(ctx, &m.config.Manager, &m.config.IMAdmin); err != nil {
|
||||||
req *msg.DeleteMsgPhysicalReq,
|
|
||||||
) (*msg.DeleteMsgPhysicalResp, error) {
|
|
||||||
if err := authverify.CheckAdmin(ctx, m.config); err != nil {
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
remainTime := utils.GetCurrentTimestampBySecond() - req.Timestamp
|
remainTime := utils.GetCurrentTimestampBySecond() - req.Timestamp
|
||||||
|
|||||||
@ -42,7 +42,7 @@ func (m *msgServer) RevokeMsg(ctx context.Context, req *msg.RevokeMsgReq) (*msg.
|
|||||||
if req.Seq < 0 {
|
if req.Seq < 0 {
|
||||||
return nil, errs.ErrArgs.WrapMsg("seq is invalid")
|
return nil, errs.ErrArgs.WrapMsg("seq is invalid")
|
||||||
}
|
}
|
||||||
if err := authverify.CheckAccessV3(ctx, req.UserID, m.config); err != nil {
|
if err := authverify.CheckAccessV3(ctx, req.UserID, &m.config.Manager, &m.config.IMAdmin); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
user, err := m.UserLocalCache.GetUserInfo(ctx, req.UserID)
|
user, err := m.UserLocalCache.GetUserInfo(ctx, req.UserID)
|
||||||
@ -63,10 +63,10 @@ func (m *msgServer) RevokeMsg(ctx context.Context, req *msg.RevokeMsgReq) (*msg.
|
|||||||
data, _ := json.Marshal(msgs[0])
|
data, _ := json.Marshal(msgs[0])
|
||||||
log.ZInfo(ctx, "GetMsgBySeqs", "conversationID", req.ConversationID, "seq", req.Seq, "msg", string(data))
|
log.ZInfo(ctx, "GetMsgBySeqs", "conversationID", req.ConversationID, "seq", req.Seq, "msg", string(data))
|
||||||
var role int32
|
var role int32
|
||||||
if !authverify.IsAppManagerUid(ctx, m.config) {
|
if !authverify.IsAppManagerUid(ctx, &m.config.Manager, &m.config.IMAdmin) {
|
||||||
switch msgs[0].SessionType {
|
switch msgs[0].SessionType {
|
||||||
case constant.SingleChatType:
|
case constant.SingleChatType:
|
||||||
if err := authverify.CheckAccessV3(ctx, msgs[0].SendID, m.config); err != nil {
|
if err := authverify.CheckAccessV3(ctx, msgs[0].SendID, &m.config.Manager, &m.config.IMAdmin); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
role = user.AppMangerLevel
|
role = user.AppMangerLevel
|
||||||
|
|||||||
@ -49,15 +49,11 @@ func (m *msgServer) SendMsg(ctx context.Context, req *pbmsg.SendMsgReq) (resp *p
|
|||||||
default:
|
default:
|
||||||
return nil, errs.ErrArgs.WrapMsg("unknown sessionType")
|
return nil, errs.ErrArgs.WrapMsg("unknown sessionType")
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
return nil, errs.ErrArgs.WrapMsg("msgData is nil")
|
|
||||||
}
|
}
|
||||||
|
return nil, errs.ErrArgs.WrapMsg("msgData is nil")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *msgServer) sendMsgSuperGroupChat(
|
func (m *msgServer) sendMsgSuperGroupChat(ctx context.Context, req *pbmsg.SendMsgReq) (resp *pbmsg.SendMsgResp, err error) {
|
||||||
ctx context.Context,
|
|
||||||
req *pbmsg.SendMsgReq,
|
|
||||||
) (resp *pbmsg.SendMsgResp, err error) {
|
|
||||||
if err = m.messageVerification(ctx, req); err != nil {
|
if err = m.messageVerification(ctx, req); err != nil {
|
||||||
prommetrics.GroupChatMsgProcessFailedCounter.Inc()
|
prommetrics.GroupChatMsgProcessFailedCounter.Inc()
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -119,19 +115,15 @@ func (m *msgServer) setConversationAtInfo(nctx context.Context, msg *sdkws.MsgDa
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.ZWarn(ctx, "SetConversations", err, "userID", memberUserIDList, "conversation", conversation)
|
log.ZWarn(ctx, "SetConversations", err, "userID", memberUserIDList, "conversation", conversation)
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
conversation.GroupAtType = &wrapperspb.Int32Value{Value: constant.AtMe}
|
conversation.GroupAtType = &wrapperspb.Int32Value{Value: constant.AtMe}
|
||||||
err := m.Conversation.SetConversations(ctx, msg.AtUserIDList, conversation)
|
err := m.Conversation.SetConversations(ctx, msg.AtUserIDList, conversation)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.ZWarn(ctx, "SetConversations", err, msg.AtUserIDList, conversation)
|
log.ZWarn(ctx, "SetConversations", err, msg.AtUserIDList, conversation)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *msgServer) sendMsgNotification(
|
func (m *msgServer) sendMsgNotification(ctx context.Context, req *pbmsg.SendMsgReq) (resp *pbmsg.SendMsgResp, err error) {
|
||||||
ctx context.Context,
|
|
||||||
req *pbmsg.SendMsgReq,
|
|
||||||
) (resp *pbmsg.SendMsgResp, err error) {
|
|
||||||
if err := m.MsgDatabase.MsgToMQ(ctx, utils.GenConversationUniqueKeyForSingle(req.MsgData.SendID, req.MsgData.RecvID), req.MsgData); err != nil {
|
if err := m.MsgDatabase.MsgToMQ(ctx, utils.GenConversationUniqueKeyForSingle(req.MsgData.SendID, req.MsgData.RecvID), req.MsgData); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,6 +29,7 @@ type PictureElem struct {
|
|||||||
BigPicture PictureBaseInfo `mapstructure:"bigPicture" validate:"required"`
|
BigPicture PictureBaseInfo `mapstructure:"bigPicture" validate:"required"`
|
||||||
SnapshotPicture PictureBaseInfo `mapstructure:"snapshotPicture" validate:"required"`
|
SnapshotPicture PictureBaseInfo `mapstructure:"snapshotPicture" validate:"required"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type SoundElem struct {
|
type SoundElem struct {
|
||||||
UUID string `mapstructure:"uuid"`
|
UUID string `mapstructure:"uuid"`
|
||||||
SoundPath string `mapstructure:"soundPath"`
|
SoundPath string `mapstructure:"soundPath"`
|
||||||
@ -36,6 +37,7 @@ type SoundElem struct {
|
|||||||
DataSize int64 `mapstructure:"dataSize"`
|
DataSize int64 `mapstructure:"dataSize"`
|
||||||
Duration int64 `mapstructure:"duration" validate:"required,min=1"`
|
Duration int64 `mapstructure:"duration" validate:"required,min=1"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type VideoElem struct {
|
type VideoElem struct {
|
||||||
VideoPath string `mapstructure:"videoPath"`
|
VideoPath string `mapstructure:"videoPath"`
|
||||||
VideoUUID string `mapstructure:"videoUUID"`
|
VideoUUID string `mapstructure:"videoUUID"`
|
||||||
@ -50,6 +52,7 @@ type VideoElem struct {
|
|||||||
SnapshotWidth int32 `mapstructure:"snapshotWidth" validate:"required"`
|
SnapshotWidth int32 `mapstructure:"snapshotWidth" validate:"required"`
|
||||||
SnapshotHeight int32 `mapstructure:"snapshotHeight" validate:"required"`
|
SnapshotHeight int32 `mapstructure:"snapshotHeight" validate:"required"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type FileElem struct {
|
type FileElem struct {
|
||||||
FilePath string `mapstructure:"filePath"`
|
FilePath string `mapstructure:"filePath"`
|
||||||
UUID string `mapstructure:"uuid"`
|
UUID string `mapstructure:"uuid"`
|
||||||
|
|||||||
@ -23,7 +23,6 @@ import (
|
|||||||
"github.com/OpenIMSDK/tools/tokenverify"
|
"github.com/OpenIMSDK/tools/tokenverify"
|
||||||
"github.com/OpenIMSDK/tools/utils"
|
"github.com/OpenIMSDK/tools/utils"
|
||||||
"github.com/golang-jwt/jwt/v4"
|
"github.com/golang-jwt/jwt/v4"
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -16,7 +16,6 @@ package callbackstruct
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
common "github.com/OpenIMSDK/protocol/sdkws"
|
common "github.com/OpenIMSDK/protocol/sdkws"
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/apistruct"
|
"github.com/openimsdk/open-im-server/v3/pkg/apistruct"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -20,6 +20,7 @@ type CallbackAfterRevokeMsgReq struct {
|
|||||||
Seq int64 `json:"seq"`
|
Seq int64 `json:"seq"`
|
||||||
UserID string `json:"userID"`
|
UserID string `json:"userID"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type CallbackAfterRevokeMsgResp struct {
|
type CallbackAfterRevokeMsgResp struct {
|
||||||
CommonCallbackResp
|
CommonCallbackResp
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,6 +26,7 @@ type CallbackBeforeUpdateUserInfoReq struct {
|
|||||||
FaceURL *string `json:"faceURL"`
|
FaceURL *string `json:"faceURL"`
|
||||||
Ex *string `json:"ex"`
|
Ex *string `json:"ex"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type CallbackBeforeUpdateUserInfoResp struct {
|
type CallbackBeforeUpdateUserInfoResp struct {
|
||||||
CommonCallbackResp
|
CommonCallbackResp
|
||||||
Nickname *string `json:"nickName"`
|
Nickname *string `json:"nickName"`
|
||||||
|
|||||||
@ -153,5 +153,5 @@ func (a *RpcCmd) GetRpcRegisterNameFromConfig() (string, error) {
|
|||||||
case RpcUserServer:
|
case RpcUserServer:
|
||||||
return a.config.RpcRegisterName.OpenImUserName, nil
|
return a.config.RpcRegisterName.OpenImUserName, nil
|
||||||
}
|
}
|
||||||
return "", errs.Wrap(errors.New("can not get rpc register name"), a.Name)
|
return "", errs.WrapMsg(errors.New("unrecognized RPC server name"), "providedName", a.Name, "hint", "Check if the server name is correctly configured")
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,9 +19,8 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenIMSDK/tools/discoveryregistry"
|
"github.com/OpenIMSDK/tools/discoveryregistry"
|
||||||
"gopkg.in/yaml.v3"
|
|
||||||
|
|
||||||
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
|
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
|
||||||
|
"gopkg.in/yaml.v3"
|
||||||
)
|
)
|
||||||
|
|
||||||
var Config GlobalConfig
|
var Config GlobalConfig
|
||||||
|
|||||||
@ -21,10 +21,10 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
"github.com/OpenIMSDK/protocol/constant"
|
"github.com/OpenIMSDK/protocol/constant"
|
||||||
"gopkg.in/yaml.v3"
|
"github.com/OpenIMSDK/tools/errs"
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/msgprocessor"
|
"github.com/openimsdk/open-im-server/v3/pkg/msgprocessor"
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
|
"github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
|
||||||
|
"gopkg.in/yaml.v3"
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed version
|
//go:embed version
|
||||||
@ -37,11 +37,11 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// return absolude path join ../config/, this is k8s container config path.
|
// return absolude path join ../config/, this is k8s container config path.
|
||||||
func GetDefaultConfigPath() string {
|
func GetDefaultConfigPath() (string, error) {
|
||||||
executablePath, err := os.Executable()
|
executablePath, err := os.Executable()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("GetDefaultConfigPath error:", err.Error())
|
fmt.Println("GetDefaultConfigPath error:", err.Error())
|
||||||
return ""
|
return "", nil
|
||||||
}
|
}
|
||||||
|
|
||||||
configPath, err := genutil.OutDir(filepath.Join(filepath.Dir(executablePath), "../config/"))
|
configPath, err := genutil.OutDir(filepath.Join(filepath.Dir(executablePath), "../config/"))
|
||||||
@ -49,7 +49,7 @@ func GetDefaultConfigPath() string {
|
|||||||
fmt.Fprintf(os.Stderr, "failed to get output directory: %v\n", err)
|
fmt.Fprintf(os.Stderr, "failed to get output directory: %v\n", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
return configPath
|
return configPath, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// getProjectRoot returns the absolute path of the project root directory.
|
// getProjectRoot returns the absolute path of the project root directory.
|
||||||
@ -91,31 +91,31 @@ func initConfig(config any, configName, configFolderPath string) error {
|
|||||||
_, err := os.Stat(configFolderPath)
|
_, err := os.Stat(configFolderPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if !os.IsNotExist(err) {
|
if !os.IsNotExist(err) {
|
||||||
fmt.Println("stat config path error:", err.Error())
|
return errs.WrapMsg(err, "stat config path error", "config Folder Path", configFolderPath)
|
||||||
return fmt.Errorf("stat config path error: %w", err)
|
|
||||||
}
|
}
|
||||||
configFolderPath = filepath.Join(GetProjectRoot(), "config", configName)
|
configFolderPath = filepath.Join(GetProjectRoot(), "config", configName)
|
||||||
fmt.Println("flag's path,enviment's path,default path all is not exist,using project path:", configFolderPath)
|
|
||||||
}
|
}
|
||||||
data, err := os.ReadFile(configFolderPath)
|
data, err := os.ReadFile(configFolderPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("read file error: %w", err)
|
return errs.WrapMsg(err, "read file error", "config Folder Path", configFolderPath)
|
||||||
}
|
}
|
||||||
if err = yaml.Unmarshal(data, config); err != nil {
|
if err = yaml.Unmarshal(data, config); err != nil {
|
||||||
return fmt.Errorf("unmarshal yaml error: %w", err)
|
return errs.WrapMsg(err, "unmarshal yaml error", "config Folder Path", configFolderPath)
|
||||||
}
|
}
|
||||||
fmt.Println("The path of the configuration file to start the process:", configFolderPath)
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func InitConfig(config *GlobalConfig, configFolderPath string) error {
|
func InitConfig(config *GlobalConfig, configFolderPath string) (err error) {
|
||||||
if configFolderPath == "" {
|
if configFolderPath == "" {
|
||||||
envConfigPath := os.Getenv("OPENIMCONFIG")
|
envConfigPath := os.Getenv("OPENIMCONFIG")
|
||||||
if envConfigPath != "" {
|
if envConfigPath != "" {
|
||||||
configFolderPath = envConfigPath
|
configFolderPath = envConfigPath
|
||||||
} else {
|
} else {
|
||||||
configFolderPath = GetDefaultConfigPath()
|
configFolderPath, err = GetDefaultConfigPath()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -101,23 +101,8 @@ type CommonMsgDatabase interface {
|
|||||||
MsgToPushMQ(ctx context.Context, key, conversarionID string, msg2mq *sdkws.MsgData) (int32, int64, error)
|
MsgToPushMQ(ctx context.Context, key, conversarionID string, msg2mq *sdkws.MsgData) (int32, int64, error)
|
||||||
MsgToMongoMQ(ctx context.Context, key, conversarionID string, msgs []*sdkws.MsgData, lastSeq int64) error
|
MsgToMongoMQ(ctx context.Context, key, conversarionID string, msgs []*sdkws.MsgData, lastSeq int64) error
|
||||||
|
|
||||||
RangeUserSendCount(
|
RangeUserSendCount(ctx context.Context, start time.Time, end time.Time, group bool, ase bool, pageNumber int32, showNumber int32) (msgCount int64, userCount int64, users []*unrelationtb.UserCount, dateCount map[string]int64, err error)
|
||||||
ctx context.Context,
|
RangeGroupSendCount(ctx context.Context, start time.Time, end time.Time, ase bool, pageNumber int32, showNumber int32) (msgCount int64, userCount int64, groups []*unrelationtb.GroupCount, dateCount map[string]int64, err error)
|
||||||
start time.Time,
|
|
||||||
end time.Time,
|
|
||||||
group bool,
|
|
||||||
ase bool,
|
|
||||||
pageNumber int32,
|
|
||||||
showNumber int32,
|
|
||||||
) (msgCount int64, userCount int64, users []*unrelationtb.UserCount, dateCount map[string]int64, err error)
|
|
||||||
RangeGroupSendCount(
|
|
||||||
ctx context.Context,
|
|
||||||
start time.Time,
|
|
||||||
end time.Time,
|
|
||||||
ase bool,
|
|
||||||
pageNumber int32,
|
|
||||||
showNumber int32,
|
|
||||||
) (msgCount int64, userCount int64, groups []*unrelationtb.GroupCount, dateCount map[string]int64, err error)
|
|
||||||
ConvertMsgsDocLen(ctx context.Context, conversationIDs []string)
|
ConvertMsgsDocLen(ctx context.Context, conversationIDs []string)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -388,10 +373,10 @@ func (db *commonMsgDatabase) BatchInsertChat2Cache(ctx context.Context, conversa
|
|||||||
}
|
}
|
||||||
lenList := len(msgs)
|
lenList := len(msgs)
|
||||||
if int64(lenList) > db.msg.GetSingleGocMsgNum() {
|
if int64(lenList) > db.msg.GetSingleGocMsgNum() {
|
||||||
return 0, false, errors.New("too large")
|
return 0, false, errs.WrapMsg(errors.New("message count exceeds limit"), "limit", db.msg.GetSingleGocMsgNum())
|
||||||
}
|
}
|
||||||
if lenList < 1 {
|
if lenList < 1 {
|
||||||
return 0, false, errors.New("too short as 0")
|
return 0, false, errs.WrapMsg(errors.New("no messages to insert"), "minCount", 1)
|
||||||
}
|
}
|
||||||
if errs.Unwrap(err) == redis.Nil {
|
if errs.Unwrap(err) == redis.Nil {
|
||||||
isNew = true
|
isNew = true
|
||||||
@ -403,6 +388,7 @@ func (db *commonMsgDatabase) BatchInsertChat2Cache(ctx context.Context, conversa
|
|||||||
m.Seq = currentMaxSeq
|
m.Seq = currentMaxSeq
|
||||||
userSeqMap[m.SendID] = m.Seq
|
userSeqMap[m.SendID] = m.Seq
|
||||||
}
|
}
|
||||||
|
|
||||||
failedNum, err := db.cache.SetMessageToCache(ctx, conversationID, msgs)
|
failedNum, err := db.cache.SetMessageToCache(ctx, conversationID, msgs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
prommetrics.MsgInsertRedisFailedCounter.Add(float64(failedNum))
|
prommetrics.MsgInsertRedisFailedCounter.Add(float64(failedNum))
|
||||||
@ -410,11 +396,13 @@ func (db *commonMsgDatabase) BatchInsertChat2Cache(ctx context.Context, conversa
|
|||||||
} else {
|
} else {
|
||||||
prommetrics.MsgInsertRedisSuccessCounter.Inc()
|
prommetrics.MsgInsertRedisSuccessCounter.Inc()
|
||||||
}
|
}
|
||||||
|
|
||||||
err = db.cache.SetMaxSeq(ctx, conversationID, currentMaxSeq)
|
err = db.cache.SetMaxSeq(ctx, conversationID, currentMaxSeq)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.ZError(ctx, "db.cache.SetMaxSeq error", err, "conversationID", conversationID)
|
log.ZError(ctx, "db.cache.SetMaxSeq error", err, "conversationID", conversationID)
|
||||||
prommetrics.SeqSetFailedCounter.Inc()
|
prommetrics.SeqSetFailedCounter.Inc()
|
||||||
}
|
}
|
||||||
|
|
||||||
err = db.cache.SetHasReadSeqs(ctx, conversationID, userSeqMap)
|
err = db.cache.SetHasReadSeqs(ctx, conversationID, userSeqMap)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.ZError(ctx, "SetHasReadSeqs error", err, "userSeqMap", userSeqMap, "conversationID", conversationID)
|
log.ZError(ctx, "SetHasReadSeqs error", err, "userSeqMap", userSeqMap, "conversationID", conversationID)
|
||||||
|
|||||||
@ -19,11 +19,10 @@ import (
|
|||||||
|
|
||||||
"github.com/OpenIMSDK/tools/mgoutil"
|
"github.com/OpenIMSDK/tools/mgoutil"
|
||||||
"github.com/OpenIMSDK/tools/pagination"
|
"github.com/OpenIMSDK/tools/pagination"
|
||||||
|
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
|
||||||
"go.mongodb.org/mongo-driver/bson"
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
"go.mongodb.org/mongo-driver/mongo/options"
|
"go.mongodb.org/mongo-driver/mongo/options"
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewBlackMongo(db *mongo.Database) (relation.BlackModelInterface, error) {
|
func NewBlackMongo(db *mongo.Database) (relation.BlackModelInterface, error) {
|
||||||
|
|||||||
@ -22,11 +22,10 @@ import (
|
|||||||
"github.com/OpenIMSDK/tools/errs"
|
"github.com/OpenIMSDK/tools/errs"
|
||||||
"github.com/OpenIMSDK/tools/mgoutil"
|
"github.com/OpenIMSDK/tools/mgoutil"
|
||||||
"github.com/OpenIMSDK/tools/pagination"
|
"github.com/OpenIMSDK/tools/pagination"
|
||||||
|
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
|
||||||
"go.mongodb.org/mongo-driver/bson"
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
"go.mongodb.org/mongo-driver/mongo/options"
|
"go.mongodb.org/mongo-driver/mongo/options"
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewConversationMongo(db *mongo.Database) (*ConversationMgo, error) {
|
func NewConversationMongo(db *mongo.Database) (*ConversationMgo, error) {
|
||||||
|
|||||||
@ -19,11 +19,10 @@ import (
|
|||||||
|
|
||||||
"github.com/OpenIMSDK/tools/mgoutil"
|
"github.com/OpenIMSDK/tools/mgoutil"
|
||||||
"github.com/OpenIMSDK/tools/pagination"
|
"github.com/OpenIMSDK/tools/pagination"
|
||||||
|
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
|
||||||
"go.mongodb.org/mongo-driver/bson"
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
"go.mongodb.org/mongo-driver/mongo/options"
|
"go.mongodb.org/mongo-driver/mongo/options"
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// FriendMgo implements FriendModelInterface using MongoDB as the storage backend.
|
// FriendMgo implements FriendModelInterface using MongoDB as the storage backend.
|
||||||
|
|||||||
@ -19,11 +19,10 @@ import (
|
|||||||
|
|
||||||
"github.com/OpenIMSDK/tools/mgoutil"
|
"github.com/OpenIMSDK/tools/mgoutil"
|
||||||
"github.com/OpenIMSDK/tools/pagination"
|
"github.com/OpenIMSDK/tools/pagination"
|
||||||
|
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
|
||||||
"go.mongodb.org/mongo-driver/bson"
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
"go.mongodb.org/mongo-driver/mongo/options"
|
"go.mongodb.org/mongo-driver/mongo/options"
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewFriendRequestMongo(db *mongo.Database) (relation.FriendRequestModelInterface, error) {
|
func NewFriendRequestMongo(db *mongo.Database) (relation.FriendRequestModelInterface, error) {
|
||||||
|
|||||||
@ -22,11 +22,10 @@ import (
|
|||||||
"github.com/OpenIMSDK/tools/errs"
|
"github.com/OpenIMSDK/tools/errs"
|
||||||
"github.com/OpenIMSDK/tools/mgoutil"
|
"github.com/OpenIMSDK/tools/mgoutil"
|
||||||
"github.com/OpenIMSDK/tools/pagination"
|
"github.com/OpenIMSDK/tools/pagination"
|
||||||
|
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
|
||||||
"go.mongodb.org/mongo-driver/bson"
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
"go.mongodb.org/mongo-driver/mongo/options"
|
"go.mongodb.org/mongo-driver/mongo/options"
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewGroupMongo(db *mongo.Database) (relation.GroupModelInterface, error) {
|
func NewGroupMongo(db *mongo.Database) (relation.GroupModelInterface, error) {
|
||||||
|
|||||||
@ -21,11 +21,10 @@ import (
|
|||||||
"github.com/OpenIMSDK/tools/errs"
|
"github.com/OpenIMSDK/tools/errs"
|
||||||
"github.com/OpenIMSDK/tools/mgoutil"
|
"github.com/OpenIMSDK/tools/mgoutil"
|
||||||
"github.com/OpenIMSDK/tools/pagination"
|
"github.com/OpenIMSDK/tools/pagination"
|
||||||
|
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
|
||||||
"go.mongodb.org/mongo-driver/bson"
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
"go.mongodb.org/mongo-driver/mongo/options"
|
"go.mongodb.org/mongo-driver/mongo/options"
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewGroupMember(db *mongo.Database) (relation.GroupMemberModelInterface, error) {
|
func NewGroupMember(db *mongo.Database) (relation.GroupMemberModelInterface, error) {
|
||||||
|
|||||||
@ -20,11 +20,10 @@ import (
|
|||||||
"github.com/OpenIMSDK/tools/errs"
|
"github.com/OpenIMSDK/tools/errs"
|
||||||
"github.com/OpenIMSDK/tools/mgoutil"
|
"github.com/OpenIMSDK/tools/mgoutil"
|
||||||
"github.com/OpenIMSDK/tools/pagination"
|
"github.com/OpenIMSDK/tools/pagination"
|
||||||
|
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
|
||||||
"go.mongodb.org/mongo-driver/bson"
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
"go.mongodb.org/mongo-driver/mongo/options"
|
"go.mongodb.org/mongo-driver/mongo/options"
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewGroupRequestMgo(db *mongo.Database) (relation.GroupRequestModelInterface, error) {
|
func NewGroupRequestMgo(db *mongo.Database) (relation.GroupRequestModelInterface, error) {
|
||||||
|
|||||||
@ -20,11 +20,10 @@ import (
|
|||||||
|
|
||||||
"github.com/OpenIMSDK/tools/mgoutil"
|
"github.com/OpenIMSDK/tools/mgoutil"
|
||||||
"github.com/OpenIMSDK/tools/pagination"
|
"github.com/OpenIMSDK/tools/pagination"
|
||||||
|
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
|
||||||
"go.mongodb.org/mongo-driver/bson"
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
"go.mongodb.org/mongo-driver/mongo/options"
|
"go.mongodb.org/mongo-driver/mongo/options"
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewLogMongo(db *mongo.Database) (relation.LogInterface, error) {
|
func NewLogMongo(db *mongo.Database) (relation.LogInterface, error) {
|
||||||
|
|||||||
@ -19,11 +19,10 @@ import (
|
|||||||
|
|
||||||
"github.com/OpenIMSDK/tools/errs"
|
"github.com/OpenIMSDK/tools/errs"
|
||||||
"github.com/OpenIMSDK/tools/mgoutil"
|
"github.com/OpenIMSDK/tools/mgoutil"
|
||||||
|
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
|
||||||
"go.mongodb.org/mongo-driver/bson"
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
"go.mongodb.org/mongo-driver/mongo/options"
|
"go.mongodb.org/mongo-driver/mongo/options"
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewS3Mongo(db *mongo.Database) (relation.ObjectInfoModelInterface, error) {
|
func NewS3Mongo(db *mongo.Database) (relation.ObjectInfoModelInterface, error) {
|
||||||
|
|||||||
@ -22,12 +22,11 @@ import (
|
|||||||
"github.com/OpenIMSDK/tools/errs"
|
"github.com/OpenIMSDK/tools/errs"
|
||||||
"github.com/OpenIMSDK/tools/mgoutil"
|
"github.com/OpenIMSDK/tools/mgoutil"
|
||||||
"github.com/OpenIMSDK/tools/pagination"
|
"github.com/OpenIMSDK/tools/pagination"
|
||||||
|
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
|
||||||
"go.mongodb.org/mongo-driver/bson"
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
"go.mongodb.org/mongo-driver/mongo/options"
|
"go.mongodb.org/mongo-driver/mongo/options"
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewUserMongo(db *mongo.Database) (relation.UserModelInterface, error) {
|
func NewUserMongo(db *mongo.Database) (relation.UserModelInterface, error) {
|
||||||
|
|||||||
@ -30,9 +30,8 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenIMSDK/tools/errs"
|
"github.com/OpenIMSDK/tools/errs"
|
||||||
"github.com/tencentyun/cos-go-sdk-v5"
|
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/db/s3"
|
"github.com/openimsdk/open-im-server/v3/pkg/common/db/s3"
|
||||||
|
"github.com/tencentyun/cos-go-sdk-v5"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@ -32,7 +32,6 @@ import (
|
|||||||
|
|
||||||
"github.com/OpenIMSDK/tools/errs"
|
"github.com/OpenIMSDK/tools/errs"
|
||||||
"github.com/aliyun/aliyun-oss-go-sdk/oss"
|
"github.com/aliyun/aliyun-oss-go-sdk/oss"
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/db/s3"
|
"github.com/openimsdk/open-im-server/v3/pkg/common/db/s3"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -21,11 +21,10 @@ import (
|
|||||||
"github.com/OpenIMSDK/tools/errs"
|
"github.com/OpenIMSDK/tools/errs"
|
||||||
"github.com/OpenIMSDK/tools/log"
|
"github.com/OpenIMSDK/tools/log"
|
||||||
"github.com/openimsdk/localcache"
|
"github.com/openimsdk/localcache"
|
||||||
"github.com/redis/go-redis/v9"
|
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/cachekey"
|
"github.com/openimsdk/open-im-server/v3/pkg/common/cachekey"
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/rpcclient"
|
"github.com/openimsdk/open-im-server/v3/pkg/rpcclient"
|
||||||
|
"github.com/redis/go-redis/v9"
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewConversationLocalCache(client rpcclient.ConversationRpcClient, cli redis.UniversalClient) *ConversationLocalCache {
|
func NewConversationLocalCache(client rpcclient.ConversationRpcClient, cli redis.UniversalClient) *ConversationLocalCache {
|
||||||
|
|||||||
@ -19,11 +19,10 @@ import (
|
|||||||
|
|
||||||
"github.com/OpenIMSDK/tools/log"
|
"github.com/OpenIMSDK/tools/log"
|
||||||
"github.com/openimsdk/localcache"
|
"github.com/openimsdk/localcache"
|
||||||
"github.com/redis/go-redis/v9"
|
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/cachekey"
|
"github.com/openimsdk/open-im-server/v3/pkg/common/cachekey"
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/rpcclient"
|
"github.com/openimsdk/open-im-server/v3/pkg/rpcclient"
|
||||||
|
"github.com/redis/go-redis/v9"
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewFriendLocalCache(client rpcclient.FriendRpcClient, cli redis.UniversalClient) *FriendLocalCache {
|
func NewFriendLocalCache(client rpcclient.FriendRpcClient, cli redis.UniversalClient) *FriendLocalCache {
|
||||||
|
|||||||
@ -21,11 +21,10 @@ import (
|
|||||||
"github.com/OpenIMSDK/tools/errs"
|
"github.com/OpenIMSDK/tools/errs"
|
||||||
"github.com/OpenIMSDK/tools/log"
|
"github.com/OpenIMSDK/tools/log"
|
||||||
"github.com/openimsdk/localcache"
|
"github.com/openimsdk/localcache"
|
||||||
"github.com/redis/go-redis/v9"
|
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/cachekey"
|
"github.com/openimsdk/open-im-server/v3/pkg/common/cachekey"
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/rpcclient"
|
"github.com/openimsdk/open-im-server/v3/pkg/rpcclient"
|
||||||
|
"github.com/redis/go-redis/v9"
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewGroupLocalCache(client rpcclient.GroupRpcClient, cli redis.UniversalClient) *GroupLocalCache {
|
func NewGroupLocalCache(client rpcclient.GroupRpcClient, cli redis.UniversalClient) *GroupLocalCache {
|
||||||
|
|||||||
@ -21,11 +21,10 @@ import (
|
|||||||
"github.com/OpenIMSDK/tools/errs"
|
"github.com/OpenIMSDK/tools/errs"
|
||||||
"github.com/OpenIMSDK/tools/log"
|
"github.com/OpenIMSDK/tools/log"
|
||||||
"github.com/openimsdk/localcache"
|
"github.com/openimsdk/localcache"
|
||||||
"github.com/redis/go-redis/v9"
|
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/cachekey"
|
"github.com/openimsdk/open-im-server/v3/pkg/common/cachekey"
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/rpcclient"
|
"github.com/openimsdk/open-im-server/v3/pkg/rpcclient"
|
||||||
|
"github.com/redis/go-redis/v9"
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewUserLocalCache(client rpcclient.UserRpcClient, cli redis.UniversalClient) *UserLocalCache {
|
func NewUserLocalCache(client rpcclient.UserRpcClient, cli redis.UniversalClient) *UserLocalCache {
|
||||||
|
|||||||
@ -19,9 +19,8 @@ import (
|
|||||||
|
|
||||||
"github.com/OpenIMSDK/protocol/auth"
|
"github.com/OpenIMSDK/protocol/auth"
|
||||||
"github.com/OpenIMSDK/tools/discoveryregistry"
|
"github.com/OpenIMSDK/tools/discoveryregistry"
|
||||||
"google.golang.org/grpc"
|
|
||||||
|
|
||||||
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
|
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
|
||||||
|
"google.golang.org/grpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewAuth(discov discoveryregistry.SvcDiscoveryRegistry, rpcRegisterName string) *Auth {
|
func NewAuth(discov discoveryregistry.SvcDiscoveryRegistry, rpcRegisterName string) *Auth {
|
||||||
|
|||||||
@ -21,10 +21,9 @@ import (
|
|||||||
pbconversation "github.com/OpenIMSDK/protocol/conversation"
|
pbconversation "github.com/OpenIMSDK/protocol/conversation"
|
||||||
"github.com/OpenIMSDK/tools/discoveryregistry"
|
"github.com/OpenIMSDK/tools/discoveryregistry"
|
||||||
"github.com/OpenIMSDK/tools/errs"
|
"github.com/OpenIMSDK/tools/errs"
|
||||||
"google.golang.org/grpc"
|
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
||||||
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
|
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
|
||||||
|
"google.golang.org/grpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Conversation struct {
|
type Conversation struct {
|
||||||
|
|||||||
@ -20,9 +20,8 @@ import (
|
|||||||
"github.com/OpenIMSDK/protocol/friend"
|
"github.com/OpenIMSDK/protocol/friend"
|
||||||
sdkws "github.com/OpenIMSDK/protocol/sdkws"
|
sdkws "github.com/OpenIMSDK/protocol/sdkws"
|
||||||
"github.com/OpenIMSDK/tools/discoveryregistry"
|
"github.com/OpenIMSDK/tools/discoveryregistry"
|
||||||
"google.golang.org/grpc"
|
|
||||||
|
|
||||||
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
|
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
|
||||||
|
"google.golang.org/grpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Friend struct {
|
type Friend struct {
|
||||||
|
|||||||
@ -24,7 +24,6 @@ import (
|
|||||||
"github.com/OpenIMSDK/tools/discoveryregistry"
|
"github.com/OpenIMSDK/tools/discoveryregistry"
|
||||||
"github.com/OpenIMSDK/tools/errs"
|
"github.com/OpenIMSDK/tools/errs"
|
||||||
"github.com/OpenIMSDK/tools/utils"
|
"github.com/OpenIMSDK/tools/utils"
|
||||||
|
|
||||||
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
|
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -26,11 +26,10 @@ import (
|
|||||||
"github.com/OpenIMSDK/tools/errs"
|
"github.com/OpenIMSDK/tools/errs"
|
||||||
"github.com/OpenIMSDK/tools/log"
|
"github.com/OpenIMSDK/tools/log"
|
||||||
"github.com/OpenIMSDK/tools/utils"
|
"github.com/OpenIMSDK/tools/utils"
|
||||||
"google.golang.org/grpc"
|
|
||||||
"google.golang.org/protobuf/proto"
|
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
||||||
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
|
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
|
||||||
|
"google.golang.org/grpc"
|
||||||
|
"google.golang.org/protobuf/proto"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newContentTypeConf(conf *config.Notification) map[int32]config.NotificationConf {
|
func newContentTypeConf(conf *config.Notification) map[int32]config.NotificationConf {
|
||||||
|
|||||||
@ -19,9 +19,8 @@ import (
|
|||||||
|
|
||||||
"github.com/OpenIMSDK/protocol/push"
|
"github.com/OpenIMSDK/protocol/push"
|
||||||
"github.com/OpenIMSDK/tools/discoveryregistry"
|
"github.com/OpenIMSDK/tools/discoveryregistry"
|
||||||
"google.golang.org/grpc"
|
|
||||||
|
|
||||||
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
|
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
|
||||||
|
"google.golang.org/grpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Push struct {
|
type Push struct {
|
||||||
|
|||||||
@ -19,9 +19,8 @@ import (
|
|||||||
|
|
||||||
"github.com/OpenIMSDK/protocol/third"
|
"github.com/OpenIMSDK/protocol/third"
|
||||||
"github.com/OpenIMSDK/tools/discoveryregistry"
|
"github.com/OpenIMSDK/tools/discoveryregistry"
|
||||||
"google.golang.org/grpc"
|
|
||||||
|
|
||||||
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
|
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
|
||||||
|
"google.golang.org/grpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Third struct {
|
type Third struct {
|
||||||
|
|||||||
@ -18,17 +18,15 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/authverify"
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
|
||||||
|
|
||||||
"github.com/OpenIMSDK/protocol/sdkws"
|
"github.com/OpenIMSDK/protocol/sdkws"
|
||||||
"github.com/OpenIMSDK/protocol/user"
|
"github.com/OpenIMSDK/protocol/user"
|
||||||
"github.com/OpenIMSDK/tools/discoveryregistry"
|
"github.com/OpenIMSDK/tools/discoveryregistry"
|
||||||
"github.com/OpenIMSDK/tools/errs"
|
"github.com/OpenIMSDK/tools/errs"
|
||||||
"github.com/OpenIMSDK/tools/utils"
|
"github.com/OpenIMSDK/tools/utils"
|
||||||
"google.golang.org/grpc"
|
"github.com/openimsdk/open-im-server/v3/pkg/authverify"
|
||||||
|
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
||||||
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
|
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
|
||||||
|
"google.golang.org/grpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
// User represents a structure holding connection details for the User RPC client.
|
// User represents a structure holding connection details for the User RPC client.
|
||||||
|
|||||||
@ -38,7 +38,6 @@ func main() {
|
|||||||
// }
|
// }
|
||||||
latestVersion := defaultTemplateVersion
|
latestVersion := defaultTemplateVersion
|
||||||
|
|
||||||
// getLatestVersion
|
|
||||||
// getLatestVersion
|
// getLatestVersion
|
||||||
|
|
||||||
// Construct the download URL
|
// Construct the download URL
|
||||||
@ -101,7 +100,6 @@ func main() {
|
|||||||
select {}
|
select {}
|
||||||
}
|
}
|
||||||
|
|
||||||
// getLatestVersion fetches the latest version number from a given URL.
|
|
||||||
/* func getLatestVersion(url string) (string, error) {
|
/* func getLatestVersion(url string) (string, error) {
|
||||||
resp, err := http.Get(url)
|
resp, err := http.Get(url)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user