go-common/app/admin/main/tv/model/video.go

111 lines
3.6 KiB
Go
Raw Normal View History

2019-04-22 10:49:16 +00:00
package model
import (
arccli "go-common/app/service/main/archive/api"
"go-common/library/time"
)
// Video is used from PGC video
type Video struct {
ID int `gorm:"column:id" json:"id"`
AID int `gorm:"column:aid" json:"aid"`
Eptitle string `gorm:"column:eptitle" json:"eptitle"`
Description string `gorm:"column:description" json:"description"`
CID int64 `gorm:"column:cid" json:"cid"`
Duration int `gorm:"column:duration" json:"duration"`
IndexOrder int `gorm:"column:duration" json:"index_order"`
Ctime time.Time `gorm:"column:ctime" json:"ctime"`
Mtime time.Time `gorm:"column:mtime" json:"mtime"`
InjectTime time.Time `gorm:"column:inject_time" json:"inject_time"`
Valid uint8 `gorm:"column:valid" json:"valid"`
Submit uint8 `gorm:"column:submit" json:"submit"`
Retry int `gorm:"column:retry" json:"retry"`
Result int `gorm:"column:result" json:"result"`
Deleted uint8 `gorm:"column:deleted" json:"deleted"`
State int `gorm:"column:state" json:"state"`
Reason string `gorm:"column:reason" json:"reason"`
Manual int `gorm:"column:manual" json:"manual"`
}
// VideoListParam is used for vlideolist funtion param valid
type VideoListParam struct {
CID string `form:"cid" json:"cid"`
VID string `form:"vid" json:"vid"`
Typeid int16 `form:"typeid" json:"typeid"`
Pid int32 `form:"pid" json:"-"`
Valid string `form:"valid" json:"valid"`
Order int `form:"order" json:"order" default:"2"`
Pn int `form:"pn" json:"pn" default:"1"`
Ps int `form:"ps" json:"ps" default:"20"`
}
// VideoListQuery is used for selecting the field of pgc video
type VideoListQuery struct {
ID string `json:"id"`
VID string `json:"vid" gorm:"column:cid"`
CID string `json:"cid" gorm:"column:aid"`
Eptitle string `json:"eptitle"`
Valid string `json:"valid" gorm:"column:valid"`
Mtime time.Time `json:"mtime"`
SeasonTitle string `json:"season_title" gorm:"column:title"`
TypeID int32 `json:"typeid" gorm:"column:typeid"`
PTypeID int32 `json:"parent_typeid"`
Page int `json:"page" gorm:"column:index_order"`
}
// VideoListPager is used by video list function to return result and page info
type VideoListPager struct {
Items []*VideoListQuery `json:"items"`
Page *Page `json:"page"`
}
// TableName ugc_video
func (a VideoListQuery) TableName() string {
return "ugc_video"
}
// TableName ugc_video
func (video Video) TableName() string {
return "ugc_video"
}
// ConsultRes transforms an archive to ArcRes
func (arc *Archive) ConsultRes(dict map[int32]*arccli.Tp) (res *ArcRes) {
var pid int32
res = &ArcRes{}
if cat, ok := dict[arc.TypeID]; ok {
pid = cat.Pid
res.SecondCat = cat.Name
}
if pid != 0 {
if pcat, ok := dict[pid]; ok {
res.FirstCat = pcat.Name
}
}
res.Status = int(arc.Result)
res.AVID = arc.AID
res.Title = arc.Title
res.PubTime = arc.Pubtime.Time().Format("2006-01-02 15:04:05")
if arc.InjectTime >= 0 {
res.InjectTime = arc.InjectTime.Time().Format("2006-01-02 15:04:05")
}
res.Reason = arc.Reason
return
}
// ConsultRes transforms an video to VideoRes
func (video *Video) ConsultRes() (res *VideoRes) {
res = &VideoRes{
CID: video.CID,
Title: video.Eptitle,
Page: video.IndexOrder,
Status: video.Result,
Ctime: video.Ctime.Time().Format("2006-01-02 15:04:05"),
Reason: video.Reason,
}
if video.InjectTime >= 0 {
res.InjectTime = video.InjectTime.Time().Format("2006-01-02 15:04:05")
}
return
}