123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521 |
- package view
- import (
- "encoding/json"
- "strconv"
- "go-common/app/interface/main/app-view/model"
- "go-common/app/interface/main/app-view/model/act"
- "go-common/app/interface/main/app-view/model/ad"
- "go-common/app/interface/main/app-view/model/bangumi"
- "go-common/app/interface/main/app-view/model/creative"
- "go-common/app/interface/main/app-view/model/elec"
- "go-common/app/interface/main/app-view/model/game"
- "go-common/app/interface/main/app-view/model/live"
- "go-common/app/interface/main/app-view/model/manager"
- "go-common/app/interface/main/app-view/model/special"
- "go-common/app/interface/main/app-view/model/tag"
- dm2 "go-common/app/interface/main/dm2/model"
- "go-common/app/service/main/archive/api"
- "go-common/app/service/main/archive/model/archive"
- resmdl "go-common/app/service/main/resource/model"
- "go-common/app/service/openplatform/pgc-season/api/grpc/season/v1"
- xtime "go-common/library/time"
- )
- // BnjView 2018
- type BnjView struct {
- BeginTime int64 `json:"begin_time"`
- *api.Arc
- // owner_ext
- OwnerExt OwnerExt `json:"owner_ext"`
- // now user
- ReqUser *ReqUser `json:"req_user,omitempty"`
- LiveRoom struct {
- ID int64 `json:"id"`
- DmServer string `json:"dm_server"`
- DmPort int64 `json:"dm_port"`
- Title string `json:"title"`
- Uname string `json:"uname"`
- Cover string `json:"cover"`
- } `json:"live_room"`
- Pages []*Page `json:"pages,omitempty"`
- Elec *elec.Info `json:"elec,omitempty"`
- Stat *api.Stat `json:"stat,omitempty"`
- Lottery struct {
- ActID int64 `json:"act_id"`
- Times int64 `json:"times"`
- Rule string `json:"rule"`
- List []string `json:"list"`
- Winners []string `json:"winners"`
- } `json:"lottery"`
- Relates []*act.Relate `json:"relates"`
- PastReviews []*BnjPastReview `json:"past_review"`
- }
- // BnjPastReview struct
- type BnjPastReview struct {
- AID int64 `json:"aid"`
- Img string `json:"img"`
- Title string `json:"title"`
- }
- // vip active subID.
- const (
- VIPActiveView = 1
- VIPActivePGC = 2
- VIPActiveCenter = 3
- )
- // View struct
- type View struct {
- *ViewStatic
- // owner_ext
- OwnerExt OwnerExt `json:"owner_ext"`
- // now user
- ReqUser *ReqUser `json:"req_user,omitempty"`
- // tag info
- Tag []*tag.Tag `json:"tag,omitempty"`
- // movie
- Movie *bangumi.Movie `json:"movie,omitempty"`
- // bangumi
- Season *bangumi.Season `json:"season,omitempty"`
- // bp
- Bp json.RawMessage `json:"bp,omitempty"`
- // elec
- Elec *elec.Info `json:"elec,omitempty"`
- // history
- History *History `json:"history,omitempty"`
- // audio
- Audio *Audio `json:"audio,omitempty"`
- // contribute data
- Contributions []*Contribution `json:"contributions,omitempty"`
- // relate data
- Relates []*Relate `json:"relates,omitempty"`
- ReturnCode string `json:"-"`
- UserFeature string `json:"-"`
- IsRec int8 `json:"-"`
- // dislike reason
- Dislikes []*Dislike `json:"dislike_reasons,omitempty"`
- // dm
- DMSeg int `json:"dm_seg,omitempty"`
- // paster
- Paster *resmdl.Paster `json:"paster,omitempty"`
- // player_icon
- PlayerIcon *PlayerIcon `json:"player_icon,omitempty"`
- // vip_active
- VIPActive string `json:"vip_active,omitempty"`
- // cm
- CMs []*CM `json:"cms,omitempty"`
- // cm config
- CMConfig *CMConfig `json:"cm_config,omitempty"`
- // asset
- Asset *Asset `json:"asset,omitempty"`
- ActivityURL string `json:"activity_url,omitempty"`
- Bgm []*creative.Bgm `json:"bgm,omitempty"`
- Staff []*Staff `json:"staff,omitempty"`
- }
- // Staff from cooperation
- type Staff struct {
- Mid int64 `json:"mid,omitempty"`
- Title string `json:"title,omitempty"`
- Face string `json:"face,omitempty"`
- Name string `json:"name,omitempty"`
- OfficialVerify struct {
- Type int `json:"type"`
- Desc string `json:"desc"`
- } `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"`
- Attention int `json:"attention"`
- }
- // ViewStatic struct
- type ViewStatic struct {
- *archive.Archive3
- Pages []*Page `json:"pages,omitempty"`
- }
- // ReqUser struct
- type ReqUser struct {
- Attention int `json:"attention"`
- Favorite int8 `json:"favorite"`
- Like int8 `json:"like"`
- Dislike int8 `json:"dislike"`
- Coin int8 `json:"coin"`
- }
- // Page struct
- type Page struct {
- *archive.Page3
- Metas []*Meta `json:"metas"`
- DMLink string `json:"dmlink"`
- Audio *Audio `json:"audio,omitempty"`
- DM *dm2.SubjectInfo `json:"dm,omitempty"`
- }
- // Meta struct
- type Meta struct {
- Quality int `json:"quality"`
- Format string `json:"format"`
- Size int64 `json:"size"`
- }
- // History struct
- type History struct {
- Cid int64 `json:"cid"`
- Progress int64 `json:"progress"`
- }
- // CM struct
- type CM struct {
- RequestID string `json:"request_id,omitempty"`
- RscID int64 `json:"rsc_id,omitempty"`
- SrcID int64 `json:"src_id,omitempty"`
- IsAdLoc bool `json:"is_ad_loc,omitempty"`
- IsAd bool `json:"is_ad,omitempty"`
- CmMark int `json:"cm_mark,omitempty"`
- ClientIP string `json:"client_ip,omitempty"`
- Index int `json:"index,omitempty"`
- AdInfo *ad.AdInfo `json:"ad_info,omitempty"`
- }
- // CMConfig struct
- type CMConfig struct {
- AdsControl json.RawMessage `json:"ads_control,omitempty"`
- MonitorInfo json.RawMessage `json:"monitor_info,omitempty"`
- }
- // Dislike struct
- type Dislike struct {
- ID int `json:"reason_id"`
- Name string `json:"reason_name"`
- }
- // OwnerExt struct
- type OwnerExt struct {
- OfficialVerify struct {
- Type int `json:"type"`
- Desc string `json:"desc"`
- } `json:"official_verify,omitempty"`
- Live *live.Live `json:"live,omitempty"`
- 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"`
- Assists []int64 `json:"assists"`
- Fans int `json:"fans"`
- Archives int `json:"-"`
- }
- // Relate struct
- type Relate struct {
- Aid int64 `json:"aid,omitempty"`
- Pic string `json:"pic,omitempty"`
- Title string `json:"title,omitempty"`
- Author *api.Author `json:"owner,omitempty"`
- Stat api.Stat `json:"stat,omitempty"`
- Duration int64 `json:"duration,omitempty"`
- Goto string `json:"goto,omitempty"`
- Param string `json:"param,omitempty"`
- URI string `json:"uri,omitempty"`
- Rating float64 `json:"rating,omitempty"`
- Reserve string `json:"reserve,omitempty"`
- From string `json:"from,omitempty"`
- Desc string `json:"desc,omitempty"`
- RcmdReason string `json:"rcmd_reason,omitempty"`
- Badge string `json:"badge,omitempty"`
- Cid int64 `json:"cid,omitempty"`
- SeasonType int32 `json:"season_type,omitempty"`
- RatingCount int32 `json:"rating_count,omitempty"`
- // cm ad
- AdIndex int `json:"ad_index,omitempty"`
- CmMark int `json:"cm_mark,omitempty"`
- SrcID int64 `json:"src_id,omitempty"`
- RequestID string `json:"request_id,omitempty"`
- CreativeID int64 `json:"creative_id,omitempty"`
- CreativeType int64 `json:"creative_type,omitempty"`
- Type int `json:"type,omitempty"`
- Cover string `json:"cover,omitempty"`
- ButtonTitle string `json:"button_title,omitempty"`
- View int `json:"view,omitempty"`
- Danmaku int `json:"danmaku,omitempty"`
- IsAd bool `json:"is_ad,omitempty"`
- IsAdLoc bool `json:"is_ad_loc,omitempty"`
- AdCb string `json:"ad_cb,omitempty"`
- ShowURL string `json:"show_url,omitempty"`
- ClickURL string `json:"click_url,omitempty"`
- ClientIP string `json:"client_ip,omitempty"`
- Extra json.RawMessage `json:"extra,omitempty"`
- Button *Button `json:"button,omitempty"`
- CardIndex int `json:"card_index,omitempty"`
- Source string `json:"-"`
- AvFeature json.RawMessage `json:"-"`
- TrackID string `json:"trackid"`
- }
- // Button struct
- type Button struct {
- Title string `json:"title,omitempty"`
- URI string `json:"uri,omitempty"`
- }
- // Contribution struct
- type Contribution struct {
- Aid int64 `json:"aid,omitempty"`
- Pic string `json:"pic,omitempty"`
- Title string `json:"title,omitempty"`
- Author api.Author `json:"owner,omitempty"`
- Stat api.Stat `json:"stat,omitempty"`
- CTime xtime.Time `json:"ctime,omitempty"`
- }
- // Audio struct
- type Audio struct {
- Title string `json:"title"`
- Cover string `json:"cover_url"`
- SongID int `json:"song_id"`
- Play int `json:"play_count"`
- Reply int `json:"reply_count"`
- UpperID int `json:"upper_id"`
- Entrance string `json:"entrance"`
- SongAttr int `json:"song_attr"`
- }
- // PlayerIcon struct
- type PlayerIcon struct {
- URL1 string `json:"url1,omitempty"`
- Hash1 string `json:"hash1,omitempty"`
- URL2 string `json:"url2,omitempty"`
- Hash2 string `json:"hash2,omitempty"`
- CTime xtime.Time `json:"ctime,omitempty"`
- }
- // VipPlayURL playurl token struct.
- type VipPlayURL struct {
- From string `json:"from"`
- Ts int64 `json:"ts"`
- Aid int64 `json:"aid"`
- Cid int64 `json:"cid"`
- Mid int64 `json:"mid"`
- VIP int `json:"vip"`
- SVIP int `json:"svip"`
- Owner int `json:"owner"`
- Fcs string `json:"fcs"`
- }
- // NewRelateRec struct
- type NewRelateRec struct {
- TrackID string `json:"trackid"`
- Oid int64 `json:"id"`
- Source string `json:"source"`
- AvFeature json.RawMessage `json:"av_feature"`
- Goto string `json:"goto"`
- Title string `json:"title"`
- IsDalao int8 `json:"is_dalao"`
- RcmdReason struct {
- Content string `json:"content"`
- } `json:"rcmd_reason"`
- }
- type Asset struct {
- Paid int8 `json:"paid"`
- Price int64 `json:"price"`
- Msg struct {
- Desc1 string `json:"desc1"`
- Desc2 string `json:"desc2"`
- } `json:"msg"`
- }
- // FromAv func
- func (r *Relate) FromAv(a *api.Arc, from, trackid string, ap *archive.PlayerInfo, cooperation bool) {
- r.Aid = a.Aid
- r.Title = a.Title
- r.Pic = a.Pic
- r.Author = &a.Author
- r.Stat = a.Stat
- r.Duration = a.Duration
- r.Cid = a.FirstCid
- r.Goto = model.GotoAv
- r.Param = strconv.FormatInt(a.Aid, 10)
- r.URI = model.FillURI(r.Goto, r.Param, model.AvHandler(a, trackid, ap))
- r.From = from
- if a.AttrVal(archive.AttrBitIsCooperation) == archive.AttrYes && r.Author != nil && r.Author.Name != "" && cooperation {
- r.Author.Name = r.Author.Name + " 等联合创作"
- }
- }
- // FromGame func
- func (r *Relate) FromGame(i *game.Info, from string) {
- if i.GameLink == "" {
- return
- }
- r.Title = "相关游戏:" + i.GameName
- r.Pic = i.GameIcon
- r.Rating = i.Grade
- if i.GameStatus == 1 || i.GameStatus == 2 {
- var reserve string
- if i.BookNum < 10000 {
- reserve = strconv.FormatInt(i.BookNum, 10) + "人预约"
- } else {
- reserve = strconv.FormatFloat(float64(i.BookNum)/10000, 'f', 1, 64) + "万人预约"
- }
- r.Reserve = reserve
- }
- r.Goto = model.GotoGame
- r.URI = model.FillURI(r.Goto, i.GameLink, nil)
- r.Param = strconv.FormatInt(i.GameBaseID, 10)
- r.Button = &Button{Title: "进入", URI: r.URI}
- r.From = from
- }
- // FromSpecial func
- func (r *Relate) FromSpecial(sp *special.Card, from string) {
- r.Title = sp.Title
- r.Pic = sp.Cover
- r.Goto = model.GotoSpecial
- // TODO FUCK game
- r.URI = model.FillURI(model.OperateType[sp.ReType], sp.ReValue, nil)
- r.Desc = sp.Desc
- r.Param = strconv.FormatInt(sp.ID, 10)
- r.RcmdReason = sp.Badge
- r.From = from
- }
- // FromOperate func
- func (r *Relate) FromOperate(i *NewRelateRec, a *api.Arc, info *game.Info, sp *special.Card, from string, cooperation bool) {
- switch i.Goto {
- case model.GotoAv:
- r.FromAv(a, from, "", nil, cooperation)
- case model.GotoGame:
- r.FromGame(info, from)
- case model.GotoSpecial:
- r.FromSpecial(sp, from)
- }
- if r.Title == "" {
- r.Title = i.Title
- }
- if i.RcmdReason.Content != "" {
- r.RcmdReason = i.RcmdReason.Content
- }
- }
- // FromOperate func
- func (r *Relate) FromOperateOld(i *manager.Relate, a *api.Arc, info *game.Info, sp *special.Card, from string, cooperation bool) {
- switch i.Goto {
- case model.GotoAv:
- r.FromAv(a, from, "", nil, cooperation)
- case model.GotoGame:
- r.FromGame(info, from)
- case model.GotoSpecial:
- r.FromSpecial(sp, from)
- }
- if r.Title == "" {
- r.Title = i.Title
- }
- if r.RcmdReason == "" {
- r.RcmdReason = i.RecReason
- }
- }
- // FromCM func
- func (r *Relate) FromCM(ad *ad.AdInfo) {
- r.AdIndex = ad.Index
- r.CmMark = ad.CmMark
- r.SrcID = ad.Source
- r.RequestID = ad.RequestID
- r.CreativeID = ad.CreativeID
- r.CreativeType = ad.CreativeType
- r.Type = ad.CardType
- r.URI = ad.URI
- r.Param = ad.Param
- r.Goto = model.GotoCm
- r.View = ad.View
- r.Danmaku = ad.Danmaku
- r.IsAd = ad.IsAd
- r.IsAdLoc = ad.IsAdLoc
- r.AdCb = ad.AdCb
- r.ClientIP = ad.ClientIP
- r.Extra = ad.Extra
- r.CardIndex = ad.CardIndex
- if ad.CreativeContent != nil {
- r.Aid = ad.CreativeContent.VideoID
- r.Cover = ad.CreativeContent.ImageURL
- r.Title = ad.CreativeContent.Title
- r.ButtonTitle = ad.CreativeContent.ButtonTitle
- r.Desc = ad.CreativeContent.Desc
- r.ShowURL = ad.CreativeContent.ShowURL
- r.ClickURL = ad.CreativeContent.ClickURL
- }
- }
- // FromCM func
- func (c *CM) FromCM(ad *ad.AdInfo) {
- c.RequestID = ad.RequestID
- c.RscID = ad.Resource
- c.SrcID = ad.Source
- c.IsAd = ad.IsAd
- c.IsAdLoc = ad.IsAdLoc
- c.Index = ad.Index
- c.CmMark = ad.CmMark
- c.ClientIP = ad.ClientIP
- c.AdInfo = ad
- }
- // FromBangumi func
- func (r *Relate) FromBangumi(ban *v1.CardInfoProto) {
- r.Title = ban.Title
- r.Pic = ban.NewEp.Cover
- r.Stat = api.Stat{
- Danmaku: int32(ban.Stat.Danmaku),
- View: int32(ban.Stat.View),
- Fav: int32(ban.Stat.Follow),
- }
- r.Goto = model.GotoBangumi
- r.Param = strconv.FormatInt(int64(ban.SeasonId), 10)
- r.URI = model.FillURI(r.Goto, r.Param, nil)
- r.SeasonType = ban.SeasonType
- r.Badge = ban.SeasonTypeName
- r.Desc = ban.NewEp.IndexShow
- if ban.Rating != nil {
- r.Rating = float64(ban.Rating.Score)
- r.RatingCount = ban.Rating.Count
- }
- }
- // TripleParam struct
- type TripleParam struct {
- MobiApp string `form:"mobi_app"`
- Build string `form:"build"`
- AID int64 `form:"aid"`
- Ak string `form:"access_key"`
- From string `form:"from"`
- }
- // TripleRes struct
- type TripleRes struct {
- Like bool `json:"like"`
- Coin bool `json:"coin"`
- Fav bool `json:"fav"`
- Prompt bool `json:"prompt"`
- Multiply int64 `json:"multiply"`
- UpID int64 `json:"-"`
- Anticheat bool `json:"-"`
- }
- // Videoshot videoshot
- type Videoshot struct {
- *archive.Videoshot
- Points []*creative.Points `json:"points,omitempty"`
- }
|