mirror of
https://github.com/ProudMuBai/GoFilm.git
synced 2026-02-10 20:04:42 +08:00
161 lines
3.8 KiB
Go
161 lines
3.8 KiB
Go
package controller
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"net/http"
|
|
"server/logic"
|
|
"server/model"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
StatusOk = "ok"
|
|
StatusFailed = "failed"
|
|
)
|
|
|
|
// Index 首页数据
|
|
func Index(c *gin.Context) {
|
|
// 获取首页所需数据
|
|
data := logic.IL.IndexPage()
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"status": StatusOk,
|
|
"data": data,
|
|
})
|
|
}
|
|
|
|
// CategoriesInfo 分类信息获取
|
|
func CategoriesInfo(c *gin.Context) {
|
|
data := logic.IL.GetCategoryInfo()
|
|
|
|
if data == nil {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
`status`: StatusFailed,
|
|
`message`: `暂无分类信息!!!`,
|
|
})
|
|
return
|
|
}
|
|
c.JSON(http.StatusOK, gin.H{
|
|
`status`: StatusOk,
|
|
`data`: data,
|
|
})
|
|
}
|
|
|
|
// FilmDetail 影片详情信息查询
|
|
func FilmDetail(c *gin.Context) {
|
|
// 获取请求参数
|
|
id, err := strconv.Atoi(c.Query("id"))
|
|
if err != nil {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"status": StatusFailed,
|
|
"message": "请求异常,暂无影片信息!!!",
|
|
})
|
|
return
|
|
}
|
|
// 获取影片详情信息
|
|
detail := logic.IL.GetFilmDetail(id)
|
|
// 获取相关推荐影片数据
|
|
page := model.Page{Current: 0, PageSize: 14}
|
|
relateMovie := logic.IL.RelateMovie(detail, &page)
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"status": StatusOk,
|
|
"data": gin.H{
|
|
"detail": detail,
|
|
"relate": relateMovie,
|
|
},
|
|
})
|
|
}
|
|
|
|
// FilmPlayInfo 影视播放页数据
|
|
func FilmPlayInfo(c *gin.Context) {
|
|
// 获取请求参数
|
|
id, err := strconv.Atoi(c.DefaultQuery("id", "0"))
|
|
playFrom, err := strconv.Atoi(c.DefaultQuery("playFrom", "0"))
|
|
episode, err := strconv.Atoi(c.DefaultQuery("episode", "0"))
|
|
if err != nil {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"status": StatusFailed,
|
|
"message": "请求异常,暂无影片信息!!!",
|
|
})
|
|
return
|
|
}
|
|
// 获取影片详情信息
|
|
detail := logic.IL.GetFilmDetail(id)
|
|
// 推荐影片信息
|
|
page := model.Page{Current: 0, PageSize: 14}
|
|
relateMovie := logic.IL.RelateMovie(detail, &page)
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"status": StatusOk,
|
|
"data": gin.H{
|
|
"detail": detail,
|
|
"current": detail.PlayList[playFrom][episode],
|
|
"currentPlayFrom": playFrom,
|
|
"currentEpisode": episode,
|
|
"relate": relateMovie,
|
|
},
|
|
})
|
|
}
|
|
|
|
// SearchFilm 通过片名模糊匹配库存中的信息
|
|
func SearchFilm(c *gin.Context) {
|
|
keyword := c.DefaultQuery("keyword", "")
|
|
currStr := c.DefaultQuery("current", "1")
|
|
current, _ := strconv.Atoi(currStr)
|
|
page := model.Page{PageSize: 10, Current: current}
|
|
bl := logic.IL.SearchFilmInfo(strings.TrimSpace(keyword), &page)
|
|
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"status": StatusOk,
|
|
"data": gin.H{
|
|
"list": bl,
|
|
"page": page,
|
|
},
|
|
})
|
|
}
|
|
|
|
// FilmCategory 获取指定分类的影片分页数据,
|
|
func FilmCategory(c *gin.Context) {
|
|
// 1.1 首先获取Cid 二级分类id是否存在
|
|
cidStr := c.DefaultQuery("cid", "")
|
|
// 1.2 如果pid也不存在直接返回错误信息
|
|
pidStr := c.DefaultQuery("pid", "")
|
|
if pidStr == "" {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"status": StatusFailed,
|
|
"message": "缺少分类信息",
|
|
})
|
|
return
|
|
}
|
|
// 1.3 获取pid对应的分类信息
|
|
pid, _ := strconv.ParseInt(pidStr, 10, 64)
|
|
category := logic.IL.GetPidCategory(pid)
|
|
|
|
// 2 设置分页信息
|
|
currentStr := c.DefaultQuery("current", "1")
|
|
current, _ := strconv.Atoi(currentStr)
|
|
page := model.Page{PageSize: 49, Current: current}
|
|
// 2.1 如果不存在cid则根据Pid进行查询
|
|
if cidStr == "" {
|
|
// 2.2 如果存在pid则根据pid进行查找
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"status": StatusOk,
|
|
"data": gin.H{
|
|
"list": logic.IL.GetFilmCategory(pid, "pid", &page),
|
|
"category": category,
|
|
},
|
|
"page": page,
|
|
})
|
|
return
|
|
}
|
|
// 2.2 如果存在cid 则根据具体的cid去查询数据
|
|
cid, _ := strconv.ParseInt(cidStr, 10, 64)
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"status": StatusOk,
|
|
"data": gin.H{
|
|
"list": logic.IL.GetFilmCategory(cid, "cid", &page),
|
|
"category": category,
|
|
},
|
|
"page": page,
|
|
})
|
|
}
|