Initial commit

This commit is contained in:
Donny
2019-04-22 20:46:32 +08:00
commit 49ab8aadd1
25441 changed files with 4055000 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"channel.go",
"full.go",
"http.go",
"pgc.go",
"recruit.go",
"share.go",
"ugc.go",
"wechat.go",
],
importpath = "go-common/app/interface/main/web-goblin/http",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/web-goblin/conf:go_default_library",
"//app/interface/main/web-goblin/model/web:go_default_library",
"//app/interface/main/web-goblin/service/share:go_default_library",
"//app/interface/main/web-goblin/service/web:go_default_library",
"//app/interface/main/web-goblin/service/wechat: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",
],
)
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,23 @@
package http
import bm "go-common/library/net/http/blademaster"
func channel(c *bm.Context) {
var (
mid int64
buvid string
)
v := new(struct {
ID int64 `form:"id" validate:"min=1"`
})
if err := c.Bind(v); err != nil {
return
}
if midInter, ok := c.Get("mid"); ok {
mid = midInter.(int64)
}
if ck, err := c.Request.Cookie("buvid3"); err == nil {
buvid = ck.Value
}
c.JSON(srvWeb.Channel(c, v.ID, mid, buvid))
}

View File

@@ -0,0 +1,38 @@
package http
import (
"time"
webmdl "go-common/app/interface/main/web-goblin/model/web"
bm "go-common/library/net/http/blademaster"
)
const (
_appName = `哔哩哔哩`
_packageName = `tv.danmaku.bili`
)
func fullshort(c *bm.Context) {
var (
err error
items []*webmdl.Mi
)
v := new(struct {
Pn int64 `form:"pn" validate:"min=1"`
Ps int64 `form:"ps" validate:"min=1,max=50"`
Source string `form:"bsource"`
})
if err = c.Bind(v); err != nil {
return
}
if items, err = srvWeb.FullShort(c, v.Pn, v.Ps, v.Source); err != nil {
c.JSON(nil, err)
return
}
data := make(map[string]interface{}, 4)
data["app_name"] = _appName
data["package_name"] = _packageName
data["update_time"] = time.Now().Format("2006-01-02 15:04:05")
data["shortvideos"] = items
c.JSONMap(data, nil)
}

View File

@@ -0,0 +1,77 @@
package http
import (
"net/http"
"go-common/app/interface/main/web-goblin/conf"
"go-common/app/interface/main/web-goblin/service/share"
"go-common/app/interface/main/web-goblin/service/web"
"go-common/app/interface/main/web-goblin/service/wechat"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/auth"
)
var (
srvWeb *web.Service
srvShare *share.Service
srvWechat *wechat.Service
authSvr *auth.Auth
)
// Init init .
func Init(c *conf.Config) {
authSvr = auth.New(c.Auth)
srvWeb = web.New(c)
srvShare = share.New(c)
srvWechat = wechat.New(c)
engine := bm.DefaultServer(c.BM)
router(engine)
if err := engine.Start(); err != nil {
log.Error("engine.Start error(%v)", err)
panic(err)
}
}
func router(e *bm.Engine) {
e.Ping(ping)
e.Register(register)
group := e.Group("/x/web-goblin")
{
miGroup := group.Group("/mi")
{
miGroup.GET("/full", fullshort)
}
channelGroup := group.Group("/channel")
{
channelGroup.GET("", authSvr.Guest, channel)
}
ugcGroup := group.Group("ugc")
{
ugcGroup.GET("/full", ugcfull)
ugcGroup.GET("/increment", ugcincre)
}
pgcGroup := group.Group("pgc")
{
pgcGroup.GET("/full", pgcfull)
pgcGroup.GET("/increment", pgcincre)
}
group.GET("/share/encourage", authSvr.User, encourage)
group.GET("/recruit", recruit)
weChatGroup := group.Group("/wechat")
{
weChatGroup.GET("/qrcode", qrcode)
}
}
}
func ping(c *bm.Context) {
if err := srvWeb.Ping(c); err != nil {
log.Error("web-goblin ping error(%v)", err)
c.AbortWithStatus(http.StatusServiceUnavailable)
}
}
func register(c *bm.Context) {
c.JSON(map[string]interface{}{}, nil)
}

View File

