package report import ( "encoding/json" "eta_mini_ht_api/common/exception" "eta_mini_ht_api/common/utils/page" "eta_mini_ht_api/controllers" "eta_mini_ht_api/service/report" "eta_mini_ht_api/service/user" "fmt" ) type ReportController struct { controllers.ListController } // Search 搜索报告列表 // @Description 搜索报告列表 // @Success 200 {object} // @router /search [get] func (r *ReportController) Search(key string) { controllers.Wrap(&r.BaseController, func() (result *controllers.WrapData, err error) { result = r.InitWrapData("分页搜索报告列表失败") if key == "" { err = exception.New(exception.SearchKeyEmptyError) r.FailedResult("分页搜索报告列表失败", result) return } pageReq := page.Page{ Current: r.PageInfo.Current, PageSize: r.PageInfo.PageSize, } if r.PageInfo.LatestId == 0 { pageReq.LatestId = report.SearchMaxReportId() r.PageInfo.LatestId = pageReq.LatestId } else { pageReq.LatestId = r.PageInfo.LatestId } pageReq.Total = pageReq.LatestId list, err := report.SearchReportList(key, r.PageInfo) if err != nil { r.FailedResult("分页搜索报告列表失败", result) return } reports := new(page.PageResult) reports.Data = list reports.Page = pageReq r.SuccessResult("分页搜索报告列表成功", reports, result) return }) } // List 获取报告列表 // @Description 获取报告列表 // @Success 200 {object} // @router /list [get] func (r *ReportController) List() { controllers.Wrap(&r.BaseController, func() (result *controllers.WrapData, err error) { result = r.InitWrapData("分页查询报告列表失败") pageReq := page.Page{ Current: r.PageInfo.Current, PageSize: r.PageInfo.PageSize, } if r.PageInfo.LatestId == 0 { pageReq.LatestId = report.GetTotalPageCount() r.PageInfo.LatestId = pageReq.LatestId } else { pageReq.LatestId = r.PageInfo.LatestId } pageReq.Total = pageReq.LatestId list, err := report.GetReportPage(r.PageInfo) if err != nil { r.FailedResult("分页查询报告列表失败", result) return } reports := new(page.PageResult) reports.Data = list reports.Page = pageReq r.SuccessResult("查询报告列表成功", reports, result) return }) } // HotRanked @Title 获取本周最热的报告列表 // @Description 获取本周最热的报告列表 // @Success 200 {object} // @router /hotRankedList [get] func (r *ReportController) HotRanked() { controllers.Wrap(&r.BaseController, func() (result *controllers.WrapData, err error) { limit, _ := r.GetInt("size") if limit <= 0 { limit = 3 } result = r.InitWrapData("获取本周最热报告列表失败") list, err := report.GetRandedReportByWeeklyHot(limit) if err != nil { r.FailedResult("获取本周最热报告列表成功", result) return } r.SuccessResult("获取本周最热报告列表成功", list, result) return }) } // PublishRanked @Title 获取最新发布的报告列表 // @Description 获取最新发布的报告列表 // @Success 200 {object} // @router /publishRankedList [get] func (r *ReportController) PublishRanked() { controllers.Wrap(&r.BaseController, func() (result *controllers.WrapData, err error) { result = r.InitWrapData("获取最新发布报告列表失败") //获取最新的报告列表 list, err := report.GetRandedReportByPublishTime() if err != nil { r.FailedResult("获取最新发布报告列表失败", result) return } r.SuccessResult("获取最新发布报告列表成功", list, result) return }) } // AnalystReportList @Title 获取最新发布的报告列表 // @Description 获取最新发布的报告列表 // @Success 200 {object} // @router /AnalystReportList [get] func (r *ReportController) AnalystReportList(authorId int) { controllers.Wrap(&r.BaseController, func() (result *controllers.WrapData, err error) { result = r.InitWrapData("分页获取研究员报告列表失败") pageReq := page.Page{ Current: r.PageInfo.Current, PageSize: r.PageInfo.PageSize, } if r.PageInfo.LatestId == 0 { pageReq.LatestId = report.GetTotalPageCount() r.PageInfo.LatestId = pageReq.LatestId } else { pageReq.LatestId = r.PageInfo.LatestId } pageReq.Total = pageReq.LatestId list, err := report.GetReportPage(r.PageInfo) if err != nil { r.FailedResult("分页查询报告列表失败", result) return } reports := new(page.PageResult) reports.Data = list reports.Page = pageReq r.SuccessResult("查询报告列表成功", reports, result) return }) } // GetPermissions @Title 获取品种列表 // @Description 获取最新发布的报告列表 // @Success 200 {object} // @router /permissionList [get] func (r *ReportController) GetPermissions() { controllers.Wrap(&r.BaseController, func() (result *controllers.WrapData, err error) { result = r.InitWrapData("获取品种列表失败") //获取最新的报告列表 json, err := report.GetPermissionList() if err != nil { r.FailedResult("获取品种列表失败", result) return } r.SuccessResult("获取最新发布报告列表成功", json.Children, result) return }) } type RecordCountReq struct { ReportId int `json:"report_id"` IpAddress string `json:"ip_address"` Location string `json:"location"` Referer string `json:"referer"` Additional interface{} `json:"additional"` } // Count 获取品种列表 // @Description 获取最新发布的报告列表 // @Success 200 {object} // @router /count [post] func (r *ReportController) Count() { controllers.Wrap(&r.BaseController, func() (result *controllers.WrapData, err error) { result = r.InitWrapData("研报点击记录失败") var userInfo user.User userInfo = r.Data["user"].(user.User) recordReq := new(RecordCountReq) r.GetPostParams(recordReq) record := convertToRecordCount(recordReq) record.UserId = userInfo.Id record.Mobile = userInfo.Mobile err = report.CountReport(record) if err != nil { err = exception.New(exception.ReportRecordClickCountFailed) return } r.SuccessResult("研报点击记录成功", nil, result) return }) } // GetReport 获取研报详情 // @Description 获取研报详情 // @Success 200 {object} // @router /report [get] func (r *ReportController) GetReport(reportId int) { controllers.Wrap(&r.BaseController, func() (result *controllers.WrapData, err error) { result = r.InitWrapData("获取研报详情失败") fmt.Println(reportId) reportDetail, err := report.GetReportById(reportId) if err != nil { err = exception.New(exception.GetReportFailed) return } r.SuccessResult("获取研报详情成功", reportDetail, result) return }) } func convertToRecordCount(req *RecordCountReq) report.RecordCount { additionStr, _ := json.Marshal(req.Additional) return report.RecordCount{ ReportId: req.ReportId, IpAddress: req.IpAddress, Location: req.Location, Referer: req.Referer, Additional: string(additionStr), } }