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.
135 lines
2.8 KiB
135 lines
2.8 KiB
package model |
|
|
|
import ( |
|
"go-common/library/time" |
|
) |
|
|
|
const ( |
|
_TypeUGC = 2 |
|
_TypePGC = 1 |
|
) |
|
|
|
// Homepage is the home page struct |
|
type Homepage struct { |
|
Recom []*Card `json:"recom"` |
|
Latest []*Card `json:"latest"` |
|
Lists map[string][]*Card `json:"lists"` |
|
Follow []*Follow `json:"follow,omitempty"` |
|
} |
|
|
|
// Card is the unit to display |
|
type Card struct { |
|
SeasonID int `json:"season_id"` |
|
Title string `json:"title"` |
|
Cover string `json:"cover"` |
|
Type int `json:"type"` // 1=pgc, 2=ugc |
|
NewEP *NewEP `json:"new_ep"` |
|
CornerMark *SnVipCorner `json:"cornermark"` |
|
} |
|
|
|
// IsUGC returns whether the card is ugc card |
|
func (c Card) IsUGC() bool { |
|
return c.Type == _TypeUGC |
|
} |
|
|
|
// BePGC def. |
|
func (c *Card) BePGC() { |
|
c.Type = _TypePGC |
|
} |
|
|
|
// NewEP is the latest EP of a season |
|
type NewEP struct { |
|
ID int64 `json:"id"` |
|
Index string `json:"index"` |
|
IndexShow string `json:"index_show"` |
|
Cover string `json:"cover"` |
|
} |
|
|
|
// Rank represents the table TV_RANK |
|
type Rank struct { |
|
ID int64 |
|
Rank int |
|
Title string |
|
Type int8 |
|
CID int64 |
|
ContID int64 |
|
Category int8 |
|
Position int32 |
|
IsDeleted int8 |
|
Ctime time.Time |
|
Mtime time.Time |
|
} |
|
|
|
// SimpleRank picks the necessary fields from tv_rank |
|
type SimpleRank struct { |
|
ContID int64 |
|
ContType int |
|
} |
|
|
|
// RespModInterv is the response struct for mod intervention |
|
type RespModInterv struct { |
|
Ranks []*SimpleRank |
|
AIDs []int64 |
|
SIDs []int64 |
|
} |
|
|
|
// IsUGC returns whether the card is ugc card |
|
func (c SimpleRank) IsUGC() bool { |
|
return c.ContType == _TypeUGC |
|
} |
|
|
|
// ReqZone is the request struct of zone page |
|
type ReqZone struct { |
|
SType int |
|
IntervType int |
|
LengthLimit int |
|
IntervM int |
|
PGCListM map[int][]*Card |
|
} |
|
|
|
//RespAI is the response of AI ugc rank data |
|
type RespAI struct { |
|
Note string `json:"note"` |
|
SourceData string `json:"source_data"` |
|
Code int `json:"code"` |
|
Num int `json:"num"` |
|
List []*AIData `json:"list"` |
|
} |
|
|
|
// AIData is the ai card structure |
|
type AIData struct { |
|
AID int `json:"aid"` |
|
MID int `json:"mid"` |
|
Pts int `json:"pts"` |
|
Play int `json:"play"` |
|
Coints int `json:"coins"` |
|
VideoReview int `json:"video_review"` |
|
} |
|
|
|
//ToCard transforms an ArcCMS to Card |
|
func (a ArcCMS) ToCard() *Card { |
|
return &Card{ |
|
SeasonID: int(a.AID), |
|
Title: a.Title, |
|
Cover: a.Cover, |
|
Type: _TypeUGC, |
|
NewEP: &NewEP{Cover: a.Cover}, |
|
} |
|
} |
|
|
|
//ToIdxSn transforms an ArcCMS to IdxSeason |
|
func (a ArcCMS) ToIdxSn() *IdxSeason { |
|
return &IdxSeason{ |
|
SeasonID: a.AID, |
|
Title: a.Title, |
|
Cover: a.Cover, |
|
Upinfo: "", |
|
} |
|
} |
|
|
|
// ReqZoneInterv is the request structure for zone intervention |
|
type ReqZoneInterv struct { |
|
RankType int |
|
Category int |
|
Limit int |
|
}
|
|
|