@@ -0,0 +1,78 @@
package http
import (
"time"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
func pgcfull(c *bm.Context) {
var (
err error
items interface{}
)
v := new(struct {
Pn int64 `form:"pn" validate:"min=1"`
Ps int64 `form:"ps" validate:"min=1,max=50"`
Tp int `form:"season_type" validate:"min=1,max=5"`
Source string `form:"bsource" validate:"required"`
})
if err = c.Bind(v); err != nil {
return
}
if !accessCard(_pgcFull, v.Source) {
c.JSON(nil, ecode.AccessDenied)
return
}
if items, err = srvWeb.PgcFull(c, v.Tp, v.Pn, v.Ps, v.Source); err != nil {
c.JSON(nil, err)
return
}
if items == nil {
items = struct{}{}
}
data := make(map[string]interface{}, 5)
data["app_name"] = _appName
data["package_name"] = _packageName
data["update_time"] = time.Now().Format("2006-01-02 15:04:05")
data["source"] = v.Source
data["shortvideos"] = items
c.JSONMap(data, nil)
}
func pgcincre(c *bm.Context) {
var (
err error
items interface{}
)
v := new(struct {
Pn int64 `form:"pn" validate:"min=1"`
Ps int64 `form:"ps" validate:"min=1,max=50"`
Tp int `form:"season_type" validate:"min=1,max=5"`
StartTime int64 `form:"start_ts" validate:"required"`
EndTime int64 `form:"end_ts" validate:"required"`
Source string `form:"bsource" validate:"required"`
})
if err = c.Bind(v); err != nil {
return
}
if !accessCard(_pgcIncre, v.Source) {
c.JSON(nil, ecode.AccessDenied)
return
}
if items, err = srvWeb.PgcIncre(c, v.Tp, v.Pn, v.Ps, v.StartTime, v.EndTime, v.Source); err != nil {
c.JSON(nil, err)
return
}
if items == nil {
items = struct{}{}
}
data := make(map[string]interface{}, 5)
data["app_name"] = _appName
data["package_name"] = _packageName
data["update_time"] = time.Now().Format("2006-01-02 15:04:05")
data["source"] = v.Source
data["shortvideos"] = items
c.JSONMap(data, nil)
}

View File

@@ -0,0 +1,23 @@
package http
import (
"go-common/app/interface/main/web-goblin/model/web"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
func recruit(c *bm.Context) {
var (
param = c.Request.Form
err error
v = &web.Params{}
)
if err = c.Bind(v); err != nil {
return
}
if v.Mode == "social" || v.Mode == "campus" {
c.JSON(srvWeb.Recruit(c, param, v))
return
}
c.JSON("mode 只能为 社招(social) 或者 校招(campus", ecode.RequestErr)
}

View File

@@ -0,0 +1,14 @@
package http
import (
bm "go-common/library/net/http/blademaster"
)
func encourage(c *bm.Context) {
var (
mid int64
)
midStr, _ := c.Get("mid")
mid = midStr.(int64)
c.JSON(srvShare.Encourage(c, mid))
}

View File

@@ -0,0 +1,109 @@
package http
import (
"time"
"go-common/app/interface/main/web-goblin/conf"
webmdl "go-common/app/interface/main/web-goblin/model/web"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
const (
_lmt = 10000
_pgcFull = "pgcfull"
_pgcIncre = "pgcincre"
_ugcFull = "ugcfull"
_ugcIncre = "ugcincre"
)
func ugcfull(c *bm.Context) {
var (
err error
items []*webmdl.Mi
)
v := new(struct {
Pn int64 `form:"pn" validate:"min=1"`
Ps int64 `form:"ps" validate:"min=1,max=50"`
Source string `form:"bsource" validate:"required"`
})
if err = c.Bind(v); err != nil {
return
}
if !accessCard(_ugcFull, v.Source) {
c.JSON(nil, ecode.AccessDenied)
return
}
source := "?bsource=" + v.Source
if items, err = srvWeb.UgcFull(c, v.Pn, v.Ps, source); err != nil {
c.JSON(nil, err)
return
}
data := make(map[string]interface{}, 5)
data["app_name"] = _appName
data["package_name"] = _packageName
data["update_time"] = time.Now().Format("2006-01-02 15:04:05")
data["source"] = v.Source
data["shortvideos"] = items
c.JSONMap(data, nil)
}
func ugcincre(c *bm.Context) {
var (
err error
item []*webmdl.Mi
)
v := new(struct {
Pn int `form:"pn" validate:"min=1"`
Ps int `form:"ps" validate:"min=1,max=50"`
StartTs int64 `form:"start_ts" validate:"required"`
EndTs int64 `form:"end_ts" validate:"required"`
Source string `form:"bsource" validate:"required"`
})
if err = c.Bind(v); err != nil {
return
}
if !accessCard(_ugcIncre, v.Source) {
c.JSON(nil, ecode.AccessDenied)
return
}
if v.StartTs >= v.EndTs || v.EndTs-v.StartTs >= conf.Conf.OutSearch.Rspan {
c.JSON(nil, ecode.RequestErr)
return
}
if v.Ps*v.Pn > _lmt {
c.JSON(nil, ecode.RequestErr)
return
}
source := "?bsource=" + v.Source
if item, err = srvWeb.UgcIncre(c, v.Pn, v.Ps, v.StartTs, v.EndTs, source); err != nil {
c.JSON(nil, err)
return
}
data := make(map[string]interface{}, 5)
data["app_name"] = _appName
data["package_name"] = _packageName
data["update_time"] = time.Now().Format("2006-01-02 15:04:05")
data["source"] = v.Source
data["shortvideos"] = item
c.JSONMap(data, nil)
}
func accessCard(flag, arg string) bool {
var (
b = false
m = map[string][]string{
_pgcFull: conf.Conf.OutSearch.AcPgcFull,
_pgcIncre: conf.Conf.OutSearch.AcPgcIncre,
_ugcFull: conf.Conf.OutSearch.AcUgcFull,
_ugcIncre: conf.Conf.OutSearch.AcUgcIncre,
}
)
for _, v := range m[flag] {
if v == arg {
b = true
break
}
}
return b
}

View File

@@ -0,0 +1,22 @@
package http
import (
"net/http"
bm "go-common/library/net/http/blademaster"
)
func qrcode(c *bm.Context) {
v := new(struct {
JSON string `form:"json" validate:"required"`
})
if err := c.Bind(v); err != nil {
return
}
qrcode, err := srvWechat.Qrcode(c, v.JSON)
if err != nil {
c.JSON(nil, err)
return
}
c.Bytes(http.StatusOK, "", qrcode)
}