u
This commit is contained in:
1 parent
4ce951dd56
commit
8a3dea8545
44 files changed
+1599
-30
No files matched your search
@@ -0,0 +1,95 @@
|
||||
package redisx
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strconv"
|
||||
|
||||
"github.com/redis/go-redis/v9"
|
||||
)
|
||||
|
||||
// 统一 key 生成函数
|
||||
func spaceMemberKey(spaceID int64) string {
|
||||
return fmt.Sprintf("space:member:%d", spaceID)
|
||||
}
|
||||
|
||||
// SpaceAddOrUpdateMember 添加 / 更新成员角色
|
||||
func SpaceAddOrUpdateMember(spaceID int64, userID int64, role int) error {
|
||||
key := spaceMemberKey(spaceID)
|
||||
|
||||
return Client.HSet(
|
||||
context.Background(),
|
||||
key,
|
||||
strconv.FormatInt(userID, 10),
|
||||
role,
|
||||
).Err()
|
||||
}
|
||||
|
||||
// SpaceRemoveMember 删除成员
|
||||
func SpaceRemoveMember(spaceID int64, userID int64) error {
|
||||
key := spaceMemberKey(spaceID)
|
||||
|
||||
return Client.HDel(
|
||||
context.Background(),
|
||||
key,
|
||||
strconv.FormatInt(userID, 10),
|
||||
).Err()
|
||||
}
|
||||
|
||||
// SpaceGetUserRole 获取成员角色
|
||||
func SpaceGetUserRole(spaceID int64, userID int64) (int, bool, error) {
|
||||
key := spaceMemberKey(spaceID)
|
||||
|
||||
val, err := Client.HGet(
|
||||
context.Background(),
|
||||
key,
|
||||
strconv.FormatInt(userID, 10),
|
||||
).Result()
|
||||
|
||||
if errors.Is(err, redis.Nil) {
|
||||
return 0, false, nil
|
||||
}
|
||||
if err != nil {
|
||||
return 0, false, err
|
||||
}
|
||||
|
||||
role, err := strconv.Atoi(val)
|
||||
if err != nil {
|
||||
return 0, false, err
|
||||
}
|
||||
|
||||
return role, true, nil
|
||||
}
|
||||
|
||||
// SpaceIsMember 判断是否在空间
|
||||
func SpaceIsMember(spaceID int64, userID int64) (bool, error) {
|
||||
_, ok, err := SpaceGetUserRole(spaceID, userID)
|
||||
return ok, err
|
||||
}
|
||||
|
||||
// SpaceInitMembers 初始化用户成员
|
||||
func SpaceInitMembers(spaceID int64, members map[int64]int) error {
|
||||
key := spaceMemberKey(spaceID)
|
||||
|
||||
data := make(map[string]interface{})
|
||||
for userID, role := range members {
|
||||
data[strconv.FormatInt(userID, 10)] = role
|
||||
}
|
||||
|
||||
return Client.HSet(
|
||||
context.Background(),
|
||||
key,
|
||||
data,
|
||||
).Err()
|
||||
}
|
||||
|
||||
// SpaceDelete 删除空间
|
||||
func SpaceDelete(spaceID int64) error {
|
||||
key := spaceMemberKey(spaceID)
|
||||
|
||||
return Client.Del(
|
||||
context.Background(),
|
||||
key,
|
||||
).Err()
|
||||
}
|
||||
Reference in new issue
Block a user