media_controller.go 7.0 KB

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