123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 |
- package http
- import (
- "fmt"
- "go-common/library/ecode"
- "go-common/library/net/http/blademaster/middleware/antispam"
- "net/http"
- "go-common/app/interface/bbq/app-bbq/api/http/v1"
- "go-common/app/interface/bbq/app-bbq/conf"
- "go-common/app/interface/bbq/app-bbq/service"
- xauth "go-common/app/interface/bbq/common/auth"
- chttp "go-common/app/interface/bbq/common/http"
- "go-common/library/log"
- bm "go-common/library/net/http/blademaster"
- "go-common/library/net/http/blademaster/middleware/verify"
- "go-common/library/net/trace"
- )
- var (
- srv *service.Service
- vfy *verify.Verify
- authSrv *xauth.BannedAuth
- cfg *conf.Config
- logger *chttp.UILog
- likeAntiSpam *antispam.Antispam
- relationAntiSpam *antispam.Antispam
- replyAntiSpam *antispam.Antispam
- uploadAntiSpam *antispam.Antispam
- reportAntiSpam *antispam.Antispam
- )
- // Init init
- func Init(c *conf.Config) {
- cfg = c
- initAntiSpam(c)
- logger = chttp.New(c.Infoc)
- srv = service.New(c)
- vfy = verify.New(c.Verify)
- authSrv = xauth.NewBannedAuth(c.Auth, c.MySQL)
- engine := bm.DefaultServer(c.BM)
- route(engine)
- if err := engine.Start(); err != nil {
- log.Error("bm Start error(%v)", err)
- panic(err)
- }
- }
- func initAntiSpam(c *conf.Config) {
- var antiConfig *antispam.Config
- var exists bool
- if antiConfig, exists = c.AntiSpam["like"]; !exists {
- panic("lose like anti_spam config")
- }
- relationAntiSpam = antispam.New(antiConfig)
- if antiConfig, exists = c.AntiSpam["relation"]; !exists {
- panic("lose relation anti_spam config")
- }
- likeAntiSpam = antispam.New(antiConfig)
- if antiConfig, exists = c.AntiSpam["reply"]; !exists {
- panic("lose reply anti_spam config")
- }
- replyAntiSpam = antispam.New(antiConfig)
- if antiConfig, exists = c.AntiSpam["upload"]; !exists {
- panic("lose upload anti_spam config")
- }
- uploadAntiSpam = antispam.New(antiConfig)
- if antiConfig, exists = c.AntiSpam["report"]; !exists {
- panic("lose report anti_spam config")
- }
- reportAntiSpam = antispam.New(antiConfig)
- }
- func route(e *bm.Engine) {
- e.Ping(ping)
- e.Register(register)
- g := e.Group("/bbq/app-bbq", wrapBBQ)
- {
- //用户登录
- g.GET("/user/login", authSrv.User, login)
- g.POST("/user/logout", authSrv.Guest, bm.Mobile(), pushLogout)
- //用户相关
- g.GET("/user/base", authSrv.User, userBase)
- // 所有字段都需要携带修改
- g.POST("/user/base/edit", authSrv.User, userBaseEdit)
- g.POST("/user/like/add", authSrv.User, likeAntiSpam.ServeHTTP, addUserLike)
- g.POST("/user/like/cancel", authSrv.User, likeAntiSpam.ServeHTTP, cancelUserLike)
- g.GET("/user/like/list", userLikeList)
- g.POST("/user/unlike", authSrv.User, likeAntiSpam.ServeHTTP, userUnLike)
- g.GET("/user/follow/list", authSrv.Guest, userFollowList)
- g.GET("/user/fan/list", authSrv.Guest, userFanList)
- g.GET("/user/black/list", authSrv.User, userBlackList)
- g.POST("/user/relation/modify", authSrv.User, relationAntiSpam.ServeHTTP, userRelationModify)
- g.GET("/search/hot/word", hotWord)
- // feed关注列表页
- g.GET("/feed/list", authSrv.User, feedList)
- // feed关注页红点
- g.GET("/feed/update_num", authSrv.User, feedUpdateNum)
- // space发布列表页
- g.GET("/space/sv/list", authSrv.Guest, spaceSvList)
- // space 用户详情况主/客
- g.GET("/space/user/profile", authSrv.Guest, spaceUserProfile)
- // 详情页up主发布列表
- g.GET("/detail/sv/list", authSrv.Guest, detailSvList)
- //视频相关
- g.GET("/sv/list", authSrv.Guest, bm.Mobile(), svList)
- g.GET("/sv/playlist", authSrv.Guest, bm.Mobile(), svPlayList) // playurl过期时候请求
- g.GET("/sv/detail", authSrv.Guest, svDetail)
- g.GET("/sv/stat", authSrv.Guest, bm.Mobile(), svStatistics)
- g.GET("/sv/relate", authSrv.Guest, svRelList)
- g.POST("/sv/del", authSrv.User, svDel)
- //搜索相关
- g.GET("/search/sv", authSrv.Guest, videoSearch)
- g.GET("/search/user", authSrv.Guest, userSearch)
- g.GET("/search/sug", authSrv.Guest, sug)
- g.GET("/search/topic", authSrv.Guest, topicSearch)
- //发现页
- g.GET("/discovery", authSrv.Guest, discoveryList)
- //话题详情页
- g.GET("/topic/detail", authSrv.Guest, topicDetail)
- // 用户location
- g.GET("/location/all", authSrv.User, locationAll)
- g.GET("/location", authSrv.User, location)
- //图片上传
- g.POST("/img/upload", authSrv.User, uploadAntiSpam.ServeHTTP, upload)
- // 客户端分享链接
- g.GET("/share", authSrv.Guest, shareURL)
- g.GET("/share/callback", authSrv.Guest, shareCallback)
- // 邀请函接口(内测版,公测删除)内测取消
- // g.GET("/invitation/download", invitationDownload)
- // App全局设置接口
- g.GET("/setting", appSetting)
- g.GET("/package", appPackage)
- }
- //评论组
- r := e.Group("/bbq/app-bbq/reply", wrapBBQ, commentInit)
- {
- //评论相关
- r.GET("/cursor", commentCloseRead, authSrv.Guest, commentCursor)
- r.POST("/add", commentCloseWrite, authSrv.User, phoneCheck, replyAntiSpam.ServeHTTP, commentAdd)
- r.POST("/action", commentCloseWrite, authSrv.User, likeAntiSpam.ServeHTTP, commentLike)
- r.GET("/", commentCloseRead, authSrv.Guest, commentList)
- r.GET("/reply/cursor", commentCloseRead, authSrv.Guest, commentSubCursor)
- }
- // 举报接口
- report := e.Group("/bbq/app-bbq/report", wrapBBQ)
- {
- report.GET("/config", authSrv.Guest, bm.Mobile(), reportConfig)
- report.POST("/report", authSrv.Guest, bm.Mobile(), reportAntiSpam.ServeHTTP, reportReport)
- }
- // 播放数据收集
- d := e.Group("/bbq/app-bbq/data", wrapBBQ)
- {
- d.GET("/collect", authSrv.Guest, bm.Mobile(), videoPlay)
- }
- // 通知中心,需要登录
- p := e.Group("/bbq/app-bbq/notice/center", authSrv.User, wrapBBQ)
- {
- p.GET("/num", noticeNum)
- p.GET("/overview", noticeOverview)
- p.GET("/list", noticeList)
- }
- // 推送相关
- push := e.Group("/bbq/app-bbq/push", wrapBBQ, authSrv.Guest, bm.Mobile())
- {
- push.POST("/register", pushRegister)
- push.GET("/callback", pushCallback)
- }
- //视频上传相关
- upload := e.Group("/bbq/app-bbq/upload/sv", authSrv.Guest)
- {
- upload.POST("/preupload", perUpload)
- upload.POST("/callback", callBack)
- upload.GET("/check", authSrv.User, uploadCheck)
- upload.POST("/homeimg", authSrv.User, homeimg)
- }
- }
- func commentCloseWrite(ctx *bm.Context) {
- if conf.Conf.Comment.CloseWrite {
- ctx.JSON(struct{}{}, ecode.OK)
- ctx.Abort()
- }
- }
- func commentCloseRead(ctx *bm.Context) {
- if conf.Conf.Comment.CloseRead {
- ctx.JSON(struct{}{}, ecode.OK)
- ctx.Abort()
- }
- }
- //wrapRes 为返回头添加BBQ自定义字段
- func wrapBBQ(ctx *bm.Context) {
- chttp.WrapHeader(ctx)
- // Base params
- req := ctx.Request
- base := new(v1.Base)
- ctx.Bind(base)
- base.BUVID = req.Header.Get("Buvid")
- ctx.Set("BBQBase", base)
- // QueryID
- qid := base.QueryID
- if base.QueryID == "" {
- tracer, _ := trace.FromContext(ctx.Context)
- qid = fmt.Sprintf("%s", tracer)
- }
- ctx.Set("QueryID", qid)
- }
- // phoneCheck 进行手机校验
- func phoneCheck(ctx *bm.Context) {
- midValue, exists := ctx.Get("mid")
- if !exists {
- ctx.JSON(nil, ecode.NoLogin)
- ctx.Abort()
- return
- }
- mid := midValue.(int64)
- err := srv.PhoneCheck(ctx, mid)
- if err != nil {
- ctx.JSON(nil, err)
- ctx.Abort()
- return
- }
- }
- func ping(c *bm.Context) {
- if err := srv.Ping(c); err != nil {
- log.Error("ping error(%v)", err)
- c.AbortWithStatus(http.StatusServiceUnavailable)
- }
- }
- func register(c *bm.Context) {
- c.JSON(map[string]interface{}{}, nil)
- }
- func uiLog(ctx *bm.Context, action int, ext interface{}) {
- logger.Infoc(ctx, action, ext)
- }
|