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.
51 lines
1.2 KiB
51 lines
1.2 KiB
package like |
|
|
|
import ( |
|
"context" |
|
"sync/atomic" |
|
"time" |
|
|
|
"go-common/app/interface/main/activity/model/like" |
|
"go-common/library/log" |
|
) |
|
|
|
// RedDot get hot dot. |
|
func (s *Service) RedDot(c context.Context, mid int64) (redDot *like.RedDot, err error) { |
|
var lastTs int64 |
|
redDot = new(like.RedDot) |
|
if mid <= 0 { |
|
return |
|
} |
|
if lastTime, e := s.dao.CacheRedDotTs(c, mid); e != nil { |
|
log.Error("s.dao.CacheRedDotTs mid(%d) error(%+v)", mid, e) |
|
} else { |
|
lastTs = lastTime |
|
} |
|
if s.newestSubTs > lastTs { |
|
redDot.RedDot = true |
|
} |
|
return |
|
} |
|
|
|
// ClearRetDot clear red dot. |
|
func (s *Service) ClearRetDot(c context.Context, mid int64) (err error) { |
|
if err = s.dao.AddCacheRedDotTs(c, mid, time.Now().Unix()); err != nil { |
|
log.Error("s.dao.AddCacheRedDotTs mid(%d) error(%+v)", mid, err) |
|
} |
|
return |
|
} |
|
|
|
func (s *Service) newestSubTsproc() { |
|
for { |
|
if like, err := s.dao.NewestSubject(context.Background(), like.VIDEOALL); err != nil || like == nil { |
|
log.Error("actNewTsproc s.dao.NewestSubject error(%+v)", err) |
|
time.Sleep(5 * time.Second) |
|
} else { |
|
newTs := like.Ctime.Time().Unix() |
|
if newTs > s.newestSubTs { |
|
atomic.StoreInt64(&s.newestSubTs, newTs) |
|
} |
|
} |
|
time.Sleep(time.Duration(s.c.Interval.NewestSubTsInterval)) |
|
} |
|
}
|
|
|