init: 初始化 web_hgdjb_server 项目
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"videoweb/app/api/appinfoapi"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func appInfoRouter(r *gin.Engine) {
|
||||
r.GET("/api/app/applist/list", appinfoapi.QueryAppList)
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"videoweb/app/api/authapi"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func authRouter(r *gin.Engine) {
|
||||
auth := r.Group("/api/app/auth")
|
||||
{
|
||||
auth.POST("/guest", authapi.GuestLogin)
|
||||
auth.POST("/register", authapi.Register)
|
||||
auth.POST("/login", authapi.Login)
|
||||
auth.GET("/getInfo", authapi.GetInfo)
|
||||
auth.POST("/profile", authapi.UpdateProfile)
|
||||
auth.POST("/resetPassword", authapi.ResetPassword)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"videoweb/app/api/coinapi"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func coinRouter(r *gin.Engine) {
|
||||
coinGroup := r.Group("/api/app/coin")
|
||||
{
|
||||
coinGroup.POST("/buy", coinapi.BuyCoin) // 发起购买金币(第三方支付)
|
||||
coinGroup.GET("/orders", coinapi.GetCoinOrderHistory) // 查询购买记录
|
||||
coinGroup.GET("/trans/list", coinapi.GetCoinTransList) // 查询金币余额明细
|
||||
coinGroup.GET("/trans/export", coinapi.ExportCoinTrans) // 导出金币余额明细
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"videoweb/app/api/commentapi"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func commentRouter(r *gin.Engine) {
|
||||
r.POST("/comment/send/", commentapi.SendComment)
|
||||
group := r.Group("/api/app/comment")
|
||||
{
|
||||
group.POST("/send", commentapi.SendComment)
|
||||
group.POST("/send/", commentapi.SendComment)
|
||||
group.GET("/list", commentapi.List)
|
||||
group.POST("/like/set", commentapi.SetLike)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
configapi "videoweb/app/api/config"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func configRouter(r *gin.Engine) {
|
||||
r.GET("/api/app/config/info", configapi.Info)
|
||||
r.GET("/api/app/config/footer/info", configapi.FooterInfo)
|
||||
r.GET("/api/app/config/richtext/list", configapi.RichTextList)
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"videoweb/app/api/contactusapi"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func contactUsRouter(r *gin.Engine) {
|
||||
r.POST("/api/app/contactus/add", contactusapi.AddContactUs)
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"videoweb/app/api/feedbackapi"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func feedbackRouter(r *gin.Engine) {
|
||||
r.POST("/api/app/feedback/add", feedbackapi.AddFeedback)
|
||||
}
|
||||
@@ -0,0 +1,134 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
"videoweb/app/api/home"
|
||||
"videoweb/app/appg"
|
||||
"videoweb/app/middleware/auth"
|
||||
"videoweb/app/middleware/cors"
|
||||
"videoweb/app/middleware/ipblacklist"
|
||||
"videoweb/app/middleware/ipstat"
|
||||
"videoweb/app/middleware/reptilerecord"
|
||||
"videoweb/app/middleware/templatecache"
|
||||
"videoweb/app/middleware/visit"
|
||||
"videoweb/pub/common"
|
||||
"videoweb/pub/common/enum/consts"
|
||||
"videoweb/pub/common/log"
|
||||
"videoweb/pub/common/useragent"
|
||||
|
||||
"github.com/DeanThompson/ginpprof"
|
||||
"github.com/gin-gonic/gin"
|
||||
swaggerFiles "github.com/swaggo/files"
|
||||
ginSwagger "github.com/swaggo/gin-swagger"
|
||||
|
||||
_ "videoweb/app/docs"
|
||||
)
|
||||
|
||||
func Init() (engine *gin.Engine) {
|
||||
// 设置启动模式
|
||||
switch appg.Conf.RunMod {
|
||||
case "dev":
|
||||
gin.SetMode(gin.DebugMode)
|
||||
case "test":
|
||||
gin.SetMode(gin.TestMode)
|
||||
case "prod":
|
||||
gin.SetMode(gin.ReleaseMode)
|
||||
default:
|
||||
gin.SetMode(gin.DebugMode)
|
||||
}
|
||||
// 初始化gin引擎
|
||||
engine = gin.Default()
|
||||
if appg.Conf.TrustedProxies != "" {
|
||||
proxies := strings.Split(appg.Conf.TrustedProxies, ",")
|
||||
for i, p := range proxies {
|
||||
proxies[i] = strings.TrimSpace(p)
|
||||
}
|
||||
_ = engine.SetTrustedProxies(proxies)
|
||||
log.Infof("SetTrustedProxies: %v", proxies)
|
||||
} else {
|
||||
_ = engine.SetTrustedProxies([]string{})
|
||||
log.Infof("SetTrustedProxies: none (direct TCP IP mode)")
|
||||
}
|
||||
engine.HandleMethodNotAllowed = true
|
||||
engine.MaxMultipartMemory = 60 << 20
|
||||
|
||||
common.InitGinSecret(appg.Conf.ResKey, consts.RunMod(appg.Conf.RunMod))
|
||||
// 注册中间件
|
||||
registeMiddleware(engine)
|
||||
// 注册路由
|
||||
registeRouter(engine)
|
||||
|
||||
if appg.Conf.RunMod != "prod" {
|
||||
setGinSwagger(engine)
|
||||
}
|
||||
// 是否开启监控服务
|
||||
if appg.Conf.Pprof {
|
||||
ginpprof.Wrap(engine)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func registeMiddleware(engine *gin.Engine) {
|
||||
engine.Use(
|
||||
// gin.Recovery(),
|
||||
cors.Cors(&cors.Options{
|
||||
Origin: nil, // "*"
|
||||
Methods: []string{http.MethodGet, http.MethodPost, http.MethodPut, http.MethodHead, http.MethodDelete},
|
||||
AllowedHeaders: []string{
|
||||
"Content-Length", "Content-Type", "Authorization", "X-User-Agent",
|
||||
"device", "api_version", "x-api-key",
|
||||
"sid",
|
||||
"device_brand", "device-brand",
|
||||
"device_model", "device-model",
|
||||
"system_name", "system-name",
|
||||
"system_version", "system-version",
|
||||
useragent.SDKCommonHeader,
|
||||
},
|
||||
ExposedHeaders: []string{"Content-Disposition", "Refresh-Authorization"},
|
||||
OptionsSuccessStatus: http.StatusOK,
|
||||
}),
|
||||
// 必须是此顺序, happens before原则
|
||||
//monitor.Check,
|
||||
ipblacklist.IpBlackListMiddleware,
|
||||
reptilerecord.ReptileRecord,
|
||||
ipstat.IpStatMiddleware,
|
||||
useragent.UserAgent,
|
||||
auth.Auth,
|
||||
// calllimit.Check,
|
||||
visit.Visit,
|
||||
)
|
||||
}
|
||||
|
||||
// 注册路由
|
||||
func registeRouter(r *gin.Engine) {
|
||||
videoRouter(r)
|
||||
playletRouter(r)
|
||||
playletThemeRouter(r)
|
||||
commentRouter(r)
|
||||
coinRouter(r)
|
||||
feedbackRouter(r)
|
||||
contactUsRouter(r)
|
||||
userCenterRouter(r)
|
||||
authRouter(r)
|
||||
rechargeRouter(r)
|
||||
rechargePackageRouter(r)
|
||||
uploadRouter(r)
|
||||
healthRouter(r)
|
||||
configRouter(r)
|
||||
appInfoRouter(r)
|
||||
translationRouter(r)
|
||||
navigationRouter(r)
|
||||
statcenterRouter(r)
|
||||
sitemapRouter(r)
|
||||
r.GET("/notpage", templatecache.WithCache(time.Minute*1), home.PageNotFound)
|
||||
|
||||
}
|
||||
|
||||
// 设置swag 接口信息
|
||||
func setGinSwagger(router *gin.Engine) {
|
||||
url := ginSwagger.URL(fmt.Sprintf("%s/swagger/doc.json", appg.Conf.Host))
|
||||
router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler, url))
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"videoweb/app/api/healthapi"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func healthRouter(r *gin.Engine) {
|
||||
r.POST("/api/app/health/ping", healthapi.HealthCheck)
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"videoweb/app/api/navigationapi"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func navigationRouter(r *gin.Engine) {
|
||||
r.GET("/api/app/navigation/header", navigationapi.HeaderNavigation)
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"videoweb/app/api/playletapi"
|
||||
"videoweb/app/api/playlettagapi"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func playletRouter(r *gin.Engine) {
|
||||
group := r.Group("/api/app/playlet")
|
||||
{
|
||||
group.GET("/home", playletapi.HomePlaylet)
|
||||
group.GET("/home-config/list", playletapi.HomeConfigList)
|
||||
group.GET("/all/list", playletapi.AllList)
|
||||
group.GET("/hot/list", playletapi.HotList)
|
||||
group.GET("/topic/list", playletapi.TopicList)
|
||||
group.GET("/topic/detail", playletapi.TopicDetail)
|
||||
group.GET("/operate/list", playletapi.OperateList)
|
||||
group.GET("/rank", playletapi.Rank)
|
||||
group.GET("/hot/rank/list", playletapi.HotRankList)
|
||||
group.GET("/today-update", playletapi.TodayUpdate)
|
||||
group.GET("/tag/options", playlettagapi.List)
|
||||
group.GET("/tag/list", playletapi.TagVideoList)
|
||||
group.GET("/guess-like/list", playletapi.GuessLikeList)
|
||||
group.GET("/search", playletapi.Search)
|
||||
group.GET("/search/suggest", playletapi.SearchSuggest)
|
||||
group.GET("/hot-like", playletapi.HotLike)
|
||||
group.GET("/like/list", playletapi.LikeList)
|
||||
group.POST("/like/set", playletapi.SetLike)
|
||||
group.POST("/collect/set", playletapi.SetCollect)
|
||||
group.POST("/forward/heat", playletapi.ForwardHeat)
|
||||
group.GET("/collect/list", playletapi.CollectList)
|
||||
group.GET("/bought/list", playletapi.BoughtList)
|
||||
group.GET("/history/list", playletapi.HistoryList)
|
||||
group.POST("/history/delete", playletapi.DeleteHistory)
|
||||
group.POST("/history/clear", playletapi.ClearHistory)
|
||||
group.POST("/chapter/like/set", playletapi.SetChapterLike)
|
||||
group.POST("/chapter/collect/set", playletapi.SetChapterCollect)
|
||||
group.GET("/chapter/collect/list", playletapi.ChapterCollectList)
|
||||
group.POST("/chapter/watch/report", playletapi.ReportChapterWatch)
|
||||
group.POST("/chapter/unlock", playletapi.UnlockChapter)
|
||||
group.GET("/detail", playletapi.Detail)
|
||||
group.GET("/chapter/detail", playletapi.ChapterDetail)
|
||||
group.GET("/chapter/list", playletapi.ChapterList)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"videoweb/app/api/playletthemeapi"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func playletThemeRouter(r *gin.Engine) {
|
||||
group := r.Group("/api/app/theme")
|
||||
{
|
||||
group.GET("/list", playletthemeapi.List)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"videoweb/app/api/rechargeapi"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func rechargeRouter(r *gin.Engine) {
|
||||
vipGroup := r.Group("/api/app/vip")
|
||||
{
|
||||
vipGroup.POST("/pay", rechargeapi.SubmitOrder)
|
||||
vipGroup.GET("/orders", rechargeapi.GetOrderHistory)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"videoweb/app/api/rechargepackageapi"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func rechargePackageRouter(r *gin.Engine) {
|
||||
group := r.Group("/api/app/recharge/package")
|
||||
{
|
||||
group.GET("/list", rechargepackageapi.List)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package router
|
||||
|
||||
import "github.com/gin-gonic/gin"
|
||||
|
||||
const (
|
||||
// 与 sitemap 生成目录一致,进程工作目录为 app/。
|
||||
sitemapIndexFile = "../h5/template/pages/sitemap.xml"
|
||||
sitemapShardDir = "../h5/template/pages/sitemaps"
|
||||
)
|
||||
|
||||
func sitemapRouter(r *gin.Engine) {
|
||||
r.StaticFile("/sitemap.xml", sitemapIndexFile)
|
||||
r.Static("/sitemaps", sitemapShardDir)
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"videoweb/app/api/statcenterapi"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func statcenterRouter(r *gin.Engine) {
|
||||
group := r.Group("/api/app/statcenter")
|
||||
{
|
||||
group.POST("/sync", statcenterapi.StatcenterSyncList)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"videoweb/app/api/translationapi"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func translationRouter(r *gin.Engine) {
|
||||
group := r.Group("/api/app/translation")
|
||||
{
|
||||
group.GET("/category/list", translationapi.CategoryList)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"videoweb/app/api/uploadapi"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func uploadRouter(r *gin.Engine) {
|
||||
group := r.Group("/api/app/upload")
|
||||
{
|
||||
group.POST("/image", uploadapi.UploadImage)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"videoweb/app/api/usercenterapi"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func userCenterRouter(r *gin.Engine) {
|
||||
group := r.Group("/api/app/user/center")
|
||||
{
|
||||
group.GET("/data", usercenterapi.Data)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"time"
|
||||
"videoweb/app/api/videoapi"
|
||||
"videoweb/app/middleware/templatecache"
|
||||
"videoweb/app/service/videoser"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
|
||||
"videoweb/app/api/home"
|
||||
_ "videoweb/app/docs"
|
||||
)
|
||||
|
||||
func videoRouter(r *gin.Engine) {
|
||||
r.GET("/api/app/video/all/list", videoapi.AllList)
|
||||
r.GET("/api/app/video/topic/list", videoapi.TopicList)
|
||||
r.GET("/api/app/video/list", videoapi.List)
|
||||
r.POST("/api/app/video/like/set", videoapi.SetLike)
|
||||
r.POST("/api/app/video/collect/set", videoapi.SetCollect)
|
||||
r.GET("/api/app/video/history/list", videoapi.HistoryList)
|
||||
r.POST("/api/app/video/history/delete", videoapi.DeleteHistory)
|
||||
r.POST("/api/app/video/history/clear", videoapi.ClearHistory)
|
||||
r.GET("/api/app/video/collect/list", videoapi.CollectList)
|
||||
r.GET("/api/app/video/detail", videoapi.Detail)
|
||||
|
||||
r.GET("/tagcategory/cache", templatecache.WithCache(time.Minute*5), home.GetTagCategoryCache)
|
||||
|
||||
r.GET("/richtext/:id/", templatecache.WithCache(time.Minute*1), home.RichtextApi) // 富文本
|
||||
|
||||
r.GET("/h5/m3u8/*key", videoser.GetM3U8Ex)
|
||||
r.GET("/h5/vtt/*key", videoser.GetVTTEx)
|
||||
r.GET("/enkey/", videoser.Enkey)
|
||||
r.GET("/newenkey/", videoser.NewEnkey)
|
||||
r.GET("/lsjenkey", videoser.LsjEnkey)
|
||||
|
||||
r.GET("/urlRedirect/", templatecache.WithCache(time.Minute*1), home.UrlRedirect)
|
||||
|
||||
r.GET("/videoList", home.VideoListPage)
|
||||
r.GET("/videoDetail", home.VideoDetailPage)
|
||||
}
|
||||
Reference in New Issue
Block a user