mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-12-17 11:39:14 +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 (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"math/big"
|
"crypto/md5"
|
||||||
"strings"
|
"encoding/binary"
|
||||||
|
"encoding/json"
|
||||||
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/dtm-labs/rockscache"
|
"github.com/dtm-labs/rockscache"
|
||||||
@ -300,10 +302,44 @@ func (g *GroupCacheRedis) GetGroupMembersHash(ctx context.Context, groupID strin
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
utils.Sort(userIDs, true)
|
var members []*relationTb.GroupMemberModel
|
||||||
bi := big.NewInt(0)
|
if len(userIDs) > 0 {
|
||||||
bi.SetString(utils.Md5(strings.Join(userIDs, ";"))[0:8], 16)
|
members, err = g.GetGroupMembersInfo(ctx, groupID, userIDs)
|
||||||
return bi.Uint64(), nil
|
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