123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269 |
- package space
- import (
- "go-common/app/interface/main/app-interface/model"
- "go-common/app/interface/main/app-interface/model/audio"
- "go-common/app/interface/main/app-interface/model/bplus"
- article "go-common/app/interface/openplatform/article/model"
- "go-common/app/service/main/archive/api"
- xtime "go-common/library/time"
- "strconv"
- )
- const (
- _gotoAv = 0
- _gotoArticle = 1
- _gotoClip = 2
- _gotoAlbum = 3
- _gotoAudio = 4
- )
- type Contributes struct {
- Tab *Tab `json:"tab,omitempty"`
- Items []*Item `json:"items,omitempty"`
- Links *Links `json:"links,omitempty"`
- }
- type Tab struct {
- Archive bool `json:"archive"`
- Article bool `json:"article"`
- Clip bool `json:"clip"`
- Album bool `json:"album"`
- Favorite bool `json:"favorite"`
- Bangumi bool `json:"bangumi"`
- Coin bool `json:"coin"`
- Like bool `json:"like"`
- Community bool `json:"community"`
- Dynamic bool `json:"dynamic"`
- Audios bool `json:"audios"`
- Shop bool `json:"shop"`
- }
- type Item struct {
- ID int64 `json:"id,omitempty"`
- TypeName string `json:"tname,omitempty"`
- Category *article.Category `json:"category,omitempty"`
- Title string `json:"title,omitempty"`
- Cover string `json:"cover,omitempty"`
- Tag string `json:"tag,omitempty"`
- Tags []*article.Tag `json:"tags,omitempty"`
- Desc string `json:"description,omitempty"`
- URI string `json:"uri,omitempty"`
- Param string `json:"param,omitempty"`
- Goto string `json:"goto,omitempty"`
- Length string `json:"length,omitempty"`
- Duration int64 `json:"duration,omitempty"`
- Banner string `json:"banner,omitempty"`
- Play int `json:"play,omitempty"`
- Comment int `json:"comment,omitempty"`
- Danmaku int `json:"danmaku,omitempty"`
- Count int `json:"count,omitempty"`
- Reply int `json:"reply,omitempty"`
- CTime xtime.Time `json:"ctime,omitempty"`
- MTime xtime.Time `json:"mtime,omitempty"`
- ImageURLs []string `json:"image_urls,omitempty"`
- Pictures []*bplus.Pictures `json:"pictures,omitempty"`
- Words int64 `json:"words,omitempty"`
- Stats *article.Stats `json:"stats,omitempty"`
- AuthType int `json:"authType,omitempty"`
- Member int64 `json:"member,omitempty"`
- }
- type Links struct {
- Previous int64 `json:"previous,omitempty"`
- Next int64 `json:"next,omitempty"`
- }
- func (l *Links) Link(sinceID, untilID int64) {
- if sinceID < 0 || untilID < 0 {
- return
- }
- l.Previous = sinceID
- l.Next = untilID
- }
- type Items []*Item
- func (is Items) Len() int { return len(is) }
- func (is Items) Less(i, j int) bool {
- var it, jt xtime.Time
- if is[i] != nil {
- it = is[i].CTime
- }
- if is[j] != nil {
- jt = is[j].CTime
- }
- return it > jt
- }
- func (is Items) Swap(i, j int) {
- is[i], is[j] = is[j], is[i]
- }
- type Clip struct {
- ID int64 `json:"id"`
- Duration int64 `json:"duration"`
- CTime xtime.Time `json:"ctime"`
- View int `json:"view"`
- Damaku int `json:"damaku"`
- Title string `json:"title"`
- Cover string `json:"cover"`
- Tag string `json:"tag"`
- }
- type Album struct {
- ID int64 `json:"doc_id"`
- CTime xtime.Time `json:"ctime"`
- Count int `json:"count"`
- View int `json:"view"`
- Comment int `json:"comment"`
- Title string `json:"title"`
- Desc string `json:"description"`
- Pictures []*Pictures `json:"pictures"`
- }
- type Pictures struct {
- ImgSrc string `json:"img_src"`
- ImgWidth string `json:"img_width"`
- ImgHeight string `json:"img_height"`
- }
- type Tag struct {
- Tid int64 `json:"tid"`
- Name string `json:"name"`
- }
- func (i *Item) FromArc3(a *api.Arc) {
- i.ID = a.Aid
- i.Title = a.Title
- i.Cover = a.Pic
- i.TypeName = a.TypeName
- i.Param = strconv.FormatInt(a.Aid, 10)
- i.Goto = model.GotoAv
- i.URI = model.FillURI(i.Goto, i.Param, nil)
- i.Danmaku = int(a.Stat.Danmaku)
- i.Duration = a.Duration
- i.CTime = a.PubDate
- i.Play = int(a.Stat.View)
- }
- func (i *Item) FromArticle(a *article.Meta) {
- i.ID = a.ID
- i.Title = a.Title
- i.Category = a.Category
- i.Desc = a.Summary
- i.ImageURLs = a.ImageURLs
- i.CTime = a.Ctime
- i.Tags = a.Tags
- i.Banner = a.BannerURL
- i.Param = strconv.FormatInt(a.ID, 10)
- i.Goto = model.GotoArticle
- i.URI = model.FillURI(i.Goto, i.Param, nil)
- i.Stats = a.Stats
- }
- func (i *Item) FromClip(c *bplus.Clip) {
- i.ID = c.ID
- i.Duration = c.Duration
- i.CTime = c.CTime
- i.Play = c.View
- i.Danmaku = c.Damaku
- i.Param = strconv.FormatInt(c.ID, 10)
- i.Goto = model.GotoClip
- i.URI = model.FillURI(i.Goto, i.Param, nil)
- i.Title = c.Title
- i.Cover = c.Cover
- i.Tag = c.Tag
- }
- func (i *Item) FromAlbum(a *bplus.Album) {
- i.ID = a.ID
- i.CTime = a.CTime
- i.Count = a.Count
- i.Play = a.View
- i.Comment = a.Comment
- i.Param = strconv.FormatInt(a.ID, 10)
- i.Goto = model.GotoAlbum
- i.URI = model.FillURI(i.Goto, i.Param, nil)
- i.Title = a.Title
- i.Desc = a.Desc
- i.Pictures = a.Pictures
- }
- func (i *Item) FromAudio(a *audio.Audio) {
- i.ID = a.ID
- i.CTime = a.CTime
- i.Play = a.Play
- i.Reply = a.Reply
- i.Param = strconv.FormatInt(a.ID, 10)
- i.Goto = model.GotoAudio
- i.URI = a.Schema
- i.Cover = a.Cover
- i.Title = a.Title
- i.AuthType = a.AuthType
- i.Duration = a.Duration
- }
- func (i *Item) FormatKey() {
- switch i.Goto {
- case model.GotoAv:
- i.Member = i.ID<<6 | _gotoAv
- case model.GotoArticle:
- i.Member = i.ID<<6 | _gotoArticle
- case model.GotoClip:
- i.Member = i.ID<<6 | _gotoClip
- case model.GotoAlbum:
- i.Member = i.ID<<6 | _gotoAlbum
- case model.GotoAudio:
- i.Member = i.ID<<6 | _gotoAudio
- default:
- i.Member = i.ID
- }
- }
- func (i *Item) ParseKey() {
- i.ID = i.Member >> 6
- switch int(i.Member & 0x3f) {
- case _gotoAv:
- i.Goto = model.GotoAv
- case _gotoArticle:
- i.Goto = model.GotoArticle
- case _gotoClip:
- i.Goto = model.GotoClip
- case _gotoAlbum:
- i.Goto = model.GotoAlbum
- case _gotoAudio:
- i.Goto = model.GotoAudio
- }
- }
- type Attrs struct {
- Archive bool `json:"archive,omitempty"`
- Article bool `json:"article,omitempty"`
- Clip bool `json:"clip,omitempty"`
- Album bool `json:"album,omitempty"`
- Audio bool `json:"audio,omitempty"`
- }
|