media_controller.go 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. package media
  2. import (
  3. "encoding/json"
  4. logger "eta_mini_ht_api/common/component/log"
  5. "eta_mini_ht_api/common/exception"
  6. "eta_mini_ht_api/common/utils/page"
  7. "eta_mini_ht_api/controllers"
  8. "eta_mini_ht_api/service/media"
  9. "eta_mini_ht_api/service/report"
  10. )
  11. type MediaController struct {
  12. controllers.ListController
  13. }
  14. const (
  15. video = "video"
  16. audio = "audio"
  17. )
  18. // Search 搜索报告列表
  19. // @Description 搜索报告列表
  20. // @Success 200 {object}
  21. // @router /search [get]
  22. func (m *MediaController) Search(mediaType string, key string) {
  23. controllers.Wrap(&m.BaseController, func() (result *controllers.WrapData, err error) {
  24. result = m.InitWrapData("分页搜索媒体列表失败")
  25. if key == "" {
  26. err = exception.New(exception.SearchKeyEmptyError)
  27. m.FailedResult("分页搜索报告列表失败", result)
  28. return
  29. }
  30. if mediaType == "" || !checkMediaType(mediaType) {
  31. err = exception.New(exception.MediaTypeError)
  32. m.FailedResult("分页查询媒体列表失败", result)
  33. return
  34. }
  35. pageRes := page.Page{
  36. Current: m.PageInfo.Current,
  37. PageSize: m.PageInfo.PageSize,
  38. }
  39. if m.PageInfo.LatestId == 0 {
  40. pageRes.Total, pageRes.LatestId = media.SearchMaxMediaId(mediaType, key)
  41. m.PageInfo.LatestId = pageRes.LatestId
  42. } else {
  43. pageRes.LatestId = m.PageInfo.LatestId
  44. pageRes.Total = m.PageInfo.Total
  45. }
  46. pageRes.TotalPage = page.TotalPages(pageRes.Total, pageRes.PageSize)
  47. list, err := media.SearchMediaList(mediaType, key, m.PageInfo)
  48. if err != nil {
  49. m.FailedResult("分页搜索报告列表失败", result)
  50. return
  51. }
  52. reports := new(page.PageResult)
  53. reports.Data = list
  54. reports.Page = pageRes
  55. m.SuccessResult("分页搜索报告列表成功", reports, result)
  56. return
  57. })
  58. }
  59. // List 获取媒体列表
  60. // @Description 获取媒体列表
  61. // @Success 200 {object}
  62. // @router /list [get]
  63. func (m *MediaController) List(mediaType string, permissionIds string) {
  64. controllers.Wrap(&m.BaseController, func() (result *controllers.WrapData, err error) {
  65. result = m.InitWrapData("分页查询媒体列表失败")
  66. if mediaType == "" || !checkMediaType(mediaType) {
  67. err = exception.New(exception.MediaTypeError)
  68. m.FailedResult("分页查询媒体列表失败", result)
  69. return
  70. }
  71. permissionIdList, err := m.TransPermissionIds(permissionIds)
  72. if err != nil {
  73. logger.Error("品种列表解析错误:%v", err)
  74. m.FailedResult("分页查询媒体列表失败", result)
  75. err = exception.New(exception.QueryReportPageFailed)
  76. return
  77. }
  78. pageRes := page.Page{
  79. Current: m.PageInfo.Current,
  80. PageSize: m.PageInfo.PageSize,
  81. }
  82. var mediaIds []int
  83. if m.PageInfo.LatestId == 0 {
  84. pageRes.Total, pageRes.LatestId, mediaIds = media.GetTotalPageCountByPermissionIds(mediaType, permissionIdList)
  85. m.PageInfo.LatestId = pageRes.LatestId
  86. m.PageInfo.Total = pageRes.Total
  87. } else {
  88. pageRes.LatestId = m.PageInfo.LatestId
  89. pageRes.Total = m.PageInfo.Total
  90. }
  91. pageRes.TotalPage = page.TotalPages(pageRes.Total, pageRes.PageSize)
  92. list, err := media.GetMediaPageByIds(mediaType, m.PageInfo, mediaIds)
  93. if err != nil {
  94. m.FailedResult("分页查询媒体列表失败", result)
  95. return
  96. }
  97. reports := new(page.PageResult)
  98. reports.Data = list
  99. reports.Page = pageRes
  100. m.SuccessResult("分页查询媒体列表成功", reports, result)
  101. return
  102. })
  103. }
  104. type RecordCountReq struct {
  105. ReportId int `json:"reportId"`
  106. IpAddress string `json:"ipAddress"`
  107. Location string `json:"location"`
  108. Referer string `json:"referer"`
  109. Additional interface{} `json:"additional"`
  110. }
  111. // // GetReport 获取研报详情
  112. // // @Description 获取研报详情
  113. // // @Success 200 {object}
  114. // // @router /report [get]
  115. //
  116. // func (r *ReportController) GetReport(reportId int) {
  117. // controllers.Wrap(&r.BaseController, func() (result *controllers.WrapData, err error) {
  118. // result = r.InitWrapData("获取研报详情失败")
  119. // fmt.Println(reportId)
  120. // reportDetail, err := report.GetReportById(reportId)
  121. // if err != nil {
  122. // err = exception.New(exception.GetReportFailed)
  123. // return
  124. // }
  125. // r.SuccessResult("获取研报详情成功", reportDetail, result)
  126. // return
  127. // })
  128. // }
  129. func convertToRecordCount(req *RecordCountReq) report.RecordCount {
  130. additionStr, _ := json.Marshal(req.Additional)
  131. return report.RecordCount{
  132. ReportId: req.ReportId,
  133. IpAddress: req.IpAddress,
  134. Location: req.Location,
  135. Referer: req.Referer,
  136. Additional: string(additionStr),
  137. }
  138. }
  139. func checkMediaType(mediaType string) bool {
  140. if mediaType == video || mediaType == audio {
  141. return true
  142. }
  143. return false
  144. }