96 lines
2.0 KiB
Go
96 lines
2.0 KiB
Go
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
|
|
}
|