You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.0 KiB
95 lines
2.0 KiB
package dao |
|
|
|
import ( |
|
"context" |
|
"time" |
|
|
|
"go-common/library/cache/redis" |
|
) |
|
|
|
// AddRctFollower is |
|
func (d *Dao) AddRctFollower(c context.Context, mid, fid int64) error { |
|
key := recentFollower(fid) |
|
conn := d.redis.Get(c) |
|
defer conn.Close() |
|
if err := conn.Send("ZADD", key, time.Now().Unix(), mid); err != nil { |
|
return err |
|
} |
|
if err := conn.Send("EXPIRE", key, d.UnreadDuration); err != nil { |
|
return err |
|
} |
|
if err := conn.Flush(); err != nil { |
|
return err |
|
} |
|
return nil |
|
} |
|
|
|
// DelRctFollower is |
|
func (d *Dao) DelRctFollower(c context.Context, mid, fid int64) error { |
|
key := recentFollower(fid) |
|
conn := d.redis.Get(c) |
|
defer conn.Close() |
|
_, err := conn.Do("ZREM", key, mid) |
|
return err |
|
} |
|
|
|
// RctFollowerCount is |
|
func (d *Dao) RctFollowerCount(ctx context.Context, fid int64) (int64, error) { |
|
key := recentFollower(fid) |
|
conn := d.redis.Get(ctx) |
|
defer conn.Close() |
|
count, err := redis.Int64(conn.Do("ZCARD", key)) |
|
if err != nil { |
|
return 0, err |
|
} |
|
return count, nil |
|
} |
|
|
|
// EmptyRctFollower is |
|
func (d *Dao) EmptyRctFollower(ctx context.Context, fid int64) error { |
|
key := recentFollower(fid) |
|
conn := d.redis.Get(ctx) |
|
defer conn.Close() |
|
_, err := conn.Do("DEL", key) |
|
return err |
|
} |
|
|
|
// RctFollowerNotify is |
|
func (d *Dao) RctFollowerNotify(c context.Context, fid int64) (bool, error) { |
|
key := recentFollowerNotify(fid) |
|
conn := d.redis.Get(c) |
|
defer conn.Close() |
|
flagi, err := redis.Int64(conn.Do("HGET", key, fid)) |
|
if err != nil { |
|
if err == redis.ErrNil { |
|
return false, nil |
|
} |
|
return false, err |
|
} |
|
flag := false |
|
if flagi > 0 { |
|
flag = true |
|
} |
|
return flag, err |
|
} |
|
|
|
// SetRctFollowerNotify is |
|
func (d *Dao) SetRctFollowerNotify(c context.Context, fid int64, flag bool) error { |
|
key := recentFollowerNotify(fid) |
|
flagi := 0 |
|
if flag { |
|
flagi = 1 |
|
} |
|
conn := d.redis.Get(c) |
|
defer conn.Close() |
|
if err := conn.Send("HSET", key, fid, flagi); err != nil { |
|
return err |
|
} |
|
if err := conn.Send("EXPIRE", key, d.UnreadDuration); err != nil { |
|
return err |
|
} |
|
if err := conn.Flush(); err != nil { |
|
return err |
|
} |
|
return nil |
|
}
|
|
|