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
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) |
|
} |
|
}
|
|
|