178 lines
3.9 KiB
Go
178 lines
3.9 KiB
Go
|
package channel
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"go-common/app/interface/main/app-card/model"
|
||
|
"go-common/app/interface/main/app-card/model/card/live"
|
||
|
"go-common/app/interface/main/app-card/model/card/operate"
|
||
|
)
|
||
|
|
||
|
func (s *Service) convergeCard2(c context.Context, limit int, ids ...int64) (cardm map[int64]*operate.Card, aids, roomIDs, metaIDs []int64) {
|
||
|
if len(ids) == 0 {
|
||
|
return
|
||
|
}
|
||
|
cardm = make(map[int64]*operate.Card, len(ids))
|
||
|
for i, id := range ids {
|
||
|
if o, ok := s.convergeCardCache[id]; ok {
|
||
|
card := &operate.Card{}
|
||
|
card.FromConverge(o)
|
||
|
cardm[id] = card
|
||
|
for _, item := range card.Items {
|
||
|
switch item.Goto {
|
||
|
case model.GotoAv:
|
||
|
if item.ID != 0 {
|
||
|
aids = append(aids, item.ID)
|
||
|
}
|
||
|
case model.GotoLive:
|
||
|
if item.ID != 0 {
|
||
|
roomIDs = append(roomIDs, item.ID)
|
||
|
}
|
||
|
case model.GotoArticle:
|
||
|
if item.ID != 0 {
|
||
|
metaIDs = append(metaIDs, item.ID)
|
||
|
}
|
||
|
}
|
||
|
if i == limit-1 {
|
||
|
break
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (s *Service) downloadCard(c context.Context, ids ...int64) (cardm map[int64]*operate.Card) {
|
||
|
if len(ids) == 0 {
|
||
|
return
|
||
|
}
|
||
|
cardm = make(map[int64]*operate.Card, len(ids))
|
||
|
for _, id := range ids {
|
||
|
if o, ok := s.gameDownloadCache[id]; ok {
|
||
|
card := &operate.Card{}
|
||
|
card.FromDownload(o)
|
||
|
cardm[id] = card
|
||
|
}
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (s *Service) subscribeCard(c context.Context, ids ...int64) (cardm map[int64]*operate.Card, upIDs, tids []int64) {
|
||
|
if len(ids) == 0 {
|
||
|
return
|
||
|
}
|
||
|
cardm = make(map[int64]*operate.Card, len(ids))
|
||
|
for _, id := range ids {
|
||
|
if o, ok := s.upCardCache[id]; ok {
|
||
|
card := &operate.Card{}
|
||
|
card.FromFollow(o)
|
||
|
cardm[id] = card
|
||
|
for _, item := range card.Items {
|
||
|
switch item.Goto {
|
||
|
case model.GotoMid:
|
||
|
if item.ID != 0 {
|
||
|
upIDs = append(upIDs, item.ID)
|
||
|
}
|
||
|
case model.GotoTag:
|
||
|
if item.ID != 0 {
|
||
|
tids = append(tids, item.ID)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (s *Service) channelRcmdCard(c context.Context, ids ...int64) (cardm map[int64]*operate.Card, aids, tids []int64) {
|
||
|
if len(ids) == 0 {
|
||
|
return
|
||
|
}
|
||
|
cardm = make(map[int64]*operate.Card, len(ids))
|
||
|
for _, id := range ids {
|
||
|
if o, ok := s.upCardCache[id]; ok {
|
||
|
card := &operate.Card{}
|
||
|
card.FromFollow(o)
|
||
|
cardm[id] = card
|
||
|
switch card.Goto {
|
||
|
case model.GotoAv:
|
||
|
if card.ID != 0 {
|
||
|
aids = append(aids, card.ID)
|
||
|
}
|
||
|
if card.Tid != 0 {
|
||
|
tids = append(tids, card.Tid)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (s *Service) liveUpRcmdCard(c context.Context, ids ...int64) (cardm map[int64][]*live.Card, upIDs []int64) {
|
||
|
if len(ids) == 0 {
|
||
|
return
|
||
|
}
|
||
|
cardm = make(map[int64][]*live.Card, len(ids))
|
||
|
for _, id := range ids {
|
||
|
if card, ok := s.liveCardCache[id]; ok {
|
||
|
cardm[id] = card
|
||
|
for _, c := range card {
|
||
|
if c.UID != 0 {
|
||
|
upIDs = append(upIDs, c.UID)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (s *Service) specialCard(c context.Context, ids ...int64) (cardm map[int64]*operate.Card) {
|
||
|
if len(ids) == 0 {
|
||
|
return
|
||
|
}
|
||
|
cardm = make(map[int64]*operate.Card, len(ids))
|
||
|
for _, id := range ids {
|
||
|
if o, ok := s.specialCardCache[id]; ok {
|
||
|
card := &operate.Card{}
|
||
|
card.FromSpecial(o)
|
||
|
cardm[id] = card
|
||
|
}
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (s *Service) topstickCard(c context.Context, ids ...int64) (cardm map[int64]*operate.Card) {
|
||
|
if len(ids) == 0 {
|
||
|
return
|
||
|
}
|
||
|
cardm = make(map[int64]*operate.Card, len(ids))
|
||
|
for _, id := range ids {
|
||
|
if o, ok := s.specialCardCache[id]; ok {
|
||
|
card := &operate.Card{}
|
||
|
card.FromTopstick(o)
|
||
|
cardm[id] = card
|
||
|
}
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (s *Service) cardSetChange(c context.Context, ids ...int64) (cardm map[int64]*operate.Card, seasonIDs []int32) {
|
||
|
if len(ids) == 0 {
|
||
|
return
|
||
|
}
|
||
|
cardm = make(map[int64]*operate.Card, len(ids))
|
||
|
for _, id := range ids {
|
||
|
if cs, ok := s.cardSetCache[id]; ok {
|
||
|
card := &operate.Card{}
|
||
|
card.FromCardSet(cs)
|
||
|
cardm[id] = card
|
||
|
for _, item := range card.Items {
|
||
|
switch cs.Type {
|
||
|
case "pgcs_rcmd":
|
||
|
seasonIDs = append(seasonIDs, int32(item.ID))
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return
|
||
|
}
|