go-common/app/interface/main/web/model/archive.go
2019-04-22 18:49:16 +08:00

160 lines
3.8 KiB
Go

package model
import (
"go-common/app/interface/main/dm2/model"
tagmdl "go-common/app/interface/main/tag/model"
accmdl "go-common/app/service/main/account/model"
arcmdl "go-common/app/service/main/archive/api"
ugcmdl "go-common/app/service/main/ugcpay/api/grpc/v1"
)
// View view data
type View struct {
// archive data
*arcmdl.Arc
NoCache bool `json:"no_cache"`
// video data pages
Pages []*arcmdl.Page `json:"pages,omitempty"`
Subtitle *Subtitle `json:"subtitle"`
Asset *ugcmdl.AssetQueryResp `json:"asset,omitempty"`
}
// AssetRelation .
type AssetRelation struct {
State int `json:"state"`
}
// Stat archive stat web struct
type Stat struct {
Aid int64 `json:"aid"`
View interface{} `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"`
NowRank int32 `json:"now_rank"`
HisRank int32 `json:"his_rank"`
NoReprint int32 `json:"no_reprint"`
Copyright int32 `json:"copyright"`
}
// Detail detail data
type Detail struct {
View *View
Card *Card
Tags []*tagmdl.Tag
Reply *ReplyHot
Related []*arcmdl.Arc
}
// ArchiveUserCoins .
type ArchiveUserCoins struct {
Multiply int64 `json:"multiply"`
}
// Subtitle dm subTitle.
type Subtitle struct {
AllowSubmit bool `json:"allow_submit"`
List []*SubtitleItem `json:"list"`
}
// SubtitleItem dm subTitle.
type SubtitleItem struct {
*model.VideoSubtitle
Author *accmdl.Info `json:"author"`
}
// TripleRes struct
type TripleRes struct {
Like bool `json:"like"`
Coin bool `json:"coin"`
Fav bool `json:"fav"`
Multiply int64 `json:"multiply"`
UpID int64 `json:"-"`
Anticheat bool `json:"-"`
}
var (
// StatAllowStates archive stat allow states
statAllowStates = []int32{-9, -15, -30}
)
// CheckAllowState check archive stat allow state
func CheckAllowState(arc *arcmdl.Arc) bool {
if arc.IsNormal() {
return true
}
for _, allow := range statAllowStates {
if arc.State == allow {
return true
}
}
return false
}
// FmtArc fmt grpc arc to archive3
func FmtArc(arc *arcmdl.Arc) (data *arcmdl.Arc) {
data = &arcmdl.Arc{
Aid: arc.Aid,
Videos: arc.Videos,
TypeID: arc.TypeID,
TypeName: arc.TypeName,
Copyright: arc.Copyright,
Pic: arc.Pic,
Title: arc.Title,
PubDate: arc.PubDate,
Ctime: arc.Ctime,
Desc: arc.Desc,
State: arc.State,
Access: arc.Access,
Attribute: arc.Attribute,
Tag: arc.Tag,
Tags: arc.Tags,
Duration: arc.Duration,
MissionID: arc.MissionID,
OrderID: arc.OrderID,
RedirectURL: arc.RedirectURL,
Forward: arc.Forward,
Rights: arcmdl.Rights{
Bp: arc.Rights.Bp,
Elec: arc.Rights.Elec,
Download: arc.Rights.Download,
Movie: arc.Rights.Movie,
Pay: arc.Rights.Pay,
HD5: arc.Rights.HD5,
NoReprint: arc.Rights.NoReprint,
Autoplay: arc.Rights.Autoplay,
UGCPay: arc.Rights.UGCPay,
},
Author: arcmdl.Author{
Mid: arc.Author.Mid,
Name: arc.Author.Name,
Face: arc.Author.Face,
},
Stat: arcmdl.Stat{
Aid: arc.Stat.Aid,
View: arc.Stat.View,
Danmaku: arc.Stat.Danmaku,
Reply: arc.Stat.Reply,
Fav: arc.Stat.Fav,
Coin: arc.Stat.Coin,
Share: arc.Stat.Share,
NowRank: arc.Stat.NowRank,
HisRank: arc.Stat.HisRank,
Like: arc.Stat.Like,
DisLike: arc.Stat.DisLike,
},
ReportResult: arc.ReportResult,
Dynamic: arc.Dynamic,
FirstCid: arc.FirstCid,
Dimension: arcmdl.Dimension{
Width: arc.Dimension.Width,
Height: arc.Dimension.Height,
Rotate: arc.Dimension.Rotate,
},
}
return
}