This commit is contained in:
mubai
2023-12-24 23:32:32 +08:00
parent 86e0501d2f
commit c71c5c1d08
4 changed files with 0 additions and 362 deletions

View File

@@ -1,67 +0,0 @@
package controller
import (
"github.com/gin-gonic/gin"
"net/http"
"server/logic"
"server/model/system"
"strconv"
)
// 提供用于第三方站点采集的API
// HandleProvide 返回视频列表信息
func HandleProvide(c *gin.Context) {
// 将请求参数封装为一个map
var params = map[string]string{
"t": c.DefaultQuery("t", ""),
//"pg": c.DefaultQuery("pg", ""),
"wd": c.DefaultQuery("wd", ""),
"h": c.DefaultQuery("h", ""),
"ids": c.DefaultQuery("ids", ""),
}
// 设置分页信息
currentStr := c.DefaultQuery("pg", "1")
pageSizeStr := c.DefaultQuery("limit", "20")
current, _ := strconv.Atoi(currentStr)
pageSize, _ := strconv.Atoi(pageSizeStr)
page := system.Page{PageSize: pageSize, Current: current}
// ac-请求类型 t-类别ID pg-页码 wd-搜索关键字 h=几小时内的数据 ids-数据ID 多个ID逗好分割
var ac string = c.DefaultQuery("ac", "")
switch ac {
case "list":
c.JSON(http.StatusOK, logic.PL.GetFilmListPage(params, &page))
case "detail", "videolist":
c.JSON(http.StatusOK, logic.PL.GetFilmDetailPage(params, &page))
default:
c.JSON(http.StatusOK, logic.PL.GetFilmListPage(params, &page))
}
}
// HandleProvideXml 处理返回xml格式的数据
func HandleProvideXml(c *gin.Context) {
// 将请求参数封装为一个map
var params = map[string]string{
"t": c.DefaultQuery("t", ""),
//"pg": c.DefaultQuery("pg", ""),
"wd": c.DefaultQuery("wd", ""),
"h": c.DefaultQuery("h", ""),
"ids": c.DefaultQuery("ids", ""),
}
// 设置分页信息
currentStr := c.DefaultQuery("pg", "1")
pageSizeStr := c.DefaultQuery("limit", "20")
current, _ := strconv.Atoi(currentStr)
pageSize, _ := strconv.Atoi(pageSizeStr)
page := system.Page{PageSize: pageSize, Current: current}
// ac-请求类型 t-类别ID pg-页码 wd-搜索关键字 h=几小时内的数据 ids-数据ID 多个ID逗好分割
var ac string = c.DefaultQuery("ac", "")
switch ac {
case "list":
c.XML(http.StatusOK, logic.PL.GetFilmListXmlPage(params, &page))
case "detail", "videolist":
c.XML(http.StatusOK, logic.PL.GetFilmDetailXmlPage(params, &page))
default:
c.XML(http.StatusOK, logic.PL.GetFilmListXmlPage(params, &page))
}
}

View File

@@ -1,114 +0,0 @@
package logic
import (
"fmt"
"log"
"server/config"
"server/model/collect"
"server/model/system"
"server/plugin/common/conver"
"strconv"
"strings"
)
type ProvideLogic struct {
}
var PL *ProvideLogic
// GetFilmDetailPage 处理请求参数, 返回filmDetail数据
func (pl *ProvideLogic) GetFilmDetailPage(params map[string]string, page *system.Page) collect.FilmDetailLPage {
return filmDetailPage(params, page)
}
// GetFilmListPage 处理请求参数, 返回filmList数据
func (pl *ProvideLogic) GetFilmListPage(params map[string]string, page *system.Page) collect.FilmListPage {
dp := filmDetailPage(params, page)
var p collect.FilmListPage = collect.FilmListPage{
Code: dp.Code,
Msg: dp.Msg,
Page: dp.Page,
PageCount: dp.PageCount,
Limit: dp.Limit,
Total: dp.Total,
List: conver.DetailCovertList(dp.List),
Class: collect.GetFilmClass(),
}
return p
}
func (pl *ProvideLogic) GetFilmDetailXmlPage(params map[string]string, page *system.Page) collect.RssD {
dp := filmDetailPage(params, page)
var dxp = collect.RssD{
Version: config.RssVersion,
List: collect.FilmDetailPageX{
Page: fmt.Sprint(dp.Page),
PageCount: dp.PageCount,
PageSize: fmt.Sprint(dp.Limit),
RecordCount: len(dp.List),
Videos: conver.DetailCovertXml(dp.List),
},
}
return dxp
}
func (pl *ProvideLogic) GetFilmListXmlPage(params map[string]string, page *system.Page) collect.RssL {
dp := filmDetailPage(params, page)
cl := collect.GetFilmClass()
var dxp = collect.RssL{
Version: config.RssVersion,
List: collect.FilmListPageX{
Page: dp.Page,
PageCount: dp.PageCount,
PageSize: dp.Limit,
RecordCount: len(dp.List),
Videos: conver.DetailCovertListXml(dp.List),
},
ClassXL: conver.ClassListCovertXml(cl),
}
return dxp
}
func filmDetailPage(params map[string]string, page *system.Page) collect.FilmDetailLPage {
var p collect.FilmDetailLPage = collect.FilmDetailLPage{
Code: 1,
Msg: "数据列表",
Page: fmt.Sprint(page.Current),
}
// 如果params中的ids不为空, 则直接返回ids对应的数据
if len(params["ids"]) > 0 {
var ids []int64
for _, idStr := range strings.Split(params["ids"], ",") {
if id, err := strconv.ParseInt(idStr, 10, 64); err == nil {
ids = append(ids, id)
}
}
page.Total = len(ids)
page.PageCount = int((len(ids) + page.PageSize - 1) / page.PageSize)
// 获取id对应的数据
for i := 0; i >= (page.Current-1)*page.PageSize && i < page.Total && i < page.Current*page.PageSize; i++ {
if fd, err := collect.GetOriginalDetailById(ids[i]); err == nil {
p.List = append(p.List, conver.FilterFilmDetail(fd, 0))
}
}
p.PageCount = page.PageCount
p.Limit = fmt.Sprint(page.PageSize)
p.Total = page.Total
return p
}
// 如果请求参数中不包含 ids, 则通过条件进行对应查找
l, err := system.FindFilmIds(params, page)
if err != nil {
log.Println(err)
}
for _, id := range l {
if fd, e := collect.GetOriginalDetailById(id); e == nil {
p.List = append(p.List, conver.FilterFilmDetail(fd, 0))
}
}
p.PageCount = page.PageCount
p.Limit = fmt.Sprint(page.PageSize)
p.Total = page.Total
return p
}