report_controller.go 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. package report
  2. import (
  3. "encoding/json"
  4. "eta_mini_ht_api/common/exception"
  5. "eta_mini_ht_api/common/utils/page"
  6. "eta_mini_ht_api/controllers"
  7. "eta_mini_ht_api/domian/user"
  8. "eta_mini_ht_api/service/report"
  9. "fmt"
  10. )
  11. type ReportController struct {
  12. controllers.ListController
  13. }
  14. // Search 搜索报告列表
  15. // @Description 搜索报告列表
  16. // @Success 200 {object}
  17. // @router /search [get]
  18. func (r *ReportController) Search(key string) {
  19. controllers.Wrap(&r.BaseController, func() (result *controllers.WrapData, err error) {
  20. result = r.InitWrapData("分页搜索报告列表失败")
  21. if key == "" {
  22. err = exception.New(exception.SearchKeyEmptyError)
  23. r.FailedResult("分页搜索报告列表失败", result)
  24. return
  25. }
  26. pageReq := page.Page{
  27. Current: r.PageInfo.Current,
  28. PageSize: r.PageInfo.PageSize,
  29. }
  30. if r.PageInfo.LatestId == 0 {
  31. pageReq.LatestId = report.SearchMaxReportId()
  32. r.PageInfo.LatestId = pageReq.LatestId
  33. } else {
  34. pageReq.LatestId = r.PageInfo.LatestId
  35. }
  36. pageReq.Total = pageReq.LatestId
  37. list, err := report.SearchReportList(key, r.PageInfo)
  38. if err != nil {
  39. r.FailedResult("分页搜索报告列表失败", result)
  40. return
  41. }
  42. reports := new(page.PageResult)
  43. reports.Data = list
  44. reports.Page = pageReq
  45. r.SuccessResult("分页搜索报告列表成功", reports, result)
  46. return
  47. })
  48. }
  49. // List 获取报告列表
  50. // @Description 获取报告列表
  51. // @Success 200 {object}
  52. // @router /list [get]
  53. func (r *ReportController) List() {
  54. controllers.Wrap(&r.BaseController, func() (result *controllers.WrapData, err error) {
  55. result = r.InitWrapData("分页查询报告列表失败")
  56. pageReq := page.Page{
  57. Current: r.PageInfo.Current,
  58. PageSize: r.PageInfo.PageSize,
  59. }
  60. if r.PageInfo.LatestId == 0 {
  61. pageReq.LatestId = report.GetTotalPageCount()
  62. r.PageInfo.LatestId = pageReq.LatestId
  63. } else {
  64. pageReq.LatestId = r.PageInfo.LatestId
  65. }
  66. pageReq.Total = pageReq.LatestId
  67. list, err := report.GetReportPage(r.PageInfo)
  68. if err != nil {
  69. r.FailedResult("分页查询报告列表失败", result)
  70. return
  71. }
  72. reports := new(page.PageResult)
  73. reports.Data = list
  74. reports.Page = pageReq
  75. r.SuccessResult("查询报告列表成功", reports, result)
  76. return
  77. })
  78. }
  79. // HotRanked @Title 获取本周最热的报告列表
  80. // @Description 获取本周最热的报告列表
  81. // @Success 200 {object}
  82. // @router /hotRankedList [get]
  83. func (r *ReportController) HotRanked() {
  84. controllers.Wrap(&r.BaseController, func() (result *controllers.WrapData, err error) {
  85. limit, _ := r.GetInt("size")
  86. if limit <= 0 {
  87. limit = 3
  88. }
  89. result = r.InitWrapData("获取本周最热报告列表失败")
  90. list, err := report.GetRandedReportByWeeklyHot(limit)
  91. if err != nil {
  92. r.FailedResult("获取本周最热报告列表成功", result)
  93. return
  94. }
  95. r.SuccessResult("获取本周最热报告列表成功", list, result)
  96. return
  97. })
  98. }
  99. // PublishRanked @Title 获取最新发布的报告列表
  100. // @Description 获取最新发布的报告列表
  101. // @Success 200 {object}
  102. // @router /publishRankedList [get]
  103. func (r *ReportController) PublishRanked() {
  104. controllers.Wrap(&r.BaseController, func() (result *controllers.WrapData, err error) {
  105. result = r.InitWrapData("获取最新发布报告列表失败")
  106. //获取最新的报告列表
  107. list, err := report.GetRandedReportByPublishTime()
  108. if err != nil {
  109. r.FailedResult("获取最新发布报告列表失败", result)
  110. return
  111. }
  112. r.SuccessResult("获取最新发布报告列表成功", list, result)
  113. return
  114. })
  115. }
  116. // GetPermissions @Title 获取品种列表
  117. // @Description 获取最新发布的报告列表
  118. // @Success 200 {object}
  119. // @router /permissionList [get]
  120. func (r *ReportController) GetPermissions() {
  121. controllers.Wrap(&r.BaseController, func() (result *controllers.WrapData, err error) {
  122. result = r.InitWrapData("获取品种列表失败")
  123. //获取最新的报告列表
  124. json, err := report.GetPermissionList()
  125. if err != nil {
  126. r.FailedResult("获取品种列表失败", result)
  127. return
  128. }
  129. r.SuccessResult("获取最新发布报告列表成功", json.Children, result)
  130. return
  131. })
  132. }
  133. type RecordCountReq struct {
  134. ReportId int `json:"report_id"`
  135. IpAddress string `json:"ip_address"`
  136. Location string `json:"location"`
  137. Referer string `json:"referer"`
  138. Additional interface{} `json:"additional"`
  139. }
  140. // Count 获取品种列表
  141. // @Description 获取最新发布的报告列表
  142. // @Success 200 {object}
  143. // @router /count [post]
  144. func (r *ReportController) Count() {
  145. controllers.Wrap(&r.BaseController, func() (result *controllers.WrapData, err error) {
  146. result = r.InitWrapData("研报点击记录失败")
  147. var userInfo user.UserDTO
  148. userInfo = r.Data["user"].(user.UserDTO)
  149. recordReq := new(RecordCountReq)
  150. r.GetPostParams(recordReq)
  151. record := convertToRecordCount(recordReq)
  152. record.UserId = userInfo.Id
  153. record.Mobile = userInfo.Mobile
  154. err = report.CountReport(record)
  155. if err != nil {
  156. err = exception.New(exception.ReportRecordClickCountFailed)
  157. return
  158. }
  159. r.SuccessResult("研报点击记录成功", nil, result)
  160. return
  161. })
  162. }
  163. // GetReport 获取研报详情
  164. // @Description 获取研报详情
  165. // @Success 200 {object}
  166. // @router /report [get]
  167. func (r *ReportController) GetReport(reportId int) {
  168. controllers.Wrap(&r.BaseController, func() (result *controllers.WrapData, err error) {
  169. result = r.InitWrapData("获取研报详情失败")
  170. fmt.Println(reportId)
  171. reportDetail, err := report.GetReportById(reportId)
  172. if err != nil {
  173. err = exception.New(exception.GetReportFailed)
  174. return
  175. }
  176. r.SuccessResult("获取研报详情成功", reportDetail, result)
  177. return
  178. })
  179. }
  180. func convertToRecordCount(req *RecordCountReq) report.RecordCount {
  181. additionStr, _ := json.Marshal(req.Additional)
  182. return report.RecordCount{
  183. ReportId: req.ReportId,
  184. IpAddress: req.IpAddress,
  185. Location: req.Location,
  186. Referer: req.Referer,
  187. Additional: string(additionStr),
  188. }
  189. }