123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- package card
- import (
- "go-common/app/interface/main/app-card/model"
- "go-common/app/interface/main/app-card/model/card/ai"
- "go-common/app/interface/main/app-card/model/card/operate"
- tag "go-common/app/interface/main/tag/model"
- account "go-common/app/service/main/account/model"
- "go-common/app/service/main/archive/model/archive"
- relation "go-common/app/service/main/relation/model"
- "go-common/library/log"
- )
- func ipadHandle(cardGoto model.CardGt, cardType model.CardType, rcmd *ai.Item, tagm map[int64]*tag.Tag, isAttenm map[int64]int8, statm map[int64]*relation.Stat, cardm map[int64]*account.Card) (hander Handler) {
- base := &Base{CardGoto: cardGoto, Rcmd: rcmd, Tagm: tagm, IsAttenm: isAttenm, Statm: statm, Cardm: cardm, Columnm: model.ColumnSvrSingle}
- switch cardType {
- default:
- switch cardGoto {
- case model.CardGotoAv, model.CardGotoBangumi, model.CardGotoLive, model.CardGotoPGC:
- base.CardType = model.LargeCoverV1
- base.CardLen = 1
- hander = &LargeCoverV1{Base: base}
- case model.CardGotoBangumiRcmd:
- base.CardType = model.SmallCoverV1
- hander = &SmallCoverV1{Base: base}
- case model.CardGotoRank:
- base.CardType = model.FourItemHV3
- hander = &FourItemV3{Base: base}
- case model.CardGotoLogin:
- base.CardType = model.CoverOnlyV3
- base.CardLen = 1
- hander = &CoverOnly{Base: base}
- case model.CardGotoBanner:
- base.CardType = model.BannerV3
- hander = &Banner{Base: base}
- case model.CardGotoAdAv:
- base.CardType = model.CmV1
- base.CardLen = 1
- hander = &LargeCoverV1{Base: base}
- case model.CardGotoAdWebS:
- base.CardType = model.CmV1
- base.CardLen = 1
- hander = &SmallCoverV1{Base: base}
- case model.CardGotoAdWeb:
- base.CardType = model.CmV1
- base.CardLen = 2
- hander = &SmallCoverV1{Base: base}
- case model.CardGotoSearchUpper:
- base.CardType = model.ThreeItemAll
- hander = &ThreeItemAll{Base: base}
- }
- }
- return
- }
- type FourItemV3 struct {
- *Base
- TitleIcon model.Icon `json:"title_icon,omitempty"`
- BannerCover string `json:"banner_cover,omitempty"`
- BannerURI string `json:"banner_uri,omitempty"`
- MoreURI string `json:"more_uri,omitempty"`
- MoreText string `json:"more_text,omitempty"`
- Items []*FourItemV3Item `json:"items,omitempty"`
- }
- type FourItemV3Item struct {
- Base
- CoverLeftText string `json:"cover_left_text,omitempty"`
- CoverLeftIcon model.Icon `json:"cover_left_icon,omitempty"`
- Desc1 string `json:"desc_1,omitempty"`
- Desc2 string `json:"desc_2,omitempty"`
- Badge string `json:"badge,omitempty"`
- }
- func (c *FourItemV3) From(main interface{}, op *operate.Card) {
- switch main.(type) {
- case map[model.Gt]interface{}:
- intfcm := main.(map[model.Gt]interface{})
- if op == nil {
- return
- }
- switch op.CardGoto {
- case model.CardGotoRank:
- const (
- _title = "全站排行榜"
- _limit = 4
- )
- c.Base.from("0", "", _title, "", "", nil)
- // c.TitleIcon = model.IconRank
- c.MoreURI = model.FillURI(op.Goto, op.URI, nil)
- c.MoreText = "查看更多"
- c.Items = make([]*FourItemV3Item, 0, _limit)
- for _, v := range op.Items {
- if v == nil {
- continue
- }
- intfc, ok := intfcm[v.Goto]
- if !ok {
- continue
- }
- am := intfc.(map[int64]*archive.ArchiveWithPlayer)
- a, ok := am[v.ID]
- if !ok || !model.AvIsNormal(a) {
- continue
- }
- item := &FourItemV3Item{
- CoverLeftText: model.DurationString(a.Duration),
- Desc1: model.ScoreString(v.Score),
- }
- item.Base.from(v.Param, a.Pic, a.Title, model.GotoAv, v.URI, model.AvPlayHandler(a.Archive3, a.PlayerInfo, op.TrackID))
- item.Args.fromArchive(a.Archive3, nil)
- c.Items = append(c.Items, item)
- if len(c.Items) == _limit {
- break
- }
- }
- if len(c.Items) < _limit {
- return
- }
- c.Items[0].CoverLeftIcon = model.IconGoldMedal
- c.Items[1].CoverLeftIcon = model.IconSilverMedal
- c.Items[2].CoverLeftIcon = model.IconBronzeMedal
- default:
- log.Warn("FourItemV3 From: unexpected card_goto %s", op.CardGoto)
- return
- }
- default:
- log.Warn("FourItemV3 From: unexpected type %T", main)
- return
- }
- c.Right = true
- }
- func (c *FourItemV3) Get() *Base {
- return c.Base
- }
|