Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"feed.go",
"http.go",
"local.go",
"playurl.go",
"search.go",
"view.go",
],
importpath = "go-common/app/interface/main/app-intl/http",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/app-card/model:go_default_library",
"//app/interface/main/app-card/model/card:go_default_library",
"//app/interface/main/app-card/model/card/ai:go_default_library",
"//app/interface/main/app-intl/conf:go_default_library",
"//app/interface/main/app-intl/model:go_default_library",
"//app/interface/main/app-intl/model/feed:go_default_library",
"//app/interface/main/app-intl/model/player:go_default_library",
"//app/interface/main/app-intl/model/view:go_default_library",
"//app/interface/main/app-intl/service/feed:go_default_library",
"//app/interface/main/app-intl/service/player:go_default_library",
"//app/interface/main/app-intl/service/search:go_default_library",
"//app/interface/main/app-intl/service/view:go_default_library",
"//library/conf/env:go_default_library",
"//library/ecode:go_default_library",
"//library/log:go_default_library",
"//library/net/http/blademaster:go_default_library",
"//library/net/http/blademaster/middleware/auth:go_default_library",
"//library/net/http/blademaster/middleware/verify:go_default_library",
"//library/net/metadata:go_default_library",
"//library/stat/prom:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@@ -0,0 +1,69 @@
package http
import (
"time"
cdm "go-common/app/interface/main/app-card/model"
"go-common/app/interface/main/app-card/model/card"
"go-common/app/interface/main/app-card/model/card/ai"
"go-common/app/interface/main/app-intl/model"
"go-common/app/interface/main/app-intl/model/feed"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
const (
_headerBuvid = "Buvid"
_headerDisplayID = "Display-ID"
_headerDeviceID = "Device-ID"
)
func feedIndex(c *bm.Context) {
var mid int64
if midInter, ok := c.Get("mid"); ok {
mid = midInter.(int64)
}
header := c.Request.Header
buvid := header.Get(_headerBuvid)
disid := header.Get(_headerDisplayID)
dvcid := header.Get(_headerDeviceID)
param := &feed.IndexParam{}
// get params
if err := c.Bind(param); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
column, ok := cdm.Columnm[param.Column]
if !ok {
c.JSON(nil, ecode.RequestErr)
return
}
// 兼容老的style逻辑3为新单列
style := int(cdm.Columnm[param.Column])
if style == 1 {
style = 3
}
// check params
plat := model.Plat(param.MobiApp, param.Device)
now := time.Now()
// index
data, userFeature, isRcmd, newUser, code, autoPlay, feedclean, autoPlayInfoc, err := feedSvc.Index(c, buvid, mid, plat, param, now, style)
autoplayCard := struct {
Column cdm.ColumnStatus `json:"column"`
AutoplayCard int8 `json:"autoplay_card"`
FeedCleanAbtest int8 `json:"feed_clean_abtest"`
}{Column: column, AutoplayCard: autoPlay, FeedCleanAbtest: feedclean}
c.JSON(struct {
Item []card.Handler `json:"items"`
Config interface{} `json:"config"`
}{Item: data, Config: autoplayCard}, err)
if err != nil {
return
}
// infoc
items := make([]*ai.Item, 0, len(data))
for _, item := range data {
items = append(items, item.Get().Rcmd)
}
feedSvc.IndexInfoc(c, mid, plat, param.Build, buvid, disid, "/x/intl/feed/index", userFeature, style, code, items, isRcmd, param.Pull, newUser, now, "", dvcid, param.Network, param.Flush, autoPlayInfoc, param.DeviceType)
}

View File

@@ -0,0 +1,67 @@
package http
import (
"go-common/app/interface/main/app-intl/conf"
"go-common/app/interface/main/app-intl/service/feed"
"go-common/app/interface/main/app-intl/service/player"
"go-common/app/interface/main/app-intl/service/search"
"go-common/app/interface/main/app-intl/service/view"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/auth"
"go-common/library/net/http/blademaster/middleware/verify"
)
var (
// depend service
authSvc *auth.Auth
verifySvc *verify.Verify
// self service
feedSvc *feed.Service
viewSvc *view.Service
playerSvc *player.Service
searchSvc *search.Service
)
// Init is
func Init(c *conf.Config) {
initService(c)
// init external router
engineOut := bm.DefaultServer(c.BM.Outer)
outerRouter(engineOut)
// init outer server
if err := engineOut.Start(); err != nil {
log.Error("engineOut.Start() error(%v)", err)
panic(err)
}
}
// initService init services.
func initService(c *conf.Config) {
authSvc = auth.New(nil)
verifySvc = verify.New(nil)
// init self service
feedSvc = feed.New(c)
viewSvc = view.New(c)
playerSvc = player.New(c)
searchSvc = search.New(c)
}
// outerRouter init outer router api path.
func outerRouter(e *bm.Engine) {
e.Ping(ping)
feed := e.Group("/x/intl/feed")
feed.GET("/index", authSvc.GuestMobile, feedIndex)
view := e.Group("/x/intl/view")
view.GET("", verifySvc.Verify, authSvc.GuestMobile, viewIndex)
view.GET("/page", verifySvc.Verify, authSvc.GuestMobile, viewPage)
e.GET("/x/intl/playurl", verifySvc.Verify, authSvc.GuestMobile, playurl)
search := e.Group("/x/intl/search")
search.GET("", authSvc.GuestMobile, searchAll)
search.GET("/type", authSvc.GuestMobile, searchByType)
search.GET("/suggest3", authSvc.GuestMobile, suggest3)
}

View File

@@ -0,0 +1,9 @@
package http
import (
bm "go-common/library/net/http/blademaster"
)
// ping check server ok.
func ping(c *bm.Context) {
}

View File

@@ -0,0 +1,52 @@
package http
import (
"go-common/app/interface/main/app-intl/model"
"go-common/app/interface/main/app-intl/model/player"
"go-common/library/conf/env"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/stat/prom"
)
var errCount = prom.BusinessErrCount
func playurl(c *bm.Context) {
params := &player.Param{}
if err := c.Bind(params); err != nil {
return
}
var mid int64
if midInter, ok := c.Get("mid"); ok {
mid = midInter.(int64)
}
header := c.Request.Header
buvid := header.Get("Buvid")
fp := header.Get("X-BVC-FINGERPRINT")
if params.AID <= 0 {
errCount.Incr("no_aid")
log.Warn("juranmeichuan aid %s", c.Request.URL.Path+"?"+c.Request.Form.Encode())
if env.DeployEnv != env.DeployEnvProd {
c.JSON(nil, ecode.RequestErr)
return
}
}
if params.CID <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
if params.Qn < 0 {
c.JSON(nil, ecode.RequestErr)
return
}
if params.Npcybs < 0 {
c.JSON(nil, ecode.RequestErr)
return
}
if params.Otype != "json" && params.Otype != "xml" {
params.Otype = "json"
}
plat := model.Plat(params.MobiApp, params.Device)
c.JSON(playerSvc.Playurl(c, mid, params, plat, buvid, fp))
}

View File

@@ -0,0 +1,165 @@
package http
import (
"strconv"
"time"
"go-common/app/interface/main/app-intl/model"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
const _keyWordLen = 50
func searchAll(c *bm.Context) {
var (
build int
mid int64
pn, ps int
err error
)
params := c.Request.Form
header := c.Request.Header
// params
mobiApp := params.Get("mobi_app")
device := params.Get("device")
ridStr := params.Get("rid")
keyword := params.Get("keyword")
highlightStr := params.Get("highlight")
lang := params.Get("lang")
duration := params.Get("duration")
order := params.Get("order")
filtered := params.Get("filtered")
platform := params.Get("platform")
zoneidStr := params.Get("zoneid")
fromSource := params.Get("from_source")
recommend := params.Get("recommend")
// header
buvid := header.Get("Buvid")
// check params
if keyword == "" || len([]rune(keyword)) > _keyWordLen {
c.JSON(nil, ecode.RequestErr)
return
}
if build, err = strconv.Atoi(params.Get("build")); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
zoneid, _ := strconv.ParseInt(zoneidStr, 10, 64)
rid, _ := strconv.Atoi(ridStr)
highlight, _ := strconv.Atoi(highlightStr)
// page and size
if pn, _ = strconv.Atoi(params.Get("pn")); pn < 1 {
pn = 1
}
if ps, _ = strconv.Atoi(params.Get("ps")); ps < 1 || ps > 20 {
ps = 20
}
if midInter, ok := c.Get("mid"); ok {
mid = midInter.(int64)
}
switch order {
case "default", "":
order = "totalrank"
case "view":
order = "click"
case "danmaku":
order = "dm"
}
if duration == "" {
duration = "0"
}
if recommend == "" || recommend != "1" {
recommend = "0"
}
plat := model.Plat(mobiApp, device)
c.JSON(searchSvc.Search(c, mid, zoneid, mobiApp, device, platform, buvid, keyword, duration, order, filtered, lang, fromSource, recommend, plat, rid, highlight, build, pn, ps, time.Now()))
}
func searchByType(c *bm.Context) {
var (
build int
mid int64
pn, ps int
typeV string
err error
)
params := c.Request.Form
header := c.Request.Header
// params
mobiApp := params.Get("mobi_app")
device := params.Get("device")
sType := params.Get("type")
keyword := params.Get("keyword")
filtered := params.Get("filtered")
zoneidStr := params.Get("zoneid")
order := params.Get("order")
platform := params.Get("platform")
highlightStr := params.Get("highlight")
categoryIDStr := params.Get("category_id")
userTypeStr := params.Get("user_type")
orderSortStr := params.Get("order_sort")
// header
buvid := header.Get("Buvid")
if keyword == "" || len([]rune(keyword)) > _keyWordLen {
c.JSON(nil, ecode.RequestErr)
return
}
if build, err = strconv.Atoi(params.Get("build")); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
userType, _ := strconv.Atoi(userTypeStr)
orderSort, _ := strconv.Atoi(orderSortStr)
zoneid, _ := strconv.ParseInt(zoneidStr, 10, 64)
categoryID, _ := strconv.Atoi(categoryIDStr)
highlight, _ := strconv.Atoi(highlightStr)
// page and size
if pn, _ = strconv.Atoi(params.Get("pn")); pn < 1 {
pn = 1
}
if ps, _ = strconv.Atoi(params.Get("ps")); ps < 1 || ps > 20 {
ps = 20
}
if midInter, ok := c.Get("mid"); ok {
mid = midInter.(int64)
}
switch sType {
case "2":
typeV = "upper"
case "6":
typeV = "article"
case "7":
typeV = "season2"
case "8":
typeV = "movie2"
case "9":
typeV = "tag"
}
plat := model.Plat(mobiApp, device)
c.JSON(searchSvc.SearchByType(c, mid, zoneid, mobiApp, device, platform, buvid, typeV, keyword, filtered, order, plat, build, highlight, categoryID, userType, orderSort, pn, ps, time.Now()))
}
// suggest3 search suggest data from newest api.
func suggest3(c *bm.Context) {
var (
build int
mid int64
err error
)
params := c.Request.Form
header := c.Request.Header
mobiApp := params.Get("mobi_app")
term := params.Get("keyword")
highlight, _ := strconv.Atoi(params.Get("highlight"))
if midInter, ok := c.Get("mid"); ok {
mid = midInter.(int64)
}
if build, err = strconv.Atoi(params.Get("build")); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
buvid := header.Get(_headerBuvid)
platform := params.Get("platform")
c.JSON(searchSvc.Suggest3(c, mid, platform, buvid, term, build, highlight, mobiApp, time.Now()), nil)
}

View File

@@ -0,0 +1,157 @@
package http
import (
"strconv"
"time"
"go-common/app/interface/main/app-intl/model"
"go-common/app/interface/main/app-intl/model/view"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
)
const (
_viewPath = "/x/intl/view"
_viewPagePath = "/x/intl/view/page"
)
var (
// _dislike is.
_dislike = []*view.Dislike{
{
ID: 5,
Name: "标题党/封面党",
},
{
ID: 6,
Name: "内容质量差",
},
{
ID: 7,
Name: "内容/封面令人不适",
},
{
ID: 8,
Name: "营销广告",
},
}
)
// viewIndex view handler
func viewIndex(c *bm.Context) {
var (
mid, aid, movieID int64
err error
)
params := c.Request.Form
header := c.Request.Header
// get params
aidStr := params.Get("aid")
movieidStr := params.Get("movie_id")
mobiApp := params.Get("mobi_app")
device := params.Get("device")
ak := params.Get("access_key")
buildStr := params.Get("build")
from := params.Get("from")
trackid := params.Get("trackid")
network := params.Get("network")
adExtra := params.Get("ad_extra")
locale := params.Get("locale")
// check params
if aidStr == "" && movieidStr == "" {
c.JSON(nil, ecode.RequestErr)
return
}
if aidStr != "" && aidStr != "0" {
if aid, err = strconv.ParseInt(aidStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
} else if movieidStr != "" && movieidStr != "0" {
if movieID, err = strconv.ParseInt(movieidStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
if aid < 1 && movieID < 1 {
c.JSON(nil, ecode.RequestErr)
return
}
build, err := strconv.Atoi(buildStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
plat := model.Plat(mobiApp, device)
buvid := header.Get("Buvid")
disid := header.Get("Display-ID")
cdnIP := header.Get("X-Cache-Server-Addr")
if midInter, ok := c.Get("mid"); ok {
mid = midInter.(int64)
}
autoplay, _ := strconv.Atoi(params.Get("autoplay"))
now := time.Now()
// view
ip := metadata.String(c, metadata.RemoteIP)
viewSvc.ViewInfoc(mid, int(plat), trackid, aidStr, ip, _viewPath, buildStr, buvid, disid, from, now, err, autoplay)
data, err := viewSvc.View(c, mid, aid, movieID, plat, build, ak, mobiApp, device, buvid, cdnIP, network, adExtra, from, now, locale)
if err != nil {
c.JSON(nil, err)
return
}
data.Dislikes = _dislike
c.JSON(data, nil)
viewSvc.RelateInfoc(mid, aid, int(plat), trackid, buildStr, buvid, disid, ip, _viewPath, data.ReturnCode, data.UserFeature, from, data.Relates, now, data.IsRec)
}
// viewPage view page handler.
func viewPage(c *bm.Context) {
var (
mid, aid int64
build int
err error
)
params := c.Request.Form
header := c.Request.Header
// get params
aidStr := params.Get("aid")
mobiApp := params.Get("mobi_app")
device := params.Get("device")
ak := params.Get("access_key")
buildStr := params.Get("build")
from := params.Get("from")
trackid := params.Get("trackid")
locale := params.Get("locale")
// check params
if aid, err = strconv.ParseInt(aidStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if aid < 1 {
c.JSON(nil, ecode.RequestErr)
return
}
if build, err = strconv.Atoi(buildStr); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
plat := model.Plat(mobiApp, device)
buvid := header.Get("Buvid")
disid := header.Get("Display-ID")
cdnIP := header.Get("X-Cache-Server-Addr")
if midInter, ok := c.Get("mid"); ok {
mid = midInter.(int64)
}
autoplay, _ := strconv.Atoi(params.Get("autoplay"))
ip := metadata.String(c, metadata.RemoteIP)
now := time.Now()
// view page
viewSvc.ViewInfoc(mid, int(plat), trackid, aidStr, ip, _viewPagePath, buildStr, buvid, disid, from, now, err, autoplay)
data, err := viewSvc.ViewPage(c, mid, aid, 0, plat, build, ak, mobiApp, device, cdnIP, false, now, locale)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}