This commit is contained in:
mubai
2023-12-23 22:32:52 +08:00
parent d85dbe915c
commit b48e53a637
151 changed files with 12451 additions and 1382 deletions

View File

@@ -2,20 +2,19 @@ package router
import (
"github.com/gin-gonic/gin"
"log"
"net/http"
"server/config"
"server/controller"
"server/plugin/middleware"
)
func SetupRouter() *gin.Engine {
r := gin.Default()
// 开启跨域
r.Use(Cors())
r.Use(middleware.Cors())
// 静态资源配置
r.Static("/static/image", config.ImageDir)
r.Static(config.FilmPictureUrlPath, config.FilmPictureUploadDir)
r.GET(`/index`, controller.Index)
r.GET(`/navCategory`, controller.CategoriesInfo)
@@ -24,53 +23,88 @@ func SetupRouter() *gin.Engine {
r.GET(`/searchFilm`, controller.SearchFilm)
r.GET(`/filmClassify`, controller.FilmClassify)
r.GET(`/filmClassifySearch`, controller.FilmTagSearch)
// 弃用
//r.GET(`/filmCategory`, controller.FilmCategory)
//r.GET(`/filmCategory`, controller.FilmCategory) 弃用
r.POST(`/login`, controller.Login)
r.GET(`/logout`, middleware.AuthToken(), controller.Logout)
r.POST(`/changePassword`, middleware.AuthToken(), controller.UserPasswordChange)
// 触发spider
spiderRoute := r.Group(`/spider`)
// 管理员API路由组
manageRoute := r.Group(`/manage`)
manageRoute.Use(middleware.AuthToken())
{
// 清空全部数据并从零开始获取数据
spiderRoute.GET("/SpiderRe", controller.SpiderRe)
// 获取影片详情, 用于网路不稳定导致的影片数据缺失
spiderRoute.GET(`/FixFilmDetail`, controller.FixFilmDetail)
spiderRoute.GET(`/RefreshSitePlay`, controller.RefreshSitePlay)
manageRoute.GET(`/index`, controller.ManageIndex)
// 系统相关
sysConfig := manageRoute.Group(`/config`)
{
sysConfig.GET("/basic", controller.SiteBasicConfig)
sysConfig.POST("/basic/update", controller.UpdateSiteBasic)
sysConfig.GET("/basic/reset", controller.ResetSiteBasic)
}
userRoute := manageRoute.Group(`/user`)
{
userRoute.GET(`/info`, controller.UserInfo)
}
// 采集路相关
collect := manageRoute.Group(`/collect`)
{
collect.GET(`/list`, controller.FilmSourceList)
collect.GET(`/find`, controller.FindFilmSource)
collect.POST(`/test`, controller.FilmSourceTest)
collect.POST(`/add`, controller.FilmSourceAdd)
collect.POST(`/update`, controller.FilmSourceUpdate)
collect.POST(`/change`, controller.FilmSourceChange)
//collect.GET(`/star`, controller.CollectFilm)
collect.GET(`/del`, controller.FilmSourceDel)
collect.GET(`/options`, controller.GetNormalFilmSource)
}
// 定时任务相关
collectCron := manageRoute.Group(`/cron`)
{
collectCron.GET(`/list`, controller.FilmCronTaskList)
collectCron.GET(`/find`, controller.GetFilmCronTask)
//collectCron.GET(`/options`, controller.GetNormalFilmSource)
collectCron.POST(`/add`, controller.FilmCronAdd)
collectCron.POST(`/update`, controller.FilmCronUpdate)
collectCron.POST(`/change`, controller.ChangeTaskState)
collectCron.GET(`/del`, controller.DelFilmCron)
}
// spider 数据采集
spiderRoute := manageRoute.Group(`/spider`)
{
spiderRoute.POST(`/start`, controller.StarSpider)
spiderRoute.GET(`/zero`, controller.SpiderReset)
spiderRoute.GET(`/class/cover`, controller.CoverFilmClass)
}
// filmManage 影视管理
filmRoute := manageRoute.Group(`/film`)
{
filmRoute.POST(`/add`, controller.FilmAdd)
filmRoute.GET(`/search/list`, controller.FilmSearchPage)
filmRoute.GET(`/class/tree`, controller.FilmClassTree)
filmRoute.GET(`/class/find`, controller.FindFilmClass)
filmRoute.POST(`/class/update`, controller.UpdateFilmClass)
filmRoute.GET(`/class/del`, controller.DelFilmClass)
}
// 文件管理
fileRoute := manageRoute.Group(`/file`)
{
fileRoute.POST(`/upload`, controller.SingleUpload)
fileRoute.GET(`/list`, controller.PhotoWall)
}
}
// 供第三方采集的API
//provideRoute := r.Group(`/provide`)
//{
// provideRoute.GET(`/vod`, controller.HandleProvide)
// provideRoute.GET(`/vod/xml`, middleware.AddXmlHeader(), controller.HandleProvideXml)
//}
return r
}
// Cors 开启跨域请求
func Cors() gin.HandlerFunc {
return func(c *gin.Context) {
method := c.Request.Method
origin := c.Request.Header.Get("Origin") //请求头部
if origin != "" {
//接收客户端发送的origin (重要!)
c.Writer.Header().Set("Access-Control-Allow-Origin", origin)
//服务器支持的所有跨域请求的方法
c.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE,UPDATE")
//允许跨域设置可以返回其他子段,可以自定义字段
c.Header("Access-Control-Allow-Headers", "Authorization, Content-Length, X-CSRF-Token, Token,session, Content-Type")
// 允许浏览器(客户端)可以解析的头部 (重要)
c.Header("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type")
//设置缓存时间
c.Header("Access-Control-Max-Age", "172800")
//允许客户端传递校验信息比如 cookie (重要)
c.Header("Access-Control-Allow-Credentials", "true")
}
//允许类型校验
if method == "OPTIONS" {
c.JSON(http.StatusOK, "ok!")
}
defer func() {
if err := recover(); err != nil {
log.Printf("Panic info is: %v", err)
}
}()
c.Next()
}
}