102 lines
2.1 KiB
Go
102 lines
2.1 KiB
Go
package region
|
|
|
|
import (
|
|
"bytes"
|
|
"strconv"
|
|
"time"
|
|
|
|
"go-common/app/interface/main/app-show/conf"
|
|
"go-common/library/log"
|
|
binfoc "go-common/library/log/infoc"
|
|
)
|
|
|
|
type infoc struct {
|
|
mid string
|
|
rid string
|
|
tid string
|
|
pn string
|
|
hotavid []int64
|
|
newavid []int64
|
|
now string
|
|
}
|
|
|
|
// Infoc write data for Hadoop do analytics
|
|
func (s *Service) infoc(mid int64, hotavid, newavid []int64, rid, tid int, pull bool, now time.Time) {
|
|
var pn string
|
|
if pull {
|
|
pn = "1"
|
|
} else {
|
|
pn = "2"
|
|
}
|
|
select {
|
|
case s.logCh <- infoc{strconv.FormatInt(mid, 10), strconv.Itoa(rid), strconv.Itoa(tid), pn, hotavid, newavid, strconv.FormatInt(now.Unix(), 10)}:
|
|
default:
|
|
log.Warn("infoc log buffer is full")
|
|
}
|
|
}
|
|
|
|
// writeInfoc
|
|
func (s *Service) infocproc() {
|
|
const (
|
|
noItem1 = `{"section":{"rid":`
|
|
noItem2 = `,"tagid":`
|
|
noItem3 = `,"mid":`
|
|
noItem4 = `,"pn":`
|
|
noItem5 = `,"hot_avids":[],"item_avids":[]}}`
|
|
)
|
|
var (
|
|
msg1 = []byte(`{"section":{"rid":`)
|
|
msg2 = []byte(`,"tagid":`)
|
|
msg3 = []byte(`,"mid":`)
|
|
msg4 = []byte(`,"pn":`)
|
|
msg5 = []byte(`,"hot_avids":[`)
|
|
msg6 = []byte(`,`)
|
|
msg7 = []byte(`],"item_avids":[`)
|
|
msg8 = []byte(`,`)
|
|
msg9 = []byte(`]}}`)
|
|
inf2 = binfoc.New(conf.Conf.FeedInfoc2)
|
|
buf bytes.Buffer
|
|
list string
|
|
)
|
|
for {
|
|
i, ok := <-s.logCh
|
|
if !ok {
|
|
log.Warn("infoc proc exit")
|
|
return
|
|
}
|
|
switch v := i.(type) {
|
|
case infoc:
|
|
if len(v.newavid) > 0 {
|
|
buf.Write(msg1)
|
|
buf.WriteString(v.rid)
|
|
buf.Write(msg2)
|
|
buf.WriteString(v.tid)
|
|
buf.Write(msg3)
|
|
buf.WriteString(v.mid)
|
|
buf.Write(msg4)
|
|
buf.WriteString(v.pn)
|
|
buf.Write(msg5)
|
|
for _, v := range v.hotavid {
|
|
buf.WriteString(strconv.FormatInt(v, 10))
|
|
buf.Write(msg6)
|
|
}
|
|
if len(v.hotavid) > 0 {
|
|
buf.Truncate(buf.Len() - 1)
|
|
}
|
|
buf.Write(msg7)
|
|
for _, v := range v.newavid {
|
|
buf.WriteString(strconv.FormatInt(v, 10))
|
|
buf.Write(msg8)
|
|
}
|
|
buf.Truncate(buf.Len() - 1)
|
|
buf.Write(msg9)
|
|
list = buf.String()
|
|
buf.Reset()
|
|
} else {
|
|
list = noItem1 + v.rid + noItem2 + v.tid + noItem3 + v.mid + noItem4 + v.pn + noItem5
|
|
}
|
|
inf2.Info(v.now, list)
|
|
}
|
|
}
|
|
}
|