50 lines
1013 B
Go
50 lines
1013 B
Go
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)
|
|
}
|
|
}
|