201 lines
5.7 KiB
Go
201 lines
5.7 KiB
Go
|
package model
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"strconv"
|
||
|
|
||
|
v1 "go-common/app/service/main/archive/api"
|
||
|
)
|
||
|
|
||
|
// DyCard dynamic data.
|
||
|
type DyCard struct {
|
||
|
Card json.RawMessage `json:"card"`
|
||
|
Desc struct {
|
||
|
UID int64 `json:"uid"`
|
||
|
Type int `json:"type"`
|
||
|
ACL int `json:"acl"`
|
||
|
Rid int64 `json:"rid"`
|
||
|
View int32 `json:"view"`
|
||
|
Repost int32 `json:"repost"`
|
||
|
Comment int32 `json:"comment"`
|
||
|
Like int32 `json:"like"`
|
||
|
IsLiked int32 `json:"is_liked"`
|
||
|
DynamicID int64 `json:"dynamic_id"`
|
||
|
CommentID int64 `json:"comment_id"`
|
||
|
Timestamp int64 `json:"timestamp"`
|
||
|
PreDyID int64 `json:"pre_dy_id"`
|
||
|
OrigDyID int64 `json:"orig_dy_id"`
|
||
|
OrigType int `json:"orig_type"`
|
||
|
RType int `json:"r_type"`
|
||
|
InnerID int64 `json:"inner_id"`
|
||
|
UserProfile *UserProfile `json:"user_profile,omitempty"`
|
||
|
} `json:"desc"`
|
||
|
Extension *DyExtension `json:"extension,omitempty"`
|
||
|
}
|
||
|
|
||
|
// DyResult dynamic result
|
||
|
type DyResult struct {
|
||
|
Card json.RawMessage `json:"card"`
|
||
|
Desc struct {
|
||
|
UID int64 `json:"uid"`
|
||
|
Type int `json:"type"`
|
||
|
ACL int `json:"acl"`
|
||
|
Rid int64 `json:"rid"`
|
||
|
View int32 `json:"view"`
|
||
|
Repost int32 `json:"repost"`
|
||
|
Comment int32 `json:"comment"`
|
||
|
Like int32 `json:"like"`
|
||
|
IsLiked int32 `json:"is_liked"`
|
||
|
DynamicID string `json:"dynamic_id"`
|
||
|
CommentID int64 `json:"comment_id"`
|
||
|
Timestamp int64 `json:"timestamp"`
|
||
|
PreDyID string `json:"pre_dy_id"`
|
||
|
OrigDyID string `json:"orig_dy_id"`
|
||
|
OrigType int `json:"orig_type"`
|
||
|
RType int `json:"r_type"`
|
||
|
InnerID int64 `json:"inner_id"`
|
||
|
UserProfile *UserProfile `json:"user_profile,omitempty"`
|
||
|
} `json:"desc"`
|
||
|
Extension *DyExtension `json:"extension,omitempty"`
|
||
|
}
|
||
|
|
||
|
// DyExtension .
|
||
|
type DyExtension struct {
|
||
|
VoteCfg *struct {
|
||
|
VoteID int64 `json:"vote_id"`
|
||
|
Desc string `json:"desc"`
|
||
|
JoinNum int64 `json:"join_num"`
|
||
|
} `json:"vote_cfg,omitempty"`
|
||
|
}
|
||
|
|
||
|
// DyTotal out dynamic total.
|
||
|
type DyTotal struct {
|
||
|
HasMore bool `json:"has_more"`
|
||
|
List []*DyItem `json:"list"`
|
||
|
}
|
||
|
|
||
|
// DyItem out dynamic item.
|
||
|
type DyItem struct {
|
||
|
Type int `json:"type"`
|
||
|
Top bool `json:"top"`
|
||
|
Card *DyResult `json:"card,omitempty"`
|
||
|
Archive *VideoItem `json:"video,omitempty"`
|
||
|
Fold []*DyItem `json:"fold,omitempty"`
|
||
|
Ctime int64 `json:"ctime"`
|
||
|
Privacy bool `json:"privacy"`
|
||
|
}
|
||
|
|
||
|
// UserProfile dynamic item user profile.
|
||
|
type UserProfile struct {
|
||
|
Pendant struct {
|
||
|
Pid int64 `json:"pid"`
|
||
|
Name string `json:"name"`
|
||
|
Image string `json:"image"`
|
||
|
Expire int64 `json:"expire"`
|
||
|
} `json:"pendant,omitempty"`
|
||
|
DecorateCard struct {
|
||
|
Mid int64 `json:"mid"`
|
||
|
ID int64 `json:"id"`
|
||
|
CardURL string `json:"card_url"`
|
||
|
CardType int `json:"card_type"`
|
||
|
Name string `json:"name"`
|
||
|
ExpireTime int64 `json:"expire_time"`
|
||
|
CardTypeName string `json:"card_type_name"`
|
||
|
UID int64 `json:"uid"`
|
||
|
} `json:"decorate_card,omitempty"`
|
||
|
}
|
||
|
|
||
|
// FromCard format dynamic card.
|
||
|
func (d *DyResult) FromCard(c *DyCard) {
|
||
|
d.Card = c.Card
|
||
|
d.Desc.UID = c.Desc.UID
|
||
|
d.Desc.Type = c.Desc.Type
|
||
|
d.Desc.ACL = c.Desc.ACL
|
||
|
d.Desc.Rid = c.Desc.Rid
|
||
|
d.Desc.View = c.Desc.View
|
||
|
d.Desc.Repost = c.Desc.Repost
|
||
|
d.Desc.Comment = c.Desc.Comment
|
||
|
d.Desc.Like = c.Desc.Like
|
||
|
d.Desc.IsLiked = c.Desc.IsLiked
|
||
|
d.Desc.DynamicID = strconv.FormatInt(c.Desc.DynamicID, 10)
|
||
|
d.Desc.CommentID = c.Desc.CommentID
|
||
|
d.Desc.Timestamp = c.Desc.Timestamp
|
||
|
d.Desc.PreDyID = strconv.FormatInt(c.Desc.PreDyID, 10)
|
||
|
d.Desc.OrigDyID = strconv.FormatInt(c.Desc.OrigDyID, 10)
|
||
|
d.Desc.OrigType = c.Desc.OrigType
|
||
|
d.Desc.RType = c.Desc.RType
|
||
|
d.Desc.InnerID = c.Desc.InnerID
|
||
|
if c.Extension != nil && c.Extension.VoteCfg != nil {
|
||
|
d.Extension = c.Extension
|
||
|
}
|
||
|
if c.Desc.UserProfile != nil {
|
||
|
d.Desc.UserProfile = c.Desc.UserProfile
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// DyList dynamic list.
|
||
|
type DyList struct {
|
||
|
HasMore int `json:"has_more"`
|
||
|
Cards []*DyCard `json:"cards"`
|
||
|
}
|
||
|
|
||
|
// DyActItem dynamic other action items.
|
||
|
type DyActItem struct {
|
||
|
Aid int64 `json:"aid"`
|
||
|
Type int `json:"type"`
|
||
|
ActionTime int64 `json:"action_time"`
|
||
|
Privacy bool `json:"privacy"`
|
||
|
}
|
||
|
|
||
|
// VideoItem user action video item.
|
||
|
type VideoItem struct {
|
||
|
Aid int64 `json:"aid"`
|
||
|
Pic string `json:"pic"`
|
||
|
Title string `json:"title"`
|
||
|
Duration int64 `json:"duration"`
|
||
|
Author struct {
|
||
|
Mid int64 `json:"mid"`
|
||
|
Name string `json:"name"`
|
||
|
Face string `json:"face"`
|
||
|
}
|
||
|
Stat struct {
|
||
|
View int32 `json:"view"`
|
||
|
Danmaku int32 `json:"danmaku"`
|
||
|
Reply int32 `json:"reply"`
|
||
|
Fav int32 `json:"favorite"`
|
||
|
Coin int32 `json:"coin"`
|
||
|
Share int32 `json:"share"`
|
||
|
Like int32 `json:"like"`
|
||
|
}
|
||
|
Rights v1.Rights `json:"rights"`
|
||
|
ActionTime int64 `json:"action_time"`
|
||
|
}
|
||
|
|
||
|
// DyListArg .
|
||
|
type DyListArg struct {
|
||
|
Mid int64 `form:"-"`
|
||
|
Vmid int64 `form:"mid" validate:"min=1"`
|
||
|
DyID int64 `form:"dy_id"`
|
||
|
Qn int `form:"qn" default:"16" validate:"min=1"`
|
||
|
Pn int `form:"pn" default:"1" validate:"min=1"`
|
||
|
LastTime int64 `form:"last_time"`
|
||
|
}
|
||
|
|
||
|
// FromArchive from archive to video item.
|
||
|
func (v *VideoItem) FromArchive(arc *v1.Arc) {
|
||
|
v.Aid = arc.Aid
|
||
|
v.Pic = arc.Pic
|
||
|
v.Title = arc.Title
|
||
|
v.Duration = arc.Duration
|
||
|
v.Author.Mid = arc.Author.Mid
|
||
|
v.Author.Name = arc.Author.Name
|
||
|
v.Author.Face = arc.Author.Face
|
||
|
v.Stat.View = arc.Stat.View
|
||
|
v.Stat.Danmaku = arc.Stat.Danmaku
|
||
|
v.Stat.Reply = arc.Stat.Reply
|
||
|
v.Stat.Fav = arc.Stat.Fav
|
||
|
v.Stat.Share = arc.Stat.Share
|
||
|
v.Stat.Like = arc.Stat.Like
|
||
|
v.Rights = arc.Rights
|
||
|
}
|