init: web_hgdjc_server

This commit is contained in:
2026-11-07 10:46:18 +08:00
commit b2ff6ac8ff
707 changed files with 147645 additions and 0 deletions
+11
View File
@@ -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)
}
+19
View File
@@ -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)
}
}
+17
View File
@@ -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) // 导出金币余额明细
}
}
+18
View File
@@ -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)
}
}
+13
View File
@@ -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)
}
+11
View File
@@ -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)
}
+11
View File
@@ -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)
}
+134
View File
@@ -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))
}
+11
View File
@@ -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)
}
+11
View File
@@ -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)
}
+47
View File
@@ -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)
}
}
+14
View File
@@ -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)
}
}
+15
View File
@@ -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)
}
}
+14
View File
@@ -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)
}
}
+14
View File
@@ -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)
}
+14
View File
@@ -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)
}
}
+14
View File
@@ -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)
}
}
+14
View File
@@ -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)
}
}
+14
View File
@@ -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)
}
}
+41
View File
@@ -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)
}