go-common/app/interface/bbq/app-bbq/server/http/sv.go
2019-04-22 18:49:16 +08:00

167 lines
3.4 KiB
Go

package http
import (
"strconv"
"strings"
v1 "go-common/app/interface/bbq/app-bbq/api/http/v1"
"go-common/app/interface/bbq/app-bbq/model"
video "go-common/app/service/bbq/video/api/grpc/v1"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"github.com/pkg/errors"
)
// @params SvListReq
// @router get /bbq/app-bbq/sv/list/
// @response VideoResponse
func svList(c *bm.Context) {
b, _ := c.Get("BBQBase")
mid, _ := c.Get("mid")
arg := &v1.SvListReq{}
if err := c.Bind(arg); err != nil {
errors.Wrap(err, "参数验证失败")
return
}
arg.Base = b.(*v1.Base)
if mid != nil {
arg.MID = mid.(int64)
} else {
arg.MID = 0
}
//获取deviceID
deviceID := c.Request.Form.Get("device_id")
log.Info("sv list Context [%+v]", c.Request.Header)
log.Info("sv list Base [%+v]", arg.Base)
arg.RemoteIP = metadata.String(c, metadata.RemoteIP)
resp, err := srv.SvList(c, arg.PageSize, arg.MID, arg.Base, deviceID)
c.JSON(resp, err)
// 埋点
if err != nil {
return
}
var svidList []int64
for _, v := range resp {
svidList = append(svidList, v.SVID)
}
ext := struct {
Svids []int64 `json:"svid_list"`
}{
Svids: svidList,
}
uiLog(c, model.ActionRecommend, ext)
}
func svDetail(c *bm.Context) {
mid := int64(0)
if res, ok := c.Get("mid"); ok {
mid = res.(int64)
}
arg := &v1.SvDetailReq{}
if err := c.Bind(arg); err != nil {
errors.Wrap(err, "参数验证失败")
return
}
c.JSON(srv.SvDetail(c, arg.SVID, mid))
}
//svStatistics 视频互动数据
func svStatistics(c *bm.Context) {
arg := new(model.ParamStatistic)
if err := c.Bind(arg); err != nil {
errors.Wrap(err, "参数验证失败")
return
}
ids := strings.Split(arg.SVIDs, ",")
if len(ids) == 0 {
err := ecode.RequestErr
errors.Wrap(err, "svid解析为空")
return
}
var svids []int64
for _, v := range ids {
id, err := strconv.ParseInt(v, 10, 64)
if err != nil {
errors.Wrap(err, "svid解析错误")
return
}
svids = append(svids, id)
}
var mid int64
if res, ok := c.Get("mid"); ok {
mid = res.(int64)
}
c.JSON(srv.SvStatistics(c, mid, svids))
}
func svPlayList(c *bm.Context) {
dev, _ := c.Get("device")
mid, _ := c.Get("mid")
arg := &v1.PlayListReq{}
if err := c.Bind(arg); err != nil {
errors.Wrap(err, "参数验证失败")
return
}
arg.Device = dev.(*bm.Device)
if mid != nil {
arg.MID = mid.(int64)
} else {
arg.MID = 0
}
arg.RemoteIP = metadata.String(c, metadata.RemoteIP)
cidStr := strings.Split(arg.CIDs, ",")
var cids []int64
for _, v := range cidStr {
cid, err := strconv.ParseInt(v, 10, 64)
if err != nil {
errors.Wrap(err, "cid解析错误")
return
}
cids = append(cids, cid)
}
c.JSON(srv.SvCPlays(c, cids, arg.MID))
}
func svRelList(c *bm.Context) {
b, _ := c.Get("BBQBase")
mid, _ := c.Get("mid")
arg := &v1.SvRelReq{}
if err := c.Bind(arg); err != nil {
errors.Wrap(err, "参数验证失败")
return
}
base := b.(*v1.Base)
if mid != nil {
arg.MID = mid.(int64)
} else {
arg.MID = 0
}
arg.BUVID = base.BUVID
arg.APP = base.App
arg.APPVersion = base.Version
arg.QueryID = base.QueryID
arg.Limit = 15
arg.Offset = 0
c.JSON(srv.SvRelRec(c, arg))
}
func svDel(c *bm.Context) {
arg := new(video.VideoDeleteRequest)
if err := c.Bind(arg); err != nil {
return
}
if mid, _ := c.Get("mid"); mid != nil {
arg.UpMid = mid.(int64)
} else {
arg.UpMid = 0
}
c.JSON(srv.SvDel(c, arg))
}