ugc_batch.go 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package cms
  2. import (
  3. "context"
  4. "fmt"
  5. "go-common/app/interface/main/tv/model"
  6. "go-common/library/log"
  7. )
  8. const (
  9. _arcCMSDeleted = 1
  10. _mcArcCMSKey = "arc_cms_%d"
  11. _mcVideoCMSKey = "video_cms_%d"
  12. )
  13. // ArcCMSCacheKey .
  14. func (d *Dao) ArcCMSCacheKey(aid int64) string {
  15. return fmt.Sprintf(_mcArcCMSKey, aid)
  16. }
  17. // VideoCMSCacheKey .
  18. func (d *Dao) VideoCMSCacheKey(cid int64) string {
  19. return fmt.Sprintf(_mcVideoCMSKey, cid)
  20. }
  21. // ArcsMetaCache pick archive cms meta cache
  22. func (d *Dao) ArcsMetaCache(c context.Context, ids []int64) (cached map[int64]*model.ArcCMS, missed []int64, err error) {
  23. if len(ids) == 0 {
  24. return
  25. }
  26. cached = make(map[int64]*model.ArcCMS, len(ids))
  27. idmap, allKeys := keysTreat(ids, d.ArcCMSCacheKey)
  28. conn := d.mc.Get(c)
  29. defer conn.Close()
  30. replys, err := conn.GetMulti(allKeys)
  31. if err != nil {
  32. PromError("mc:获取Archive信息缓存")
  33. log.Error("conn.Gets(%v) error(%v)", allKeys, err)
  34. err = nil
  35. return
  36. }
  37. for key, item := range replys {
  38. art := &model.ArcCMS{}
  39. if err = conn.Scan(item, art); err != nil {
  40. PromError("mc:获取Archive信息缓存json解析")
  41. log.Error("item.Scan(%s) error(%v)", item.Value, err)
  42. err = nil
  43. continue
  44. }
  45. cached[idmap[key]] = art
  46. delete(idmap, key)
  47. }
  48. missed = missedTreat(idmap, len(cached))
  49. return
  50. }
  51. // VideosMetaCache pick video cms meta cache
  52. func (d *Dao) VideosMetaCache(c context.Context, ids []int64) (cached map[int64]*model.VideoCMS, missed []int64, err error) {
  53. if len(ids) == 0 {
  54. return
  55. }
  56. cached = make(map[int64]*model.VideoCMS, len(ids))
  57. idmap, allKeys := keysTreat(ids, d.VideoCMSCacheKey)
  58. conn := d.mc.Get(c)
  59. defer conn.Close()
  60. replys, err := conn.GetMulti(allKeys)
  61. if err != nil {
  62. PromError("mc:获取Video信息缓存")
  63. log.Error("conn.Gets(%v) error(%v)", allKeys, err)
  64. err = nil
  65. return
  66. }
  67. for key, item := range replys {
  68. art := &model.VideoCMS{}
  69. if err = conn.Scan(item, art); err != nil {
  70. PromError("mc:获取Video信息缓存缓存json解析")
  71. log.Error("item.Scan(%s) error(%v)", item.Value, err)
  72. err = nil
  73. continue
  74. }
  75. if art.Deleted == _arcCMSDeleted { // if it's deleted, we ignore it
  76. log.Info("ArcCMS deleted, %v, %v", item, art)
  77. continue
  78. }
  79. cached[idmap[key]] = art
  80. delete(idmap, key)
  81. }
  82. missed = missedTreat(idmap, len(cached))
  83. return
  84. }