media_controller.go 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. package media
  2. import (
  3. logger "eta/eta_mini_ht_api/common/component/log"
  4. "eta/eta_mini_ht_api/common/exception"
  5. "eta/eta_mini_ht_api/common/utils/page"
  6. "eta/eta_mini_ht_api/controllers"
  7. "eta/eta_mini_ht_api/service/media"
  8. "eta/eta_mini_ht_api/service/user"
  9. )
  10. type MediaController struct {
  11. controllers.ListController
  12. }
  13. func isLogin(listType string) bool {
  14. if listType == "logout" {
  15. logger.Info("当前用户未登录,展示部分详情")
  16. return false
  17. }
  18. if listType == "login" {
  19. return true
  20. }
  21. return false
  22. }
  23. // Search 搜索报告列表
  24. // @Description 搜索报告列表
  25. // @Success 200 {object}
  26. // @router /search [get]
  27. func (m *MediaController) Search(mediaType string, key string) {
  28. controllers.Wrap(&m.BaseController, func() (result *controllers.WrapData, err error) {
  29. result = m.InitWrapData("分页搜索媒体列表失败")
  30. if key == "" {
  31. err = exception.New(exception.SearchKeyEmptyError)
  32. m.FailedResult("分页搜索报告列表失败", result)
  33. return
  34. }
  35. detailType := m.Data["detailType"].(string)
  36. //if mediaType == "" || !m.CheckMediaType(mediaType) {
  37. // err = exception.New(exception.MediaTypeError)
  38. // m.FailedResult("分页查询媒体列表失败", result)
  39. // return
  40. //}
  41. pageRes := page.Page{
  42. Current: m.PageInfo.Current,
  43. PageSize: m.PageInfo.PageSize,
  44. }
  45. if m.PageInfo.LatestId == 0 {
  46. pageRes.Total, pageRes.LatestId = media.SearchMaxMediaId(mediaType, key)
  47. m.PageInfo.LatestId = pageRes.LatestId
  48. } else {
  49. pageRes.LatestId = m.PageInfo.LatestId
  50. pageRes.Total = m.PageInfo.Total
  51. }
  52. pageRes.TotalPage = page.TotalPages(pageRes.Total, pageRes.PageSize)
  53. list, err := media.SearchMediaList(mediaType, key, m.PageInfo, isLogin(detailType))
  54. if err != nil {
  55. m.FailedResult("分页搜索报告列表失败", result)
  56. return
  57. }
  58. reports := new(page.PageResult)
  59. reports.Data = list
  60. reports.Page = pageRes
  61. m.SuccessResult("分页搜索报告列表成功", reports, result)
  62. return
  63. })
  64. }
  65. // List 获取媒体列表
  66. // @Description 获取媒体列表
  67. // @Success 200 {object}
  68. // @router /list [get]
  69. func (m *MediaController) List(mediaType string, permissionIds string) {
  70. controllers.Wrap(&m.BaseController, func() (result *controllers.WrapData, err error) {
  71. result = m.InitWrapData("分页查询媒体列表失败")
  72. if mediaType == "" || !m.CheckMediaType(mediaType) {
  73. err = exception.New(exception.MediaTypeError)
  74. m.FailedResult("分页查询媒体列表失败", result)
  75. return
  76. }
  77. permissionIdList, err := m.TransPermissionIds(permissionIds)
  78. if err != nil {
  79. logger.Error("品种列表解析错误:%v", err)
  80. m.FailedResult("分页查询媒体列表失败", result)
  81. err = exception.New(exception.QueryReportPageFailed)
  82. return
  83. }
  84. pageRes := page.Page{
  85. Current: m.PageInfo.Current,
  86. PageSize: m.PageInfo.PageSize,
  87. }
  88. detailType := m.Data["detailType"].(string)
  89. var mediaIds []int
  90. if m.PageInfo.LatestId == 0 {
  91. pageRes.Total, pageRes.LatestId, mediaIds = media.GetTotalPageCountByPermissionIds(mediaType, permissionIdList)
  92. m.PageInfo.LatestId = pageRes.LatestId
  93. m.PageInfo.Total = pageRes.Total
  94. } else {
  95. pageRes.LatestId = m.PageInfo.LatestId
  96. pageRes.Total = m.PageInfo.Total
  97. }
  98. pageRes.TotalPage = page.TotalPages(pageRes.Total, pageRes.PageSize)
  99. list, err := media.GetMediaPageByIds(mediaType, m.PageInfo, mediaIds, isLogin(detailType))
  100. if err != nil {
  101. m.FailedResult("分页查询媒体列表失败", result)
  102. return
  103. }
  104. mediaList := new(page.PageResult)
  105. mediaList.Data = list
  106. mediaList.Page = pageRes
  107. m.SuccessResult("分页查询媒体列表成功", mediaList, result)
  108. return
  109. })
  110. }
  111. type RecordCountReq struct {
  112. MediaId int `json:"MediaId"`
  113. MediaType string `json:"MediaType"`
  114. }
  115. // Count 获取品种列表
  116. // @Description 获取最新发布的报告列表
  117. // @Success 200 {object}
  118. // @router /count [post]
  119. func (m *MediaController) Count() {
  120. controllers.Wrap(&m.BaseController, func() (result *controllers.WrapData, err error) {
  121. result = m.InitWrapData("媒体点击记录成功")
  122. var userInfo user.User
  123. userInfo = m.Data["user"].(user.User)
  124. recordReq := new(RecordCountReq)
  125. m.GetPostParams(recordReq)
  126. if recordReq.MediaType == "" || !m.CheckMediaType(recordReq.MediaType) {
  127. err = exception.New(exception.MediaTypeError)
  128. m.FailedResult("媒体点击记录失败", result)
  129. return
  130. }
  131. record := convertToRecordCount(recordReq)
  132. record.UserId = userInfo.Id
  133. record.Mobile = userInfo.Mobile
  134. err = media.CountMedia(record)
  135. if err != nil {
  136. err = exception.New(exception.MediaRecordClickCountFailed)
  137. m.FailedResult("媒体点击记录失败", result)
  138. return
  139. }
  140. m.SuccessResult("媒体点击记录成功", nil, result)
  141. return
  142. })
  143. }
  144. // GetMedia 获取媒体详情
  145. // @Description 获取媒体详情
  146. // @Success 200 {object}
  147. // @router /media [get]
  148. func (m *MediaController) GetMedia(mediaType string, mediaId int) {
  149. controllers.Wrap(&m.BaseController, func() (result *controllers.WrapData, err error) {
  150. result = m.InitWrapData("获取媒体详情失败")
  151. if mediaType == "" || !m.CheckMediaType(mediaType) {
  152. err = exception.New(exception.MediaTypeError)
  153. m.FailedResult("获取媒体详情失败", result)
  154. return
  155. }
  156. detailType := m.Data["detailType"]
  157. mediaDetail, err := media.GetMediaById(mediaType, mediaId)
  158. switch detailType {
  159. case "logout":
  160. logger.Info("当前用户未登录,展示部分详情")
  161. mediaDetail.Src = ""
  162. mediaDetail.Login = false
  163. case "login":
  164. mediaDetail.Login = true
  165. }
  166. if err != nil {
  167. m.FailedResult("获取媒体详情失败", result)
  168. return
  169. }
  170. m.SuccessResult("获取媒体详情成功", mediaDetail, result)
  171. return
  172. })
  173. }
  174. func convertToRecordCount(req *RecordCountReq) media.RecordCount {
  175. return media.RecordCount{
  176. MediaId: req.MediaId,
  177. MediaType: req.MediaType,
  178. Additional: "",
  179. }
  180. }