You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.5 KiB
86 lines
2.5 KiB
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"` |
|
}
|
|
|