2019-04-22 02:59:20 +00:00

125 lines
3.2 KiB
Go

package feed
import (
"context"
"time"
cdm "go-common/app/interface/main/app-card/model"
"go-common/app/interface/main/app-card/model/card"
"go-common/app/interface/main/app-card/model/card/banner"
"go-common/app/interface/main/app-card/model/card/operate"
"go-common/app/interface/main/app-feed/model"
"go-common/app/interface/main/app-feed/model/feed"
"go-common/app/service/main/archive/model/archive"
"go-common/library/log"
)
var (
_auditBanners = []*banner.Banner{
&banner.Banner{
Title: "充电",
Image: "http://i0.hdslb.com/bfs/archive/9ce8f6cdf76e6cbd50ce7db76262d5a35e594c79.png",
Hash: "3c4990d06c46de0080e3821fca6bedca",
URI: "bilibili://video/813060",
},
}
// av2314237 已经删除,后续看情况处理
// 已删除失效id已更换新的稿件id
_aids = []int64{308040, 2431658, 2432648, 2427553, 539600, 1968681, 850424, 887861, 1960912, 1935680, 1406019,
1985297, 1977493, 2312184, 2316891, 864845, 1986932, 880857, 875624, 744299}
)
// Audit check audit plat then return audit data.
func (s *Service) Audit(c context.Context, mobiApp string, plat int8, build int) (is []*feed.Item, ok bool) {
if plats, ok := s.auditCache[mobiApp]; ok {
if _, ok = plats[build]; ok {
return s.auditData(c), true
}
}
return
}
// Audit2 check audit plat and ip, then return audit data.
func (s *Service) Audit2(c context.Context, mobiApp string, plat int8, build int, column cdm.ColumnStatus) (is []card.Handler, ok bool) {
if plats, ok := s.auditCache[mobiApp]; ok {
if _, ok = plats[build]; ok {
return s.auditData2(c, plat, column), true
}
}
return
}
// auditData some data for audit.
func (s *Service) auditData(c context.Context) (is []*feed.Item) {
i := &feed.Item{}
i.FromBanner(_auditBanners, "")
is = append(is, i)
am, err := s.ArchivesWithPlayer(c, _aids, 0, "", 0, 0, 0, 0)
if err != nil {
log.Error("%+v", err)
return
}
for _, aid := range _aids {
if a, ok := am[aid]; ok {
i := &feed.Item{}
i.FromAv(a)
is = append(is, i)
}
}
return
}
// auditData2 some data for audit.
func (s *Service) auditData2(c context.Context, plat int8, column cdm.ColumnStatus) (is []card.Handler) {
i := card.Handle(plat, model.GotoBanner, "", column, nil, nil, nil, nil, nil)
if i != nil {
op := &operate.Card{}
op.FromBanner(_auditBanners, "")
i.From(nil, op)
is = append(is, i)
}
am, err := s.arc.Archives(c, _aids)
if err != nil {
log.Error("%+v", err)
}
var main interface{}
for _, aid := range _aids {
if a, ok := am[aid]; ok {
i := card.Handle(plat, model.GotoAv, "", column, nil, nil, nil, nil, nil)
if i == nil {
continue
}
op := &operate.Card{}
op.From(cdm.CardGotoAv, aid, 0, 0, 0)
main = map[int64]*archive.ArchiveWithPlayer{a.Aid: &archive.ArchiveWithPlayer{Archive3: archive.BuildArchive3(a)}}
i.From(main, op)
if !i.Get().Right {
continue
}
if model.IsIPad(plat) {
// ipad卡片不展示标签
i.Get().DescButton = nil
}
is = append(is, i)
}
}
return
}
func (s *Service) loadAuditCache() {
as, err := s.adt.Audits(context.Background())
if err != nil {
log.Error("s.adt.Audits error(%v)", err)
return
}
s.auditCache = as
}
// auditproc load audit cache.
func (s *Service) auditproc() {
for {
time.Sleep(s.tick)
s.loadAuditCache()
}
}