mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-12-16 19:19:23 +08:00
chore: group member hash
This commit is contained in:
parent
79237d228d
commit
2253e95413
48
pkg/common/db/cache/group.go
vendored
48
pkg/common/db/cache/group.go
vendored
@ -16,8 +16,10 @@ package cache
|
||||
|
||||
import (
|
||||
"context"
|
||||
"math/big"
|
||||
"strings"
|
||||
"crypto/md5"
|
||||
"encoding/binary"
|
||||
"encoding/json"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/dtm-labs/rockscache"
|
||||
@ -300,10 +302,44 @@ func (g *GroupCacheRedis) GetGroupMembersHash(ctx context.Context, groupID strin
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
utils.Sort(userIDs, true)
|
||||
bi := big.NewInt(0)
|
||||
bi.SetString(utils.Md5(strings.Join(userIDs, ";"))[0:8], 16)
|
||||
return bi.Uint64(), nil
|
||||
var members []*relationTb.GroupMemberModel
|
||||
if len(userIDs) > 0 {
|
||||
members, err = g.GetGroupMembersInfo(ctx, groupID, userIDs)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
utils.Sort(userIDs, true)
|
||||
}
|
||||
memberMap := make(map[string]*relationTb.GroupMemberModel)
|
||||
for i, member := range members {
|
||||
memberMap[member.UserID] = members[i]
|
||||
}
|
||||
data := make([]string, 0, len(members)*11)
|
||||
for _, userID := range userIDs {
|
||||
member, ok := memberMap[userID]
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
data = append(data,
|
||||
member.GroupID,
|
||||
member.UserID,
|
||||
member.Nickname,
|
||||
member.FaceURL,
|
||||
strconv.Itoa(int(member.RoleLevel)),
|
||||
strconv.FormatInt(member.JoinTime.UnixMilli(), 10),
|
||||
strconv.Itoa(int(member.JoinSource)),
|
||||
member.InviterUserID,
|
||||
member.OperatorUserID,
|
||||
strconv.FormatInt(member.MuteEndTime.UnixMilli(), 10),
|
||||
member.Ex,
|
||||
)
|
||||
}
|
||||
val, err := json.Marshal(data)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
sum := md5.Sum(val)
|
||||
return binary.BigEndian.Uint64(sum[:]), nil
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user