mixed.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package cms
  2. import (
  3. "context"
  4. "go-common/app/interface/main/tv/model"
  5. "go-common/library/log"
  6. "go-common/library/sync/errgroup"
  7. )
  8. // MixedFilter filters ugc and pgc data to get the allowed data
  9. func (d *Dao) MixedFilter(ctx context.Context, sids []int64, aids []int64) (okSids map[int64]int, okAids map[int64]int) {
  10. g, _ := errgroup.WithContext(ctx)
  11. g.Go(func() (err error) {
  12. okAids = d.aidsFilter(context.Background(), aids)
  13. return
  14. })
  15. g.Go(func() (err error) {
  16. okSids = d.sidsFilter(context.Background(), sids)
  17. return
  18. })
  19. g.Wait()
  20. return
  21. }
  22. // filter canPlay Aids
  23. func (d *Dao) aidsFilter(ctx context.Context, aids []int64) (okAids map[int64]int) {
  24. var (
  25. arcMetas map[int64]*model.ArcCMS
  26. err error
  27. )
  28. okAids = make(map[int64]int)
  29. if arcMetas, err = d.LoadArcsMediaMap(ctx, aids); err != nil {
  30. log.Error("MixedFilter Aids %v, Err %v", aids, err)
  31. return
  32. }
  33. if len(arcMetas) == 0 {
  34. return
  35. }
  36. for aid, arcMeta := range arcMetas {
  37. if arcMeta.CanPlay() {
  38. okAids[aid] = 1
  39. }
  40. }
  41. return
  42. }
  43. // filter canPlay Sids
  44. func (d *Dao) sidsFilter(ctx context.Context, sids []int64) (okSids map[int64]int) {
  45. var (
  46. snsAuth map[int64]*model.SnAuth
  47. err error
  48. )
  49. okSids = make(map[int64]int)
  50. if snsAuth, err = d.LoadSnsAuthMap(ctx, sids); err != nil {
  51. log.Error("MixedFilter Sids %v, Err %v", sids, err)
  52. }
  53. if len(snsAuth) == 0 {
  54. return
  55. }
  56. for sid, snAuth := range snsAuth {
  57. if snAuth.CanPlay() {
  58. okSids[sid] = 1
  59. }
  60. }
  61. return
  62. }