home_controller.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package home
  2. import (
  3. "eta/eta_mini_ht_api/common/exception"
  4. "eta/eta_mini_ht_api/common/utils/page"
  5. "eta/eta_mini_ht_api/controllers"
  6. reportService "eta/eta_mini_ht_api/domian/report"
  7. "eta/eta_mini_ht_api/service/report"
  8. )
  9. type HomeController struct {
  10. controllers.ListController
  11. }
  12. // Search 搜索报告列表
  13. // @Description 搜索报告列表
  14. // @Success 200 {object}
  15. // @router /search [get]
  16. func (r *HomeController) Search(key string) {
  17. controllers.Wrap(&r.BaseController, func() (result *controllers.WrapData, err error) {
  18. result = r.InitWrapData("分页搜索报告列表失败")
  19. if key == "" {
  20. err = exception.New(exception.SearchKeyEmptyError)
  21. r.FailedResult("分页搜索报告列表失败", result)
  22. return
  23. }
  24. detailType := r.Data["detailType"].(string)
  25. userInfo := r.Data["user"].(user.User)
  26. pageRes := page.Page{
  27. Current: r.PageInfo.Current,
  28. PageSize: r.PageInfo.PageSize,
  29. }
  30. //获取当前可以被搜索的报告原始ID
  31. //先要限制查询的id范围
  32. var reportIds []int
  33. pageRes.Total, pageRes.LatestId, reportIds, err = report.RangeSearch(key, isLogin(detailType), userInfo.Id)
  34. if err != nil {
  35. logger.Error("获取报告原始ID列表失败:%v", err)
  36. r.FailedResult("分页搜索报告列表失败", result)
  37. return
  38. }
  39. if len(reportIds) == 0 {
  40. reports := new(page.PageResult)
  41. reports.Data = []reportService.ReportDTO{}
  42. reports.Page = pageRes
  43. logger.Info("没有可以查询的报告列表")
  44. r.SuccessResult("分页搜索报告列表成功", reports, result)
  45. return
  46. }
  47. if r.PageInfo.LatestId == 0 {
  48. //pageRes.Total, pageRes.LatestId = report.SearchMaxReportId(key)
  49. r.PageInfo.LatestId = pageRes.LatestId
  50. r.PageInfo.Total = pageRes.Total
  51. } else {
  52. pageRes.LatestId = r.PageInfo.LatestId
  53. pageRes.Total = r.PageInfo.Total
  54. }
  55. pageRes.TotalPage = page.TotalPages(pageRes.Total, pageRes.PageSize)
  56. list := make([]reportService.ReportDTO, 0)
  57. if pageRes.LatestId > 0 {
  58. //订阅 TODO
  59. list, err = report.SearchReportList(key, reportIds, r.PageInfo, isLogin(detailType), userInfo.Id)
  60. if err != nil {
  61. r.FailedResult("分页搜索报告列表失败", result)
  62. return
  63. }
  64. }
  65. reports := new(page.PageResult)
  66. reports.Data = list
  67. reports.Page = pageRes
  68. r.SuccessResult("分页搜索报告列表成功", reports, result)
  69. return
  70. })
  71. }