123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- package view
- import (
- "bytes"
- "fmt"
- "strconv"
- "time"
- "go-common/app/interface/main/app-intl/conf"
- "go-common/app/interface/main/app-intl/model/view"
- "go-common/library/ecode"
- "go-common/library/log"
- "go-common/library/log/infoc"
- )
- // viewInfoc struct
- type viewInfoc struct {
- mid string
- client string
- build string
- buvid string
- disid string
- ip string
- api string
- now string
- aid string
- err string
- from string
- trackid string
- autoplay string
- }
- // relateInfoc struct
- type relateInfoc struct {
- mid string
- aid string
- client string
- buvid string
- disid string
- ip string
- api string
- now string
- isRcmmnd int8
- rls []*view.Relate
- trackid string
- build string
- returnCode string
- userFeature string
- from string
- }
- //ViewInfoc view infoc
- func (s *Service) ViewInfoc(mid int64, plat int, trackid, aid, ip, api, build, buvid, disid, from string, now time.Time, err error, autoplay int) {
- s.infoc(viewInfoc{strconv.FormatInt(mid, 10), strconv.Itoa(plat), build, buvid, disid, ip, api, strconv.FormatInt(now.Unix(), 10), aid, strconv.Itoa(ecode.Cause(err).Code()), from, trackid, strconv.Itoa(autoplay)})
- }
- // RelateInfoc Relate Infoc
- func (s *Service) RelateInfoc(mid, aid int64, plat int, trackid, build, buvid, disid, ip, api, returnCode, userFeature, from string, rls []*view.Relate, now time.Time, isRec int8) {
- s.infoc(relateInfoc{strconv.FormatInt(mid, 10), strconv.FormatInt(aid, 10), strconv.Itoa(plat), buvid, disid, ip, api, strconv.FormatInt(now.Unix(), 10), isRec, rls, trackid, build, returnCode, userFeature, from})
- }
- // infoc is.
- func (s *Service) infoc(i interface{}) {
- select {
- case s.inCh <- i:
- default:
- log.Warn("cacheproc chan full")
- }
- }
- // WriteViewInfoc Write View Infoc
- func (s *Service) infocproc() {
- const (
- noItem = `{"section":{"id":"相关视频","pos":1,"from_item":"%s","items":[]}}`
- )
- var (
- msg1 = []byte(`{"section":{"id":"相关视频","pos":1,"from_item":"`)
- msg2 = []byte(`","items":[`)
- msg3 = []byte(`{"id":`)
- msg4 = []byte(`,"pos":`)
- msg5 = []byte(`,"goto":"`)
- msg6 = []byte(`","from":"`)
- msg7 = []byte(`","source":"`)
- msg8 = []byte(`","av_feature":`)
- msg9 = []byte(`,"type":1,"url":""},`)
- infView = infoc.New(conf.Conf.ViewInfoc)
- infRelate = infoc.New(conf.Conf.RelateInfoc)
- buf bytes.Buffer
- list string
- )
- for {
- i := <-s.inCh
- switch v := i.(type) {
- case viewInfoc:
- infView.Info(v.ip, v.now, v.api, v.buvid, v.mid, v.client, v.aid, v.disid, v.err, v.from, v.build, v.trackid, v.autoplay)
- case relateInfoc:
- if len(v.rls) > 0 {
- buf.Write(msg1)
- buf.WriteString(v.aid)
- buf.Write(msg2)
- for key, value := range v.rls {
- buf.Write(msg3)
- buf.WriteString(strconv.Itoa(int(value.Aid)))
- buf.Write(msg4)
- buf.WriteString(strconv.Itoa(key + 1))
- buf.Write(msg5)
- buf.WriteString(value.Goto)
- buf.Write(msg6)
- buf.WriteString(value.From)
- buf.Write(msg7)
- buf.WriteString(value.Source)
- buf.Write(msg8)
- if value.AvFeature != nil {
- buf.Write(value.AvFeature)
- } else {
- buf.Write([]byte(`""`))
- }
- buf.Write(msg9)
- }
- buf.Truncate(buf.Len() - 1)
- buf.WriteString(`]}}`)
- list = buf.String()
- buf.Reset()
- } else {
- list = fmt.Sprintf(noItem, v.aid)
- }
- infRelate.Info(v.ip, v.now, v.api, v.buvid, v.mid, v.client, "2", list, v.disid, v.isRcmmnd, v.trackid, v.build, v.returnCode, v.userFeature, v.from)
- default:
- log.Warn("infocproc can't process the type")
- }
- }
- }
|