148 lines
3.5 KiB
Go
148 lines
3.5 KiB
Go
|
package history
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
|
||
|
hismdl "go-common/app/interface/main/history/model"
|
||
|
"go-common/app/interface/main/tv/model"
|
||
|
"go-common/app/interface/main/tv/model/history"
|
||
|
"go-common/library/log"
|
||
|
)
|
||
|
|
||
|
func (s *Service) pgcHisRes(ctx context.Context, res []*hismdl.Resource) (resMap map[int64]*history.HisRes, err error) {
|
||
|
var (
|
||
|
snMetas map[int64]*model.SeasonCMS
|
||
|
epMetas map[int64]*model.EpCMS
|
||
|
pickSids []int64
|
||
|
pickEpids []int64
|
||
|
)
|
||
|
resMap = make(map[int64]*history.HisRes)
|
||
|
for _, v := range res {
|
||
|
pickSids = append(pickSids, v.Sid)
|
||
|
pickEpids = append(pickEpids, v.Epid)
|
||
|
}
|
||
|
if snMetas, err = s.cmsDao.LoadSnsCMSMap(ctx, pickSids); err != nil {
|
||
|
log.Error("LoadSnsCMS Sids %v, Err %v", pickSids, err)
|
||
|
return
|
||
|
}
|
||
|
if epMetas, err = s.cmsDao.LoadEpsCMS(ctx, pickEpids); err != nil {
|
||
|
log.Warn("LoadEpsCMS Epids %v, Err %v", pickEpids, err)
|
||
|
err = nil
|
||
|
}
|
||
|
for _, v := range res {
|
||
|
his := hisTrans(v)
|
||
|
his.Type = _typePGC
|
||
|
his.Page = nil
|
||
|
// season info
|
||
|
snMeta, okS := snMetas[v.Sid]
|
||
|
if !okS {
|
||
|
log.Error("pgcHisRes Missing Info Sid %d", v.Sid)
|
||
|
continue
|
||
|
}
|
||
|
his.Title = snMeta.Title
|
||
|
his.Cover = snMeta.Cover
|
||
|
if snMeta.NeedVip() { // add vip corner mark
|
||
|
his.CornerMark = &(*s.conf.Cfg.SnVipCorner)
|
||
|
}
|
||
|
// ep info
|
||
|
epMeta, okE := epMetas[v.Epid]
|
||
|
if !okE {
|
||
|
log.Warn("pgcHisRes Missing Info Epid %d", v.Epid)
|
||
|
} else {
|
||
|
his.EPMeta = &history.HisEP{
|
||
|
EPID: epMeta.EPID,
|
||
|
Cover: epMeta.Cover,
|
||
|
Title: epMeta.Subtitle,
|
||
|
LongTitle: epMeta.Title,
|
||
|
}
|
||
|
}
|
||
|
resMap[v.Sid] = his
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (s *Service) ugcHisRes(ctx context.Context, res []*hismdl.Resource) (resMap map[int64]*history.HisRes, err error) {
|
||
|
var (
|
||
|
arcMetas map[int64]*model.ArcCMS
|
||
|
videoMetas map[int64]*model.VideoCMS
|
||
|
pickAids []int64
|
||
|
pickCids []int64
|
||
|
)
|
||
|
resMap = make(map[int64]*history.HisRes)
|
||
|
for _, v := range res {
|
||
|
pickAids = append(pickAids, v.Oid)
|
||
|
pickCids = append(pickCids, v.Cid)
|
||
|
}
|
||
|
if arcMetas, err = s.cmsDao.LoadArcsMediaMap(ctx, pickAids); err != nil {
|
||
|
log.Error("LoadArcsMediaMap Sids %v, Err %v", pickAids, err)
|
||
|
return
|
||
|
}
|
||
|
if videoMetas, err = s.cmsDao.LoadVideosMeta(ctx, pickCids); err != nil {
|
||
|
log.Warn("LoadVideosMeta Epids %v, Err %v", pickCids, err)
|
||
|
err = nil
|
||
|
}
|
||
|
for _, v := range res {
|
||
|
his := hisTrans(v)
|
||
|
his.Type = _typeUGC
|
||
|
his.Page = nil
|
||
|
// season info
|
||
|
arcMeta, okS := arcMetas[v.Oid]
|
||
|
if !okS {
|
||
|
log.Error("ugcHisRes Missing Info Aid %d", v.Oid)
|
||
|
continue
|
||
|
}
|
||
|
his.Title = arcMeta.Title
|
||
|
his.Cover = arcMeta.Cover
|
||
|
// ep info
|
||
|
video, okE := videoMetas[v.Cid]
|
||
|
if !okE {
|
||
|
log.Warn("ugcHisRes Missing Info Cid %d", v.Cid)
|
||
|
} else {
|
||
|
his.Page = &history.HisPage{
|
||
|
CID: video.CID,
|
||
|
Part: video.Title,
|
||
|
Page: video.IndexOrder,
|
||
|
}
|
||
|
}
|
||
|
resMap[v.Oid] = his
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func hisTrans(res *hismdl.Resource) *history.HisRes {
|
||
|
return &history.HisRes{
|
||
|
Mid: res.Mid,
|
||
|
Oid: res.Oid,
|
||
|
Sid: res.Sid,
|
||
|
Epid: res.Epid,
|
||
|
Cid: res.Cid,
|
||
|
Business: res.Business,
|
||
|
DT: res.DT,
|
||
|
Pro: res.Pro,
|
||
|
Unix: res.Unix,
|
||
|
Type: _typePGC,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (s *Service) getDuration(ctx context.Context, res []*hismdl.Resource) (durs map[int64]int64) {
|
||
|
var (
|
||
|
aids []int64
|
||
|
)
|
||
|
durs = make(map[int64]int64)
|
||
|
for _, v := range res {
|
||
|
aids = append(aids, v.Oid)
|
||
|
}
|
||
|
resMeta := s.arcDao.LoadViews(ctx, aids)
|
||
|
for _, v := range res {
|
||
|
if view, ok := resMeta[v.Oid]; ok && len(view.Pages) > 0 {
|
||
|
for _, vp := range view.Pages {
|
||
|
if v.Cid == vp.Cid {
|
||
|
durs[v.Oid] = vp.Duration
|
||
|
break
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return
|
||
|
}
|