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.
 
 
 

49 lines
1013 B

package service
import (
"context"
"time"
"go-common/library/log"
)
func (s *Service) checkReadStatus() {
for {
var c = context.TODO()
readSet, err := s.dao.ReadPingSet(c)
if err != nil || len(readSet) == 0 {
time.Sleep(5 * time.Second)
continue
}
now := time.Now().Unix()
for _, read := range readSet {
last, err := s.dao.ReadPing(c, read.Buvid, read.Aid)
if err != nil {
time.Sleep(time.Second)
continue
}
if now-last < 30 {
continue
}
if err = s.dao.DelReadPingSet(c, read); err != nil {
time.Sleep(time.Second)
continue
}
if last == 0 {
log.Error("阅读心跳没取到:buvid(%s) aid(%d)", read.Buvid, read.Aid)
continue
}
read.EndTime = last
log.Info("上传用户阅读记录至数据中心: %+v", read)
s.ReadInfoc(read.Aid, read.Mid, read.Buvid, read.IP, read.EndTime-read.StartTime, read.From)
}
return
}
}
func (s *Service) checkReadStatusProc() {
for {
s.checkReadStatus()
time.Sleep(time.Minute)
}
}