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.
67 lines
1.4 KiB
67 lines
1.4 KiB
package cms |
|
|
|
import ( |
|
"context" |
|
|
|
"go-common/app/interface/main/tv/model" |
|
"go-common/library/log" |
|
"go-common/library/sync/errgroup" |
|
) |
|
|
|
// MixedFilter filters ugc and pgc data to get the allowed data |
|
func (d *Dao) MixedFilter(ctx context.Context, sids []int64, aids []int64) (okSids map[int64]int, okAids map[int64]int) { |
|
g, _ := errgroup.WithContext(ctx) |
|
g.Go(func() (err error) { |
|
okAids = d.aidsFilter(context.Background(), aids) |
|
return |
|
}) |
|
g.Go(func() (err error) { |
|
okSids = d.sidsFilter(context.Background(), sids) |
|
return |
|
}) |
|
g.Wait() |
|
return |
|
} |
|
|
|
// filter canPlay Aids |
|
func (d *Dao) aidsFilter(ctx context.Context, aids []int64) (okAids map[int64]int) { |
|
var ( |
|
arcMetas map[int64]*model.ArcCMS |
|
err error |
|
) |
|
okAids = make(map[int64]int) |
|
if arcMetas, err = d.LoadArcsMediaMap(ctx, aids); err != nil { |
|
log.Error("MixedFilter Aids %v, Err %v", aids, err) |
|
return |
|
} |
|
if len(arcMetas) == 0 { |
|
return |
|
} |
|
for aid, arcMeta := range arcMetas { |
|
if arcMeta.CanPlay() { |
|
okAids[aid] = 1 |
|
} |
|
} |
|
return |
|
} |
|
|
|
// filter canPlay Sids |
|
func (d *Dao) sidsFilter(ctx context.Context, sids []int64) (okSids map[int64]int) { |
|
var ( |
|
snsAuth map[int64]*model.SnAuth |
|
err error |
|
) |
|
okSids = make(map[int64]int) |
|
if snsAuth, err = d.LoadSnsAuthMap(ctx, sids); err != nil { |
|
log.Error("MixedFilter Sids %v, Err %v", sids, err) |
|
} |
|
if len(snsAuth) == 0 { |
|
return |
|
} |
|
for sid, snAuth := range snsAuth { |
|
if snAuth.CanPlay() { |
|
okSids[sid] = 1 |
|
} |
|
} |
|
return |
|
}
|
|
|