88 lines
1.7 KiB
Go
88 lines
1.7 KiB
Go
|
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)
|
||
|
}
|