123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- package channel
- import (
- "bytes"
- "strconv"
- "time"
- "go-common/app/interface/main/app-channel/model/feed"
- "go-common/library/log"
- "go-common/library/log/infoc"
- )
- type feedInfoc struct {
- mobiApp string
- device string
- build string
- now string
- pull string
- loginEvent string
- channelID string
- channelName string
- mid string
- buvid string
- displayID string
- feed *feed.Show
- Items []*feed.Item
- isRec string
- topChannel string
- ServerCode string
- }
- type channelOperation struct {
- mobiApp string
- device string
- build string
- now string
- channelID string
- operation string
- mid string
- from string
- }
- // OperationInfoc channel operation infoc
- func (s *Service) OperationInfoc(mobiApp, device, operation string, build, from int, channelID, mid int64, now time.Time) {
- infoc := &channelOperation{
- mobiApp: mobiApp,
- device: device,
- build: strconv.Itoa(build),
- now: now.Format("2006-01-02 15:04:05"),
- channelID: strconv.FormatInt(channelID, 10),
- operation: operation,
- mid: strconv.FormatInt(mid, 10),
- from: strconv.Itoa(from),
- }
- s.infoc(infoc)
- }
- func (s *Service) infoc(i interface{}) {
- select {
- case s.logCh <- i:
- default:
- log.Warn("infocproc chan full")
- }
- }
- func (s *Service) infocproc() {
- const (
- noItem = `[]`
- )
- var (
- msg1 = []byte(`[`)
- msg2 = []byte(`{"goto":"`)
- msg3 = []byte(`","param":"`)
- msg4 = []byte(`","uri":"`)
- msg5 = []byte(`","r_pos":`)
- msg6 = []byte(`,"from_type":"`)
- msg7 = []byte(`"},`)
- msg8 = []byte(`]`)
- buf bytes.Buffer
- list string
- feedInf2 = infoc.New(s.c.FeedInfoc2)
- channelnf2 = infoc.New(s.c.ChannelInfoc2)
- )
- for {
- i, ok := <-s.logCh
- if !ok {
- log.Warn("infoc proc exit")
- return
- }
- var pos int
- switch l := i.(type) {
- case *feedInfoc:
- if l.feed != nil {
- if f := l.feed; len(f.Feed) == 0 && f.Topic == nil {
- list = noItem
- } else {
- buf.Write(msg1)
- if t := f.Topic; t != nil {
- buf.Write(msg2)
- buf.WriteString(t.Goto)
- buf.Write(msg3)
- buf.WriteString(t.Param)
- buf.Write(msg4)
- buf.WriteString(t.URI)
- buf.Write(msg5)
- pos = t.Pos
- buf.WriteString(strconv.Itoa(pos))
- buf.Write(msg6)
- buf.WriteString(t.FromType)
- buf.Write(msg7)
- }
- if items := f.Feed; len(items) == 0 {
- buf.Truncate(buf.Len() - 1)
- } else {
- for _, item := range items {
- buf.Write(msg2)
- buf.WriteString(item.Goto)
- buf.Write(msg3)
- buf.WriteString(item.Param)
- buf.Write(msg4)
- buf.WriteString(item.URI)
- buf.Write(msg5)
- if item.Pos == 0 {
- pos++
- } else {
- pos = item.Pos
- }
- buf.WriteString(strconv.Itoa(pos))
- buf.Write(msg6)
- buf.WriteString(item.FromType)
- buf.Write(msg7)
- }
- buf.Truncate(buf.Len() - 1)
- }
- buf.Write(msg8)
- list = buf.String()
- buf.Reset()
- }
- } else if items := l.Items; len(items) > 0 {
- buf.Write(msg1)
- for _, item := range items {
- buf.Write(msg2)
- buf.WriteString(item.Goto)
- buf.Write(msg3)
- buf.WriteString(item.Param)
- buf.Write(msg4)
- buf.WriteString(item.URI)
- buf.Write(msg5)
- if item.Pos == 0 {
- pos++
- } else {
- pos = item.Pos
- }
- buf.WriteString(strconv.Itoa(pos))
- buf.Write(msg6)
- buf.WriteString(item.FromType)
- buf.Write(msg7)
- }
- buf.Truncate(buf.Len() - 1)
- buf.Write(msg8)
- list = buf.String()
- buf.Reset()
- } else if len(l.Items) == 0 {
- list = noItem
- }
- log.Info("channel_infoc_index(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)_list(%s)", l.mobiApp, l.device, l.build, l.now, l.pull, l.loginEvent,
- l.channelID, l.channelName, l.mid, l.buvid, l.displayID, l.ServerCode, list)
- feedInf2.Info(l.mobiApp, l.device, l.build, l.now, l.pull, l.loginEvent, l.channelID, l.channelName, l.mid, l.buvid, l.displayID,
- list, "9", l.isRec, l.topChannel, l.ServerCode)
- case *channelOperation:
- log.Info("channel_infoc_operation_(%s,%s,%s,%s,%s,%s,%s,%s)", l.mobiApp, l.device, l.build, l.now, l.channelID, l.operation, l.mid, l.from)
- channelnf2.Info(l.mobiApp, l.device, l.build, l.now, l.channelID, l.operation, l.mid, l.from)
- }
- }
- }
|