Files
open-im-server/internal/rpc/group/g.go
T

95 lines
2.9 KiB
Go
Raw Normal View History

2023-01-13 16:56:46 +08:00
package group
import (
2023-02-06 18:33:33 +08:00
"Open_IM/pkg/common/constant"
2023-02-01 15:42:27 +08:00
"Open_IM/pkg/common/tracelog"
2023-02-06 18:33:33 +08:00
pbConversation "Open_IM/pkg/proto/conversation"
2023-02-09 20:36:34 +08:00
sdkws "Open_IM/pkg/proto/sdkws"
2023-01-13 16:56:46 +08:00
"Open_IM/pkg/utils"
"context"
2023-02-06 15:32:20 +08:00
"errors"
2023-01-13 20:58:06 +08:00
"math/big"
"strconv"
2023-02-10 15:36:25 +08:00
"strings"
2023-01-13 16:56:46 +08:00
"time"
)
2023-02-09 20:36:34 +08:00
func GetPublicUserInfoOne(ctx context.Context, userID string) (*sdkws.PublicUserInfo, error) {
2023-02-06 15:32:20 +08:00
return nil, errors.New("todo")
}
2023-02-09 20:36:34 +08:00
func GetUsersInfo(ctx context.Context, userIDs []string) ([]*sdkws.UserInfo, error) {
2023-02-06 15:32:20 +08:00
return nil, errors.New("todo")
2023-01-13 20:58:06 +08:00
}
2023-02-09 20:36:34 +08:00
func GetUserInfoMap(ctx context.Context, userIDs []string) (map[string]*sdkws.UserInfo, error) {
2023-02-06 12:14:12 +08:00
users, err := GetUsersInfo(ctx, userIDs)
2023-01-29 18:13:02 +08:00
if err != nil {
return nil, err
}
2023-02-09 20:36:34 +08:00
return utils.SliceToMap(users, func(e *sdkws.UserInfo) string {
2023-02-06 12:14:12 +08:00
return e.UserID
}), nil
}
2023-02-09 20:36:34 +08:00
func GetPublicUserInfo(ctx context.Context, userIDs []string) ([]*sdkws.PublicUserInfo, error) {
2023-02-06 15:32:20 +08:00
return nil, errors.New("todo")
2023-02-06 12:14:12 +08:00
}
2023-02-09 20:36:34 +08:00
func GetPublicUserInfoMap(ctx context.Context, userIDs []string) (map[string]*sdkws.PublicUserInfo, error) {
2023-02-06 12:14:12 +08:00
users, err := GetPublicUserInfo(ctx, userIDs)
if err != nil {
return nil, err
2023-01-29 18:13:02 +08:00
}
2023-02-09 20:36:34 +08:00
return utils.SliceToMap(users, func(e *sdkws.PublicUserInfo) string {
2023-02-06 12:14:12 +08:00
return e.UserID
}), nil
2023-01-29 18:13:02 +08:00
}
2023-02-10 15:36:25 +08:00
func GetUsername(ctx context.Context, userIDs []string) (map[string]string, error) {
if len(userIDs) == 0 {
return map[string]string{}, nil
}
users, err := GetPublicUserInfo(ctx, userIDs)
if err != nil {
return nil, err
}
if ids := utils.Single(userIDs, utils.Slice(users, func(e *sdkws.PublicUserInfo) string {
return e.UserID
})); len(ids) > 0 {
return nil, constant.ErrUserIDNotFound.Wrap(strings.Join(ids, ","))
}
return utils.SliceToMapAny(users, func(e *sdkws.PublicUserInfo) (string, string) {
return e.UserID, e.Nickname
}), nil
}
2023-02-06 18:33:33 +08:00
func GroupNotification(ctx context.Context, groupID string) {
var conversationReq pbConversation.ModifyConversationFieldReq
conversation := pbConversation.Conversation{
OwnerUserID: tracelog.GetOpUserID(ctx),
ConversationID: utils.GetConversationIDBySessionType(groupID, constant.GroupChatType),
ConversationType: constant.GroupChatType,
GroupID: groupID,
}
conversationReq.Conversation = &conversation
conversationReq.OperationID = tracelog.GetOperationID(ctx)
conversationReq.FieldType = constant.FieldGroupAtType
conversation.GroupAtType = constant.GroupNotification
conversationReq.UserIDList = cacheResp.UserIDList
_, err = pbConversation.NewConversationClient(s.etcdConn.GetConn("", config.Config.RpcRegisterName.OpenImConversationName)).ModifyConversationField(ctx, &conversationReq)
tracelog.SetCtxInfo(ctx, "ModifyConversationField", err, "req", &conversationReq, "resp", conversationReply)
}
2023-01-13 20:58:06 +08:00
func genGroupID(ctx context.Context, groupID string) string {
if groupID != "" {
return groupID
}
2023-02-01 15:42:27 +08:00
groupID = utils.Md5(tracelog.GetOperationID(ctx) + strconv.FormatInt(time.Now().UnixNano(), 10))
2023-01-13 20:58:06 +08:00
bi := big.NewInt(0)
bi.SetString(groupID[0:8], 16)
groupID = bi.String()
return groupID
2023-01-13 16:56:46 +08:00
}