You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
147 lines
3.5 KiB
147 lines
3.5 KiB
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 |
|
}
|
|
|