Create & Init Project...
This commit is contained in:
269
app/interface/main/app-interface/model/space/contribute.go
Normal file
269
app/interface/main/app-interface/model/space/contribute.go
Normal file
@ -0,0 +1,269 @@
|
||||
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
|
||||
)
|
||||
|
||||
// Contributes struct
|
||||
type Contributes struct {
|
||||
Tab *Tab `json:"tab,omitempty"`
|
||||
Items []*Item `json:"items,omitempty"`
|
||||
Links *Links `json:"links,omitempty"`
|
||||
}
|
||||
|
||||
// Tab struct
|
||||
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"`
|
||||
}
|
||||
|
||||
// Item struct
|
||||
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"`
|
||||
}
|
||||
|
||||
// Links struct
|
||||
type Links struct {
|
||||
Previous int64 `json:"previous,omitempty"`
|
||||
Next int64 `json:"next,omitempty"`
|
||||
}
|
||||
|
||||
// Link func
|
||||
func (l *Links) Link(sinceID, untilID int64) {
|
||||
if sinceID < 0 || untilID < 0 {
|
||||
return
|
||||
}
|
||||
l.Previous = sinceID
|
||||
l.Next = untilID
|
||||
}
|
||||
|
||||
// Items struct
|
||||
type Items []*Item
|
||||
|
||||
//Len()
|
||||
func (is Items) Len() int { return len(is) }
|
||||
|
||||
//Less()
|
||||
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
|
||||
}
|
||||
|
||||
//Swap()
|
||||
func (is Items) Swap(i, j int) {
|
||||
is[i], is[j] = is[j], is[i]
|
||||
}
|
||||
|
||||
// Clip struct
|
||||
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"`
|
||||
}
|
||||
|
||||
// Album struct
|
||||
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"`
|
||||
}
|
||||
|
||||
// Pictures struct
|
||||
type Pictures struct {
|
||||
ImgSrc string `json:"img_src"`
|
||||
ImgWidth string `json:"img_width"`
|
||||
ImgHeight string `json:"img_height"`
|
||||
}
|
||||
|
||||
// Tag tag.
|
||||
type Tag struct {
|
||||
Tid int64 `json:"tid"`
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
// FromArc3 func
|
||||
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)
|
||||
}
|
||||
|
||||
// FromArticle func
|
||||
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
|
||||
}
|
||||
|
||||
// FromClip func
|
||||
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
|
||||
}
|
||||
|
||||
// FromAlbum func
|
||||
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
|
||||
}
|
||||
|
||||
// FromAudio func
|
||||
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
|
||||
}
|
||||
|
||||
// FormatKey func
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
// ParseKey func
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
// Attrs struct
|
||||
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"`
|
||||
}
|
Reference in New Issue
Block a user