123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263 |
- package card
- import (
- "encoding/json"
- "strconv"
- "go-common/app/interface/main/app-card/model/card/ai"
- "go-common/app/interface/main/app-show/model"
- xtime "go-common/library/time"
- )
- type Column struct {
- ID int `json:"-"`
- Tab int `json:"-"`
- RegionID int `json:"-"`
- Tpl int `json:"-"`
- Name string `json:"-"`
- Desc string `json:"-"`
- PlatVer string `json:"-"`
- Plat int8 `json:"-"`
- Build int `json:"-"`
- Condition string `json:"-"`
- Type string `json:"-"`
- }
- type ColumnNper struct {
- ID int `json:"-"`
- ColumnID int `json:"-"`
- Name string `json:"-"`
- Desc string `json:"-"`
- Nper string `json:"-"`
- NperTime xtime.Time `json:"-"`
- Cover string `json:"-"`
- PlatVer string `json:"-"`
- Title string `json:"-"`
- Rtype int `json:"-"`
- Rvalue string `json:"-"`
- Plat int8 `json:"-"`
- Build int `json:"-"`
- Condition string `json:"-"`
- Goto string `json:"-"`
- Param string `json:"-"`
- URI string `json:"-"`
- }
- type Content struct {
- ID int `json:"-"`
- Module int `json:"-"`
- RecID int `json:"-"`
- Type int8 `json:"-"`
- Value string `json:"-"`
- Title string `json:"-"`
- TagID int `json:"-"`
- }
- type Card struct {
- ID int `json:"-"`
- Tab int `json:"-"`
- RegionID int `json:"-"`
- Type int `json:"-"`
- Title string `json:"-"`
- Cover string `json:"-"`
- Rtype int `json:"-"`
- Rvalue string `json:"-"`
- PlatVer string `json:"-"`
- Plat int8 `json:"-"`
- Build int `json:"-"`
- Condition string `json:"-"`
- TypeStr string `json:"-"`
- Goto string `json:"-"`
- Param string `json:"-"`
- URi string `json:"-"`
- Desc string `json:"-"`
- TagID int `json:"-"`
- }
- type ColumnList struct {
- Cid int `json:"-"`
- Ceid int `json:"-"`
- Name string `json:"-"`
- Cname string `json:"-"`
- PlatVer string `json:"-"`
- Plat int8 `json:"-"`
- Build int `json:"-"`
- Condition string `json:"-"`
- }
- type PlatLimit struct {
- Plat int8 `json:"plat"`
- Build int `json:"build"`
- Condition string `json:"conditions"`
- }
- type PopularCard struct {
- ID int64 `json:"id"`
- Title string `json:"title"`
- ChannelID int64 `json:"channel_id"`
- Type string `json:"type"`
- Value int64 `json:"value"`
- Reason string `json:"reason"`
- ReasonType int8 `json:"reason_type"`
- Pos int `json:"pos"`
- FromType string `json:"from_type"`
- PopularCardPlat map[int8][]*PopularCardPlat `json:"popularcardplat"`
- Idx int64 `json:"-"`
- CornerMark int8 `json:"corner_mark"`
- }
- type PopularCardPlat struct {
- CardID int64 `json:"card_id"`
- Plat int8 `json:"plat"`
- Condition string `json:"condition"`
- Build int `json:"build"`
- }
- func (c *Card) CardPlatChange() (platlinits []*PlatLimit) {
- platlinits = platJsonChange(c.PlatVer)
- return
- }
- func (c *Column) ColumnPlatChange() (platlinits []*PlatLimit) {
- platlinits = platJsonChange(c.PlatVer)
- return
- }
- func (c *ColumnList) ColumnListPlatChange() (platlinits []*PlatLimit) {
- platlinits = platJsonChange(c.PlatVer)
- return
- }
- func (c *ColumnNper) ColumnNperPlatChange() (platlinits []*PlatLimit) {
- platlinits = platJsonChange(c.PlatVer)
- return
- }
- func (c *Card) CardGotoChannge() {
- c.TypeStr = cardTypeChange(c.Type)
- c.Goto, c.Param, c.URi = gotoURI(c.Rtype, c.Rvalue)
- }
- func (c *Column) ColumnGotoChannge() {
- switch c.Tpl {
- case 1:
- c.Type = model.GotoDaily
- case 2:
- c.Type = model.GotoColumn
- }
- }
- func (c *ColumnNper) ColumnNperGotoChange() {
- c.Goto, c.Param, c.URI = gotoURI(c.Rtype, c.Rvalue)
- }
- func gotoURI(typeInt int, value string) (gotoStr, paramStr, uri string) {
- switch typeInt {
- case 1:
- gotoStr = model.GotoDaily
- case 4:
- gotoStr = model.GotoWeb
- case 5:
- gotoStr = model.GotoAv
- case 6:
- gotoStr = model.GotoLive
- case 7:
- gotoStr = model.GotoBangumi
- case 8:
- gotoStr = model.GotoGame
- case 9:
- gotoStr = model.GotoColumn
- case 10:
- gotoStr = model.GotoColumnStage
- case 11:
- gotoStr = model.GotoArticle
- default:
- return
- }
- paramStr = value
- uri = model.FillURI(gotoStr, paramStr, nil)
- return
- }
- func cardTypeChange(cardInt int) (cardStr string) {
- switch cardInt {
- case 1:
- cardStr = model.GotoDaily
- case 2:
- cardStr = model.GotoTopic
- case 3:
- cardStr = model.GotoActivity
- case 4:
- cardStr = model.GotoRank
- case 5:
- cardStr = model.GotoCard
- case 6:
- cardStr = model.GotoVeidoCard
- case 7:
- cardStr = model.GotoSpecialCard
- case 8:
- cardStr = model.GotoTagCard
- }
- return
- }
- // platJsonChange json change plat build condition
- func platJsonChange(jsonStr string) (platlinits []*PlatLimit) {
- var tmp []struct {
- Plat string `json:"plat"`
- Build string `json:"build"`
- Condition string `json:"conditions"`
- }
- if err := json.Unmarshal([]byte(jsonStr), &tmp); err == nil {
- for _, limit := range tmp {
- platlinit := &PlatLimit{}
- switch limit.Plat {
- case "0": // resource android
- platlinit.Plat = model.PlatAndroid
- case "1": // resource iphone
- platlinit.Plat = model.PlatIPhone
- case "2": // resource pad
- platlinit.Plat = model.PlatIPad
- case "5": // resource iphone_i
- platlinit.Plat = model.PlatIPhoneI
- case "8": // resource android_i
- platlinit.Plat = model.PlatAndroidI
- }
- platlinit.Build, _ = strconv.Atoi(limit.Build)
- platlinit.Condition = limit.Condition
- platlinits = append(platlinits, platlinit)
- }
- }
- return
- }
- func (c *PopularCard) PopularCardToAiChange() (a *ai.Item) {
- a = &ai.Item{
- Goto: c.Type,
- ID: c.Value,
- RcmdReason: c.fromRcmdReason(),
- CornerMark: c.CornerMark,
- }
- if c.CornerMark == 2 {
- a.CornerMark = 4
- }
- return
- }
- func (c *PopularCard) fromRcmdReason() (a *ai.RcmdReason) {
- var content string
- switch c.ReasonType {
- case 0:
- content = ""
- case 1:
- content = "编辑精选"
- case 2:
- content = "热门推荐"
- case 3:
- content = c.Reason
- }
- if content != "" {
- a = &ai.RcmdReason{ID: 1, Content: content, BgColor: "yellow", IconLocation: "left_top"}
- }
- return
- }
|