Files
GoFilm/server/controller/FilmController.go
2024-07-11 05:35:22 +08:00

202 lines
5.5 KiB
Go

package controller
import (
"fmt"
"github.com/gin-gonic/gin"
"server/logic"
"server/model/system"
"server/plugin/spider"
"strconv"
"time"
)
// FilmSearchPage 获取影视分页数据
func FilmSearchPage(c *gin.Context) {
var s = system.SearchVo{Paging: &system.Page{}}
var err error
// 检索参数
s.Name = c.DefaultQuery("name", "")
s.Pid, err = strconv.ParseInt(c.DefaultQuery("pid", "0"), 10, 64)
if err != nil {
system.Failed("影片分页数据获取失败, 请求参数异常", c)
return
}
s.Cid, err = strconv.ParseInt(c.DefaultQuery("cid", "0"), 10, 64)
if err != nil {
system.Failed("影片分页数据获取失败, 请求参数异常", c)
return
}
s.Plot = c.DefaultQuery("plot", "")
s.Area = c.DefaultQuery("area", "")
s.Language = c.DefaultQuery("language", "")
year := c.DefaultQuery("year", "")
if year == "" {
s.Year = 0
} else {
s.Year, err = strconv.ParseInt(year, 10, 64)
if err != nil {
system.Failed("影片分页数据获取失败, 请求参数异常", c)
return
}
}
s.Remarks = c.DefaultQuery("remarks", "")
// 处理时间参数
begin := c.DefaultQuery("beginTime", "")
if begin == "" {
s.BeginTime = 0
} else {
beginTime, e := time.ParseInLocation(time.DateTime, begin, time.Local)
if e != nil {
system.Failed("影片分页数据获取失败, 请求参数异常", c)
return
}
s.BeginTime = beginTime.Unix()
}
end := c.DefaultQuery("endTime", "")
if end == "" {
s.EndTime = 0
} else {
endTime, e := time.ParseInLocation(time.DateTime, end, time.Local)
if e != nil {
system.Failed("影片分页数据获取失败, 请求参数异常", c)
return
}
s.EndTime = endTime.Unix()
}
// 分页参数
s.Paging.Current, err = strconv.Atoi(c.DefaultQuery("current", "1"))
s.Paging.PageSize, err = strconv.Atoi(c.DefaultQuery("pageSize", "10"))
// 如果分页数据超出指定范围则设置为默认值
if s.Paging.PageSize <= 0 || s.Paging.PageSize > 500 {
s.Paging.PageSize = 10
}
if err != nil {
system.Failed("影片分页数据获取失败, 请求参数异常", c)
return
}
// 提供检索tag options
options := logic.FL.GetSearchOptions()
// 检索条件
sl := logic.FL.GetFilmPage(s)
system.Success(gin.H{
"params": s,
"list": sl,
"options": options,
}, "影片分页信息获取成功", c)
}
// FilmAdd 手动添加影片
func FilmAdd(c *gin.Context) {
// 获取请求参数
var fd = system.FilmDetailVo{}
if err := c.ShouldBindJSON(&fd); err != nil {
system.Failed("影片添加失败, 影片参数提交异常", c)
return
}
// 如果绑定成功则执行影片信息处理保存逻辑
if err := logic.FL.SaveFilmDetail(fd); err != nil {
system.Failed(fmt.Sprint("影片添加失败, 影片信息保存错误: ", err.Error()), c)
return
}
system.SuccessOnlyMsg("影片信息添加成功", c)
}
// FilmDelete 删除影片检索信息, 逻辑删除
func FilmDelete(c *gin.Context) {
// 获取影片ID
idStr := c.DefaultQuery("id", "")
if idStr == "" {
system.Failed("删除失败,缺少ID参数", c)
return
}
id, err := strconv.ParseInt(idStr, 10, 64)
if err != nil {
system.Failed("删除失败,参数类型异常", c)
return
}
// 通过ID删除对应影片检索信息
if err = logic.FL.DelFilm(id); err != nil {
system.Failed(fmt.Sprintln("删除失败: ", err.Error()), c)
return
}
system.SuccessOnlyMsg("影片删除成功", c)
}
//----------------------------------------------------影片分类处理----------------------------------------------------
// FilmClassTree 影片分类树数据
func FilmClassTree(c *gin.Context) {
// 获取影片分类树信息
tree := logic.FL.GetFilmClassTree()
system.Success(tree, "影片分类信息获取成功", c)
return
}
// FindFilmClass 获取指定ID对应的影片分类信息
func FindFilmClass(c *gin.Context) {
idStr := c.DefaultQuery("id", "")
if idStr == "" {
system.Failed("影片分类信息获取失败, 分类Id不能为空", c)
return
}
// 转化id类型为int
id, err := strconv.ParseInt(idStr, 10, 64)
if err != nil {
system.Failed("影片分类信息获取失败, 参数分类Id格式异常", c)
return
}
// 通过Id返回对应的分类信息
class := logic.FL.GetFilmClassById(id)
if class == nil {
system.Failed("影片分类信息获取失败, 分类信息不存在", c)
return
}
system.Success(class, "分类信息查找成功", c)
}
// UpdateFilmClass 更新指定分类的影片数据
func UpdateFilmClass(c *gin.Context) {
// 获取修改后的分类信息
var class = system.CategoryTree{}
if err := c.ShouldBindJSON(&class); err != nil {
system.Failed("更新失败, 请求参数异常", c)
return
}
if class.Id == 0 {
system.Failed("更新失败, 分类Id缺失", c)
return
}
// 修改分类信息
if err := logic.FL.UpdateClass(class); err != nil {
system.Failed(err.Error(), c)
return
}
// 更新成功后删除首页缓存
spider.ClearCache()
system.SuccessOnlyMsg("影片分类信息更新成功", c)
}
// DelFilmClass 删除指定ID对应的影片分类
func DelFilmClass(c *gin.Context) {
idStr := c.DefaultQuery("id", "")
if idStr == "" {
system.Failed("影片分类信息获取失败, 分类Id不能为空", c)
return
}
// 转化id类型为int
id, err := strconv.ParseInt(idStr, 10, 64)
if err != nil {
system.Failed("影片分类信息获取失败, 参数分类Id格式异常", c)
return
}
// 通过ID删除对应分类信息
if err = logic.FL.DelClass(id); err != nil {
system.Failed(err.Error(), c)
return
}
system.SuccessOnlyMsg("当前分类已删除成功", c)
}