package controllers import ( "eta/eta_report/models" "eta/eta_report/utils" "html" "time" ) // ReportShareController 报告分享 type ReportShareController struct { BaseCommonController } // Detail // @Title 日评详情 // @Description 日评详情接口 // @Param ReportCode query string true "报告唯一编码" // @Success 200 {object} models.ReportShareDetailResp // @router /share/detail [get] func (this *ReportShareController) Detail() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() reportCode := this.GetString("ReportCode") if reportCode == "" { br.Msg = "参数错误" br.ErrMsg = "参数错误,reportCode 为空" return } report, err := models.GetReportByCode(reportCode) if err != nil { br.Msg = "该报告已删除" br.ErrMsg = "获取报告详情失败,Err:" + err.Error() return } report.ContentSub = html.UnescapeString(report.ContentSub) report.Content = html.UnescapeString(report.Content) resp := new(models.ReportShareDetailResp) // 免责声明 conf, e := models.GetBusinessConf() if e != nil { br.Msg = "获取失败" br.ErrMsg = "获取免责声明失败, Err: " + e.Error() return } if conf[models.BusinessConfDisclaimer] != "" { resp.Disclaimer = conf[models.BusinessConfDisclaimer] } // 研报分享抬头 if v, ok := conf[models.BusinessConfH5ShareName]; ok { resp.H5ShareName = v } if v, ok := conf[models.BusinessConfH5ReportShareImg]; ok { resp.H5ReportShareImg = v } if v, ok := conf[models.BusinessConfWatermarkChart]; ok { resp.WatermarkChart = v } if v, ok := conf[models.BusinessConfWatermarkReport]; ok { resp.WatermarkReport = v } // 晨周报 resp.Report = new(models.ReportItem) reportChapters := make([]*models.ReportChapter, 0) if utils.BusinessCode == utils.BusinessCodeRelease && report.HasChapter == 1 { // 获取章节内容 chapters, e := models.GetPublishedChapterListByReportId(report.Id) if e != nil { br.Msg = "获取失败" br.ErrMsg = "获取章节列表失败, Err: " + e.Error() return } if len(chapters) > 0 { // 获取更新规则 researchType := chapters[0].ReportType types, e := models.GetAllReportChapterTypeListByResearchType(researchType) if e != nil { br.Msg = "获取更新规则失败" br.ErrMsg = "获取更新规则失败, Err: " + e.Error() return } // 调整章节更新 nowTime := time.Now().Local() for _, chapter := range chapters { stop := false for _, rule := range types { if rule.ReportChapterTypeId != chapter.TypeId { continue } // 如果被永久暂停更新了 if rule.Enabled == 0 && chapter.IsEdit == 0 { //该章节已被永久禁用,同时未被操作过 stop = true } else if rule.PauseStartTime != "" && rule.PauseEndTime != "" && rule.PauseStartTime != utils.EmptyDateStr && rule.PauseEndTime != utils.EmptyDateStr { startTime, e := time.ParseInLocation(utils.FormatDate, rule.PauseStartTime, time.Local) if e != nil { br.Msg = "获取更新规则失败" br.ErrMsg = "更新规则开始时间转换失败, Err: " + e.Error() return } endTime, e := time.ParseInLocation(utils.FormatDate, rule.PauseEndTime, time.Local) if e != nil { br.Msg = "获取更新规则失败" br.ErrMsg = "更新规则结束时间转换失败, Err: " + e.Error() return } // 暂停更新 if nowTime.After(startTime) && nowTime.Before(endTime.AddDate(0, 0, 1)) { stop = true } break } } if !stop { chapter.Content = html.UnescapeString(chapter.Content) chapter.ContentSub = html.UnescapeString(chapter.ContentSub) reportChapters = append(reportChapters, chapter) } } } report.Abstract = report.Title } resp.Report.Report = report resp.Report.ChapterList = reportChapters br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp }