go-common/app/interface/openplatform/article/model/cards.go

105 lines
2.5 KiB
Go
Raw Normal View History

2019-04-22 10:49:16 +00:00
package model
import (
"fmt"
)
// Cards
const (
CardPrefixBangumi = "ss"
CardPrefixBangumiEp = "ep"
CardPrefixTicket = "pw"
CardPrefixMall = "sp"
CardPrefixAudio = "au"
CardPrefixArchive = "av"
CardPrefixArticle = "cv"
)
// TicketCard .
type TicketCard struct {
ID int64 `json:"id"`
Name string `json:"name"`
Image string `json:"performance_image"`
StartTime int64 `json:"start_time"`
EndTime int64 `json:"end_time"`
Province string `json:"province_name"`
City string `json:"city_name"`
District string `json:"district_name"`
Venue string `json:"venue_name"`
PriceLow float64 `json:"price_low"`
URL string `json:"url"`
}
// MallCard .
type MallCard struct {
ID int64 `json:"itemsId"`
Name string `json:"name"`
Brief string `json:"brief"`
Images []string `json:"img"`
Price int64 `json:"price"`
Type int `json:"type"`
}
// AudioCard .
type AudioCard struct {
ID int64 `json:"song_id"`
Title string `json:"title"`
UpMid int64 `json:"up_mid"`
UpName string `json:"up_name"`
Play int64 `json:"play_num"`
Reply int64 `json:"reply_num"`
CoverURL string `json:"cover_url"`
}
// BangumiCard .
type BangumiCard struct {
ID int64 `json:"season_id"`
Type int64 `json:"season_type"`
TypeName string `json:"season_type_name"`
Image string `json:"cover"`
Title string `json:"title"`
Rating struct {
Score float64 `json:"score"`
Count int64 `json:"count"`
} `json:"rating"`
Playable bool `json:"playable"`
FollowCount int64 `json:"follow_count"`
PlayCount int64 `json:"play_count"`
}
// Cards .
type Cards struct {
Type string `json:"type,omitempty"`
TicketCard *TicketCard `json:"ticket_card,omitempty"`
BangumiCard *BangumiCard `json:"bangumi_card,omitempty"`
MallCard *MallCard `json:"mall_card,omitempty"`
AudioCard *AudioCard `json:"audio_card,omitempty"`
}
// Key .
func (c *Cards) Key() string {
var id int64
if c.TicketCard != nil {
id = c.TicketCard.ID
} else if c.BangumiCard != nil {
id = c.BangumiCard.ID
} else if c.MallCard != nil {
id = c.MallCard.ID
} else if c.AudioCard != nil {
id = c.AudioCard.ID
}
return fmt.Sprintf("%s%d", c.Type, id)
}
// Item .
func (c *Cards) Item() interface{} {
if c.TicketCard != nil {
return c.TicketCard
} else if c.BangumiCard != nil {
return c.BangumiCard
} else if c.MallCard != nil {
return c.MallCard
}
return c.AudioCard.ID
}