go-common/app/interface/main/tv/model/module.go
2019-04-22 18:49:16 +08:00

87 lines
2.5 KiB
Go

package model
const (
_OldIdx = 0
_OldZone = 1
_PgcIdx = 2
_UgcIdx = 3
_homepageID = 0
)
// Module def.
type Module struct {
ID int `json:"id"`
PageID int `json:"page_id"`
Type int `json:"type"`
Title string `json:"title"`
Icon string `json:"icon"`
Source int `json:"source"`
Flexible int `json:"flexible"`
Capacity int `json:"capacity"`
More int `json:"more"`
MoreType int `json:"more_type"`
MoreNewPage int `json:"more_new_page"`
MorePage int `json:"more_page"`
Order int `json:"order"`
Data []*ModCard `json:"data"`
SrcType int `json:"src_type"`
}
// JumpNewIdx tells whether this modules jumps to the new idx page
func (m *Module) JumpNewIdx() bool {
return m.MoreType == _PgcIdx || m.MoreType == _UgcIdx
}
// OnHomepage tells whether the module is on the homepage
func (m *Module) OnHomepage() bool {
return m.PageID == _homepageID
}
// MoreTreat treats the morepage and moretype related, used for zone/modpages, not homepage
func (m *Module) MoreTreat() {
if m.MorePage == 0 {
return
}
if m.MoreType == _OldIdx || m.MoreType == _OldZone { // if more jump setting is old zone/idx (<=1.13), set more_new_page = more_page
m.MoreNewPage = m.MorePage
}
if m.MoreType == _PgcIdx || m.MoreType == _UgcIdx { // if more jump setting is new ugc/pgc idx, set more_new_page = Idx category, more_page = page_id
m.MoreNewPage = m.MorePage
m.MorePage = m.PageID
}
}
// IsUGC returns whether the module is filled by ugc or not
func (m Module) IsUGC() bool {
return m.SrcType == _TypeUGC
}
// ModCard structure, based on normal Card, 4 more fields for Follow Module
type ModCard struct {
Card
LastEPIndex string `json:"last_ep_index"`
NewestEPIndex string `json:"newest_ep_index"`
TotalCount string `json:"total_count"`
IsFinish string `json:"is_finish"`
}
// ReqModData is the request body to modData function
type ReqModData struct {
Mod *Module
PGCListM map[int][]*Card
UGCListM map[int][]*Card
}
// ReqPageFollow is the request body to PageFollow function
type ReqPageFollow struct {
AccessKey string `form:"access_key"`
PageID int `form:"page_id" validate:"min=0"`
Build int `form:"build"`
}
// ReqHomeFollow is the request body to HomeFollow function
type ReqHomeFollow struct {
AccessKey string `form:"access_key"`
Build int `form:"build"`
}