fav.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. package dao
  2. import (
  3. "context"
  4. "net/http"
  5. "net/url"
  6. "strconv"
  7. "go-common/app/interface/main/space/model"
  8. favmdl "go-common/app/service/main/favorite/model"
  9. "go-common/library/ecode"
  10. "go-common/library/log"
  11. "go-common/library/net/metadata"
  12. )
  13. const (
  14. _favFolderURI = "/x/internal/v2/fav/folder"
  15. _favArchiveURI = "/x/internal/v2/fav/video"
  16. _favAlbumURI = "/userext/v1/Fav/getMyFav"
  17. _favMovieURI = "/follow/api/list/mine"
  18. _samplePage = "1"
  19. _samplePs = "1"
  20. )
  21. // FavFolder favorite folder list.
  22. func (d *Dao) FavFolder(c context.Context, mid, vmid int64) (res []*favmdl.VideoFolder, err error) {
  23. var (
  24. params = url.Values{}
  25. ip = metadata.String(c, metadata.RemoteIP)
  26. )
  27. params.Set("mid", strconv.FormatInt(mid, 10))
  28. params.Set("vmid", strconv.FormatInt(vmid, 10))
  29. var rs struct {
  30. Code int `json:"code"`
  31. Data []*favmdl.VideoFolder `json:"data"`
  32. }
  33. if err = d.httpR.Get(c, d.favFolderURL, ip, params, &rs); err != nil {
  34. log.Error("d.http.Get(%s,%d) error(%v)", d.favFolderURL, mid, err)
  35. return
  36. }
  37. if rs.Code != ecode.OK.Code() {
  38. log.Error("d.http.Get(%s,%d) code(%d)", d.favFolderURL, mid, rs.Code)
  39. err = ecode.Int(rs.Code)
  40. return
  41. }
  42. res = rs.Data
  43. return
  44. }
  45. // LiveFavCount get live(vc or album) favorite count.
  46. func (d *Dao) LiveFavCount(c context.Context, mid int64, favType int) (count int, err error) {
  47. var (
  48. req *http.Request
  49. rs struct {
  50. Code int `json:"code"`
  51. Data struct {
  52. PageInfo struct {
  53. Page int `json:"page"`
  54. PageSize int `json:"page_size"`
  55. TotalPage int `json:"total_page"`
  56. Count int `json:"count"`
  57. } `json:"pageinfo"`
  58. } `json:"data"`
  59. }
  60. ip = metadata.String(c, metadata.RemoteIP)
  61. )
  62. params := url.Values{}
  63. params.Set("biz_type", strconv.Itoa(favType))
  64. if req, err = d.httpR.NewRequest("GET", d.favAlbumURL, ip, params); err != nil {
  65. log.Error("d.httpR.NewRequest %s error(%v)", d.favAlbumURL, err)
  66. return
  67. }
  68. req.Header.Set("X-BILILIVE-UID", strconv.FormatInt(mid, 10))
  69. if err = d.httpR.Do(c, req, &rs); err != nil {
  70. log.Error("d.httpR.Get(%s,%d) error(%v)", d.favAlbumURL, mid, err)
  71. return
  72. }
  73. if rs.Code != ecode.OK.Code() {
  74. log.Error("d.httpR.Get(%s,%d) code(%d)", d.favAlbumURL, mid, rs.Code)
  75. err = ecode.Int(rs.Code)
  76. return
  77. }
  78. count = rs.Data.PageInfo.Count
  79. return
  80. }
  81. // MovieFavCount get movie fav count
  82. func (d *Dao) MovieFavCount(c context.Context, mid int64, favType int) (count int, err error) {
  83. var (
  84. params = url.Values{}
  85. ip = metadata.String(c, metadata.RemoteIP)
  86. )
  87. params.Set("season_type", strconv.Itoa(favType))
  88. params.Set("mid", strconv.FormatInt(mid, 10))
  89. params.Set("page", _samplePage)
  90. params.Set("pagesize", _samplePs)
  91. params.Set("build", _build)
  92. params.Set("platform", _platform)
  93. var (
  94. rs struct {
  95. Code int `json:"code"`
  96. Count string `json:"count"`
  97. }
  98. )
  99. if err = d.httpR.Get(c, d.favMovieURL, ip, params, &rs); err != nil {
  100. log.Error("d.httpR.Get(%s,%d) error(%v)", d.favMovieURL, mid, err)
  101. return
  102. }
  103. if rs.Code != ecode.OK.Code() {
  104. log.Error("d.httpR.Get(%s,%d) code(%d)", d.favMovieURL, mid, rs.Code)
  105. err = ecode.Int(rs.Code)
  106. return
  107. }
  108. count, _ = strconv.Atoi(rs.Count)
  109. return
  110. }
  111. // FavArchive fav archive.
  112. func (d *Dao) FavArchive(c context.Context, mid int64, arg *model.FavArcArg) (res *favmdl.SearchArchive, err error) {
  113. var (
  114. params = url.Values{}
  115. ip = metadata.String(c, metadata.RemoteIP)
  116. )
  117. if mid > 0 {
  118. params.Set("mid", strconv.FormatInt(mid, 10))
  119. }
  120. params.Set("vmid", strconv.FormatInt(arg.Vmid, 10))
  121. params.Set("fid", strconv.FormatInt(arg.Fid, 10))
  122. if arg.Tid > 0 {
  123. params.Set("tid", strconv.FormatInt(arg.Tid, 10))
  124. }
  125. if arg.Keyword != "" {
  126. params.Set("keyword", arg.Keyword)
  127. }
  128. if arg.Order != "" {
  129. params.Set("order", arg.Order)
  130. }
  131. params.Set("pn", strconv.Itoa(arg.Pn))
  132. params.Set("ps", strconv.Itoa(arg.Ps))
  133. var rs struct {
  134. Code int `json:"code"`
  135. Data *favmdl.SearchArchive `json:"data"`
  136. }
  137. if err = d.httpR.Get(c, d.favArcURL, ip, params, &rs); err != nil {
  138. log.Error("d.http.Get(%s,%d) error(%v)", d.favArcURL, mid, err)
  139. return
  140. }
  141. if rs.Code != ecode.OK.Code() {
  142. log.Error("d.http.Get(%s,%d) code(%d)", d.favArcURL, mid, rs.Code)
  143. err = ecode.Int(rs.Code)
  144. return
  145. }
  146. res = rs.Data
  147. return
  148. }