87 lines
2.5 KiB
Go
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"`
|
|
}
|