123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package http
- import (
- "fmt"
- "strings"
- "time"
- "go-common/app/interface/bbq/common/model"
- "go-common/library/log"
- "go-common/library/log/infoc"
- bm "go-common/library/net/http/blademaster"
- "go-common/library/net/trace"
- jsoniter "github.com/json-iterator/go"
- )
- // UILog .
- type UILog struct {
- infoc *infoc.Infoc
- }
- // New .
- func New(c *infoc.Config) *UILog {
- return &UILog{
- infoc: infoc.New(c),
- }
- }
- // Infoc .
- func (u *UILog) Infoc(ctx *bm.Context, action int, ext interface{}) {
- arg := new(model.Base)
- ctx.Bind(arg)
- log.V(5).Info("uilog [%+v]", arg)
- if action == model.ActionPlay {
- // data type 1 心跳上报 2 暂停 3 home
- switch arg.DataType {
- case 2:
- action = model.ActionPlayPause
- case 3:
- action = model.ActionPlayOut
- }
- }
- // interface base field
- app := arg.App
- client := arg.Client
- version := arg.Version
- channel := arg.Channel
- loc := arg.Location
- cip := ctx.Request.RemoteAddr
- if ips := ctx.Request.Header.Get("X-Forwarded-For"); ips != "" {
- ipArr := strings.Split(ips, ",")
- if len(ipArr) > 0 {
- cip = ipArr[0]
- }
- }
- // session id
- sid, _ := ctx.Get("SessionID")
- // trace id
- tracer, _ := trace.FromContext(ctx.Context)
- tid := tracer
- // recsys query id
- qid := arg.QueryID
- if action == model.ActionRecommend {
- qid = fmt.Sprintf("%s", tracer)
- }
- // video
- svid := arg.SVID
- // user
- var mid int64
- if tmp, ok := ctx.Get("mid"); ok {
- mid = tmp.(int64)
- }
- buvid := ctx.Request.Header.Get("Buvid")
- totalDuration := arg.TotalDuration
- playDuration := arg.PlayDuration
- ctime := time.Now().Unix()
- b, _ := jsoniter.Marshal(ext)
- u.infoc.Info(client, app, version, channel, loc, cip, qid, sid, tid, svid, mid, buvid, action, totalDuration, playDuration, ctime, string(b), arg.From, arg.FromID, arg.PFrom, arg.PFromID)
- }
|