58 lines
1.0 KiB
Go
58 lines
1.0 KiB
Go
package service
|
|
|
|
import (
|
|
"go-common/library/log"
|
|
binfoc "go-common/library/log/infoc"
|
|
"go-common/library/stat/prom"
|
|
)
|
|
|
|
// 用户阅读专栏时长上报
|
|
type readInfo struct {
|
|
aid int64
|
|
mid int64
|
|
buvid string
|
|
ip string
|
|
duration int64
|
|
from string
|
|
}
|
|
|
|
// ReadInfoc .
|
|
func (s *Service) ReadInfoc(aid int64, mid int64, buvid string, ip string, duration int64, from string) {
|
|
s.infoc(readInfo{
|
|
aid: aid,
|
|
mid: mid,
|
|
buvid: buvid,
|
|
ip: ip,
|
|
duration: duration,
|
|
from: from,
|
|
})
|
|
}
|
|
|
|
func (s *Service) infoc(i interface{}) {
|
|
select {
|
|
case s.logCh <- i:
|
|
default:
|
|
log.Warn("infocproc chan full")
|
|
}
|
|
}
|
|
|
|
// writeInfoc
|
|
func (s *Service) infocproc() {
|
|
var (
|
|
readInfoc = binfoc.New(s.c.ReadInfoc)
|
|
)
|
|
for {
|
|
i, ok := <-s.logCh
|
|
if !ok {
|
|
log.Warn("infoc proc exit")
|
|
return
|
|
}
|
|
prom.BusinessInfoCount.State("infoc_channel", int64(len(s.logCh)))
|
|
switch l := i.(type) {
|
|
case readInfo:
|
|
readInfoc.Info(l.aid, l.mid, l.buvid, l.ip, l.duration, l.from)
|
|
log.Info("infocproc readInfoc param(%+v)", l)
|
|
}
|
|
}
|
|
}
|