package group_c import ( "fmt" "git.hilo.cn/hilo-common/domain" "github.com/go-redis/redis/v8" "hilo-group/_const/redis_key/group_k" "strconv" "time" ) // 用户进房 func ZAddUserEnterRoom(model *domain.Model, userId uint64, imGroupId string) { userKey := group_k.GetUserEnterRoomUserKey(userId) groupKey := group_k.GetUserEnterRoomGroupKey(imGroupId) if err := model.Redis.ZAdd(model, userKey, &redis.Z{ Score: float64(time.Now().Unix()), Member: imGroupId, }).Err(); err != nil { model.Log.Errorf("ZAddUserEnterRoom user fail:%v", err) } if err := model.Redis.ZAdd(model, groupKey, &redis.Z{ Score: float64(time.Now().Unix()), Member: userId, }).Err(); err != nil { model.Log.Errorf("ZAddUserEnterRoom room fail:%v", err) } } // 获取最近房间访客 func GetLastRoomVisitors(model *domain.Model, imGroupId string) (userIds []uint64) { groupKey := group_k.GetUserEnterRoomGroupKey(imGroupId) res, err := model.Redis.ZRangeByScore(model, groupKey, &redis.ZRangeBy{ Min: fmt.Sprintf("%d", time.Now().AddDate(0, 0, -15).Unix()), Max: "+inf", }).Result() if err != nil { return } for _, u := range res { uid, _ := strconv.ParseUint(u, 10, 64) if uid > 0 { userIds = append(userIds) } } return } // 获取最近进入的房间 func GetUserRecentRooms(model *domain.Model, userId uint64) (imGroupIds []string) { userKey := group_k.GetUserEnterRoomUserKey(userId) var err error imGroupIds, err = model.Redis.ZRangeByScore(model, userKey, &redis.ZRangeBy{ Min: fmt.Sprintf("%d", time.Now().AddDate(0, 0, -15).Unix()), Max: "+inf", }).Result() if err != nil { return } return }