report_controller.go 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  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/service/report"
  8. "eta_mini_ht_api/service/user"
  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. // AnalystReportList @Title 获取最新发布的报告列表
  117. // @Description 获取最新发布的报告列表
  118. // @Success 200 {object}
  119. // @router /AnalystReportList [get]
  120. func (r *ReportController) AnalystReportList(authorId int) {
  121. controllers.Wrap(&r.BaseController, func() (result *controllers.WrapData, err error) {
  122. result = r.InitWrapData("分页获取研究员报告列表失败")
  123. pageReq := page.Page{
  124. Current: r.PageInfo.Current,
  125. PageSize: r.PageInfo.PageSize,
  126. }
  127. if r.PageInfo.LatestId == 0 {
  128. pageReq.LatestId = report.GetTotalPageCount()
  129. r.PageInfo.LatestId = pageReq.LatestId
  130. } else {
  131. pageReq.LatestId = r.PageInfo.LatestId
  132. }
  133. pageReq.Total = pageReq.LatestId
  134. list, err := report.GetReportPage(r.PageInfo)
  135. if err != nil {
  136. r.FailedResult("分页查询报告列表失败", result)
  137. return
  138. }
  139. reports := new(page.PageResult)
  140. reports.Data = list
  141. reports.Page = pageReq
  142. r.SuccessResult("查询报告列表成功", reports, result)
  143. return
  144. })
  145. }
  146. // GetPermissions @Title 获取品种列表
  147. // @Description 获取最新发布的报告列表
  148. // @Success 200 {object}
  149. // @router /permissionList [get]
  150. func (r *ReportController) GetPermissions() {
  151. controllers.Wrap(&r.BaseController, func() (result *controllers.WrapData, err error) {
  152. result = r.InitWrapData("获取品种列表失败")
  153. //获取最新的报告列表
  154. json, err := report.GetPermissionList()
  155. if err != nil {
  156. r.FailedResult("获取品种列表失败", result)
  157. return
  158. }
  159. r.SuccessResult("获取最新发布报告列表成功", json.Children, result)
  160. return
  161. })
  162. }
  163. type RecordCountReq struct {
  164. ReportId int `json:"report_id"`
  165. IpAddress string `json:"ip_address"`
  166. Location string `json:"location"`
  167. Referer string `json:"referer"`
  168. Additional interface{} `json:"additional"`
  169. }
  170. // Count 获取品种列表
  171. // @Description 获取最新发布的报告列表
  172. // @Success 200 {object}
  173. // @router /count [post]
  174. func (r *ReportController) Count() {
  175. controllers.Wrap(&r.BaseController, func() (result *controllers.WrapData, err error) {
  176. result = r.InitWrapData("研报点击记录失败")
  177. var userInfo user.User
  178. userInfo = r.Data["user"].(user.User)
  179. recordReq := new(RecordCountReq)
  180. r.GetPostParams(recordReq)
  181. record := convertToRecordCount(recordReq)
  182. record.UserId = userInfo.Id
  183. record.Mobile = userInfo.Mobile
  184. err = report.CountReport(record)
  185. if err != nil {
  186. err = exception.New(exception.ReportRecordClickCountFailed)
  187. return
  188. }
  189. r.SuccessResult("研报点击记录成功", nil, result)
  190. return
  191. })
  192. }
  193. // GetReport 获取研报详情
  194. // @Description 获取研报详情
  195. // @Success 200 {object}
  196. // @router /report [get]
  197. func (r *ReportController) GetReport(reportId int) {
  198. controllers.Wrap(&r.BaseController, func() (result *controllers.WrapData, err error) {
  199. result = r.InitWrapData("获取研报详情失败")
  200. fmt.Println(reportId)
  201. reportDetail, err := report.GetReportById(reportId)
  202. if err != nil {
  203. err = exception.New(exception.GetReportFailed)
  204. return
  205. }
  206. r.SuccessResult("获取研报详情成功", reportDetail, result)
  207. return
  208. })
  209. }
  210. func convertToRecordCount(req *RecordCountReq) report.RecordCount {
  211. additionStr, _ := json.Marshal(req.Additional)
  212. return report.RecordCount{
  213. ReportId: req.ReportId,
  214. IpAddress: req.IpAddress,
  215. Location: req.Location,
  216. Referer: req.Referer,
  217. Additional: string(additionStr),
  218. }
  219. }