Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"contribute.go",
"mine.go",
"space.go",
],
importpath = "go-common/app/interface/main/app-interface/model/space",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/app-interface/model:go_default_library",
"//app/interface/main/app-interface/model/audio:go_default_library",
"//app/interface/main/app-interface/model/bangumi:go_default_library",
"//app/interface/main/app-interface/model/bplus:go_default_library",
"//app/interface/main/app-interface/model/community:go_default_library",
"//app/interface/main/app-interface/model/elec:go_default_library",
"//app/interface/main/app-interface/model/favorite:go_default_library",
"//app/interface/main/tag/model:go_default_library",
"//app/interface/openplatform/article/model:go_default_library",
"//app/service/main/account/api:go_default_library",
"//app/service/main/account/model:go_default_library",
"//app/service/main/archive/api:go_default_library",
"//library/time:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View 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"`
}

View File

@@ -0,0 +1,87 @@
package space
import (
accv1 "go-common/app/service/main/account/api"
accmdl "go-common/app/service/main/account/model"
)
// Mine my center struct
type Mine struct {
Mid int64 `json:"mid"`
Name string `json:"name"`
Face string `json:"face"`
Coin float64 `json:"coin"`
BCoin float64 `json:"bcoin"`
Sex int32 `json:"sex"`
Rank int32 `json:"rank"`
Silence int32 `json:"silence"`
EndTime int64 `json:"end_time,omitempty"`
ShowVideoup int `json:"show_videoup"`
ShowCreative int `json:"show_creative"`
Level int32 `json:"level"`
VipType int32 `json:"vip_type"`
AudioType int `json:"audio_type"`
Dynamic int64 `json:"dynamic"`
Following int64 `json:"following"`
Follower int64 `json:"follower"`
NewFollowers int64 `json:"new_followers"`
Official struct {
Type int8 `json:"type"`
Desc string `json:"desc"`
} `json:"official_verify"`
Pendant *Pendant `json:"pendant,omitempty"`
Sections []*Section `json:"sections,omitempty"`
IpadSections []*SectionItem `json:"ipad_sections,omitempty"`
IpadUpperSections []*SectionItem `json:"ipad_upper_sections,omitempty"`
}
// Section for mine page, like 【个人中心】【我的服务】
type Section struct {
Title string `json:"title"`
Items []*SectionItem `json:"items"`
}
// SectionItem like 【离线缓存】 【历史记录】,a part of section
type SectionItem struct {
Title string `json:"title"`
URI string `json:"uri"`
Icon string `json:"icon"`
NeedLogin int8 `json:"need_login,omitempty"`
RedDot int8 `json:"red_dot,omitempty"`
}
// Myinfo myinfo
type Myinfo struct {
Mid int64 `json:"mid"`
Name string `json:"name"`
Sign string `json:"sign"`
Coins float64 `json:"coins"`
Birthday string `json:"birthday"`
Face string `json:"face"`
Sex int `json:"sex"`
Level int32 `json:"level"`
Rank int32 `json:"rank"`
Silence int32 `json:"silence"`
EndTime int64 `json:"end_time,omitempty"`
Vip accmdl.VipInfo `json:"vip"`
EmailStatus int32 `json:"email_status"`
TelStatus int32 `json:"tel_status"`
Official accv1.OfficialInfo `json:"official"`
Identification int32 `json:"identification"`
Pendant *Pendant `json:"pendant,omitempty"`
}
// MineParam struct
type MineParam struct {
MobiApp string `form:"mobi_app"`
Device string `form:"device"`
Build int `form:"build"`
Platform string `form:"platform"`
Mid int64 `form:"mid"`
Filtered string `form:"filtered"`
}
// Pendant struct
type Pendant struct {
Image string `json:"image"`
}

View File

@@ -0,0 +1,363 @@
package space
import (
"strconv"
"encoding/json"
"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/bangumi"
"go-common/app/interface/main/app-interface/model/community"
"go-common/app/interface/main/app-interface/model/elec"
"go-common/app/interface/main/app-interface/model/favorite"
tag "go-common/app/interface/main/tag/model"
article "go-common/app/interface/openplatform/article/model"
"go-common/app/service/main/archive/api"
xtime "go-common/library/time"
)
// Space struct
type Space struct {
Relation int `json:"relation"`
Medal int `json:"medal,omitempty"`
Attention uint32 `json:"attention,omitempty"`
Setting *Setting `json:"setting,omitempty"`
Tab *Tab `json:"tab,omitempty"`
Card *Card `json:"card,omitempty"`
Space *Mob `json:"images,omitempty"`
Shop *Shop `json:"shop,omitempty"`
Live json.RawMessage `json:"live,omitempty"`
Elec *elec.Info `json:"elec,omitempty"`
Archive *ArcList `json:"archive,omitempty"`
Article *ArticleList `json:"article,omitempty"`
Clip *ClipList `json:"clip,omitempty"`
Album *AlbumList `json:"album,omitempty"`
Favourite *FavList `json:"favourite,omitempty"`
Season *BangumiList `json:"season,omitempty"`
CoinArc *ArcList `json:"coin_archive,omitempty"`
LikeArc *ArcList `json:"like_archive,omitempty"`
Audios *AudioList `json:"audios,omitempty"`
Community *CommuList `json:"community,omitempty"`
}
// Card struct
type Card struct {
Mid string `json:"mid"`
Name string `json:"name"`
Approve bool `json:"approve"`
Sex string `json:"sex"`
Rank string `json:"rank"`
Face string `json:"face"`
DisplayRank string `json:"DisplayRank"`
Regtime int64 `json:"regtime"`
Spacesta int `json:"spacesta"`
Birthday string `json:"birthday"`
Place string `json:"place"`
Description string `json:"description"`
Article int `json:"article"`
Attentions []int64 `json:"attentions"`
Fans int `json:"fans"`
Friend int `json:"friend"`
Attention int `json:"attention"`
Sign string `json:"sign"`
LevelInfo LevelInfo `json:"level_info"`
Pendant PendantInfo `json:"pendant"`
Nameplate NameplateInfo `json:"nameplate"`
OfficialVerify OfficialInfo `json:"official_verify"`
Vip struct {
Type int `json:"vipType"`
DueDate int64 `json:"vipDueDate"`
DueRemark string `json:"dueRemark"`
AccessStatus int `json:"accessStatus"`
VipStatus int `json:"vipStatus"`
VipStatusWarn string `json:"vipStatusWarn"`
} `json:"vip"`
FansGroup int `json:"fans_group,omitempty"`
Audio int `json:"audio,omitempty"`
FansUnread bool `json:"fans_unread,omitempty"`
}
// Mob struct
type Mob struct {
ImgURL string `json:"imgUrl"`
}
// Shop struct
type Shop struct {
ID int64 `json:"id,omitempty"`
Name string `json:"name,omitempty"`
}
// LevelInfo struct
type LevelInfo struct {
Cur int32 `json:"current_level"`
Min int32 `json:"current_min"`
NowExp int32 `json:"current_exp"`
NextExp interface{} `json:"next_exp"`
}
// PendantInfo struct
type PendantInfo struct {
Pid int `json:"pid"`
Name string `json:"name"`
Image string `json:"image"`
Expire int `json:"expire"`
}
// NameplateInfo struct
type NameplateInfo struct {
Nid int `json:"nid"`
Name string `json:"name"`
Image string `json:"image"`
ImageSmall string `json:"image_small"`
Level string `json:"level"`
Condition string `json:"condition"`
}
// OfficialInfo struct
type OfficialInfo struct {
Type int8 `json:"type"`
Desc string `json:"desc"`
Role int8 `json:"role"`
Title string `json:"title"`
}
// Setting struct
type Setting struct {
Channel int `json:"channel,omitempty"`
FavVideo int `json:"fav_video"`
CoinsVideo int `json:"coins_video"`
LikesVideo int `json:"likes_video"`
Bangumi int `json:"bangumi"`
PlayedGame int `json:"played_game"`
Groups int `json:"groups"`
}
// TagList struct
type TagList struct {
Count int `json:"count"`
Tags []*tag.Tag `json:"item"`
}
// ArcList struct
type ArcList struct {
Count int `json:"count"`
Item []*ArcItem `json:"item"`
}
// ArticleList struct
type ArticleList struct {
Count int `json:"count"`
Item []*ArticleItem `json:"item"`
ListsCount int `json:"lists_count"`
Lists []*article.List `json:"lists"`
}
// CommuList struct
type CommuList struct {
Count int `json:"count"`
Item []*CommItem `json:"item"`
}
// FavList struct
type FavList struct {
Count int `json:"count"`
Item []*favorite.Folder `json:"item"`
}
// BangumiList struct
type BangumiList struct {
Count int `json:"count"`
Item []*BangumiItem `json:"item"`
}
// AudioList struct
type AudioList struct {
Count int `json:"count"`
Item []*AudioItem `json:"item"`
}
// ClipList struct
type ClipList struct {
Count int `json:"count"`
More int `json:"has_more"`
Offset int `json:"next_offset"`
Item []*Item `json:"item"`
}
// AlbumList struct
type AlbumList struct {
Count int `json:"count"`
More int `json:"has_more"`
Offset int `json:"next_offset"`
Item []*Item `json:"item"`
}
// ArcItem struct
type ArcItem struct {
Title string `json:"title"`
TypeName string `json:"tname"`
Cover string `json:"cover"`
URI string `json:"uri"`
Param string `json:"param"`
Goto string `json:"goto"`
Length string `json:"length"`
Duration int64 `json:"duration"`
// av
Play int `json:"play"`
Danmaku int `json:"danmaku"`
CTime xtime.Time `json:"ctime"`
UGCPay int32 `json:"ugc_pay"`
}
// ArticleItem struct
type ArticleItem struct {
*article.Meta
URI string `json:"uri"`
Param string `json:"param"`
Goto string `json:"goto"`
}
// BangumiItem struct
type BangumiItem struct {
Title string `json:"title"`
Cover string `json:"cover"`
URI string `json:"uri"`
Param string `json:"param"`
Goto string `json:"goto"`
Finish int8 `json:"finish"`
Index string `json:"index"`
MTime xtime.Time `json:"mtime"`
NewestEpIndex string `json:"newest_ep_index"`
IsStarted int `json:"is_started"`
IsFinish string `json:"is_finish"`
NewestEpID string `json:"newest_ep_id"`
TotalCount string `json:"total_count"`
Attention string `json:"attention"`
}
// CommItem struct
type CommItem struct {
ID int `json:"id"`
Name string `json:"name"`
Desc string `json:"desc"`
Thumb string `json:"thumb"`
PostCount int `json:"post_count"`
MemberCount int `json:"member_count"`
PostNickname string `json:"post_nickname"`
MemberNickname string `json:"member_nickname"`
}
// AudioItem struct
type AudioItem struct {
ID int64 `json:"id"`
Aid int64 `json:"aid"`
UID int64 `json:"uid"`
Title string `json:"title"`
Cover string `json:"cover"`
Author string `json:"author"`
Schema string `json:"schema"`
Duration int64 `json:"duration"`
Play int `json:"play"`
Reply int `json:"reply"`
IsOff int `json:"isOff"`
AuthType int `json:"authType"`
CTime xtime.Time `json:"ctime"`
}
// FromSeason func
func (i *BangumiItem) FromSeason(b *bangumi.Season) {
i.Title = b.Title
i.Cover = b.Cover
i.Goto = model.GotoBangumi
i.Param = b.SeasonID
i.URI = model.FillURI(model.GotoBangumiWeb, b.SeasonID, nil)
i.IsStarted = b.IsStarted
if b.IsFinish == "1" {
i.Finish = 1
}
i.NewestEpIndex = b.NewestEpIndex
i.TotalCount = b.TotalCount
if b.UserSeason != nil {
i.Attention = b.UserSeason.Attention
}
}
// FromCoinArc func
func (i *ArcItem) FromCoinArc(a *api.Arc) {
i.Title = a.Title
i.Cover = a.Pic
i.Param = strconv.FormatInt(int64(a.Aid), 10)
i.URI = model.FillURI(model.GotoAv, i.Param, nil)
i.Goto = model.GotoAv
i.Danmaku = int(a.Stat.Danmaku)
i.Duration = a.Duration
i.CTime = a.PubDate
i.Play = int(a.Stat.View)
}
// FromLikeArc fun
func (i *ArcItem) FromLikeArc(a *api.Arc) {
i.Title = a.Title
i.Cover = a.Pic
i.Param = strconv.FormatInt(int64(a.Aid), 10)
i.URI = model.FillURI(model.GotoAv, i.Param, nil)
i.Goto = model.GotoAv
i.Danmaku = int(a.Stat.Danmaku)
i.Duration = a.Duration
i.CTime = a.PubDate
i.Play = int(a.Stat.View)
}
// FromArticle func
func (i *ArticleItem) FromArticle(a *article.Meta) {
i.Meta = a
i.Param = strconv.FormatInt(int64(a.ID), 10)
i.URI = model.FillURI(model.GotoArticle, i.Param, nil)
i.Goto = model.GotoArticle
}
// FromArc func
func (i *ArcItem) FromArc(c *api.Arc) {
i.Title = c.Title
i.Cover = c.Pic
i.TypeName = c.TypeName
i.Param = strconv.FormatInt(int64(c.Aid), 10)
i.URI = model.FillURI(model.GotoAv, i.Param, nil)
i.Goto = model.GotoAv
i.Danmaku = int(c.Stat.Danmaku)
i.CTime = c.PubDate
i.Duration = c.Duration
i.Play = int(c.Stat.View)
i.UGCPay = c.Rights.UGCPay
}
// FromCommunity func
func (i *CommItem) FromCommunity(c *community.Community) {
i.ID = c.ID
i.Name = c.Name
i.Desc = c.Desc
i.Thumb = c.Thumb
i.PostCount = c.PostCount
i.MemberCount = c.MemberCount
i.PostNickname = c.PostNickname
i.MemberNickname = c.MemberNickname
}
// FromAudio func
func (i *AudioItem) FromAudio(a *audio.Audio) {
i.ID = a.ID
i.Aid = a.Aid
i.UID = a.UID
i.Title = a.Title
i.Cover = a.Cover
i.Author = a.Author
i.Schema = a.Schema
i.Duration = a.Duration
i.Play = a.Play
i.Reply = a.Reply
i.IsOff = a.IsOff
i.AuthType = a.AuthType
i.CTime = a.CTime
}