ugc.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package http
  2. import (
  3. "time"
  4. "go-common/app/interface/main/web-goblin/conf"
  5. webmdl "go-common/app/interface/main/web-goblin/model/web"
  6. "go-common/library/ecode"
  7. bm "go-common/library/net/http/blademaster"
  8. )
  9. const (
  10. _lmt = 10000
  11. _pgcFull = "pgcfull"
  12. _pgcIncre = "pgcincre"
  13. _ugcFull = "ugcfull"
  14. _ugcIncre = "ugcincre"
  15. )
  16. func ugcfull(c *bm.Context) {
  17. var (
  18. err error
  19. items []*webmdl.Mi
  20. )
  21. v := new(struct {
  22. Pn int64 `form:"pn" validate:"min=1"`
  23. Ps int64 `form:"ps" validate:"min=1,max=50"`
  24. Source string `form:"bsource" validate:"required"`
  25. })
  26. if err = c.Bind(v); err != nil {
  27. return
  28. }
  29. if !accessCard(_ugcFull, v.Source) {
  30. c.JSON(nil, ecode.AccessDenied)
  31. return
  32. }
  33. source := "?bsource=" + v.Source
  34. if items, err = srvWeb.UgcFull(c, v.Pn, v.Ps, source); err != nil {
  35. c.JSON(nil, err)
  36. return
  37. }
  38. data := make(map[string]interface{}, 5)
  39. data["app_name"] = _appName
  40. data["package_name"] = _packageName
  41. data["update_time"] = time.Now().Format("2006-01-02 15:04:05")
  42. data["source"] = v.Source
  43. data["shortvideos"] = items
  44. c.JSONMap(data, nil)
  45. }
  46. func ugcincre(c *bm.Context) {
  47. var (
  48. err error
  49. item []*webmdl.Mi
  50. )
  51. v := new(struct {
  52. Pn int `form:"pn" validate:"min=1"`
  53. Ps int `form:"ps" validate:"min=1,max=50"`
  54. StartTs int64 `form:"start_ts" validate:"required"`
  55. EndTs int64 `form:"end_ts" validate:"required"`
  56. Source string `form:"bsource" validate:"required"`
  57. })
  58. if err = c.Bind(v); err != nil {
  59. return
  60. }
  61. if !accessCard(_ugcIncre, v.Source) {
  62. c.JSON(nil, ecode.AccessDenied)
  63. return
  64. }
  65. if v.StartTs >= v.EndTs || v.EndTs-v.StartTs >= conf.Conf.OutSearch.Rspan {
  66. c.JSON(nil, ecode.RequestErr)
  67. return
  68. }
  69. if v.Ps*v.Pn > _lmt {
  70. c.JSON(nil, ecode.RequestErr)
  71. return
  72. }
  73. source := "?bsource=" + v.Source
  74. if item, err = srvWeb.UgcIncre(c, v.Pn, v.Ps, v.StartTs, v.EndTs, source); err != nil {
  75. c.JSON(nil, err)
  76. return
  77. }
  78. data := make(map[string]interface{}, 5)
  79. data["app_name"] = _appName
  80. data["package_name"] = _packageName
  81. data["update_time"] = time.Now().Format("2006-01-02 15:04:05")
  82. data["source"] = v.Source
  83. data["shortvideos"] = item
  84. c.JSONMap(data, nil)
  85. }
  86. func accessCard(flag, arg string) bool {
  87. var (
  88. b = false
  89. m = map[string][]string{
  90. _pgcFull: conf.Conf.OutSearch.AcPgcFull,
  91. _pgcIncre: conf.Conf.OutSearch.AcPgcIncre,
  92. _ugcFull: conf.Conf.OutSearch.AcUgcFull,
  93. _ugcIncre: conf.Conf.OutSearch.AcUgcIncre,
  94. }
  95. )
  96. for _, v := range m[flag] {
  97. if v == arg {
  98. b = true
  99. break
  100. }
  101. }
  102. return b
  103. }