report_share.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. package controllers
  2. import (
  3. "eta/eta_report/models"
  4. "eta/eta_report/utils"
  5. "html"
  6. "time"
  7. )
  8. // ReportShareController 报告分享
  9. type ReportShareController struct {
  10. BaseCommonController
  11. }
  12. // Detail
  13. // @Title 日评详情
  14. // @Description 日评详情接口
  15. // @Param ReportCode query string true "报告唯一编码"
  16. // @Success 200 {object} models.ReportShareDetailResp
  17. // @router /share/detail [get]
  18. func (this *ReportShareController) Detail() {
  19. br := new(models.BaseResponse).Init()
  20. defer func() {
  21. this.Data["json"] = br
  22. this.ServeJSON()
  23. }()
  24. reportCode := this.GetString("ReportCode")
  25. if reportCode == "" {
  26. br.Msg = "参数错误"
  27. br.ErrMsg = "参数错误,reportCode 为空"
  28. return
  29. }
  30. report, err := models.GetReportByCode(reportCode)
  31. if err != nil {
  32. br.Msg = "该报告已删除"
  33. br.ErrMsg = "获取报告详情失败,Err:" + err.Error()
  34. return
  35. }
  36. report.ContentSub = html.UnescapeString(report.ContentSub)
  37. report.Content = html.UnescapeString(report.Content)
  38. resp := new(models.ReportShareDetailResp)
  39. // 免责声明
  40. conf, e := models.GetBusinessConf()
  41. if e != nil {
  42. br.Msg = "获取失败"
  43. br.ErrMsg = "获取免责声明失败, Err: " + e.Error()
  44. return
  45. }
  46. if conf[models.BusinessConfDisclaimer] != "" {
  47. resp.Disclaimer = conf[models.BusinessConfDisclaimer]
  48. }
  49. // 研报分享抬头
  50. if v, ok := conf[models.BusinessConfH5ShareName]; ok {
  51. resp.H5ShareName = v
  52. }
  53. if v, ok := conf[models.BusinessConfH5ReportShareImg]; ok {
  54. resp.H5ReportShareImg = v
  55. }
  56. if v, ok := conf[models.BusinessConfWatermarkChart]; ok {
  57. resp.WatermarkChart = v
  58. }
  59. if v, ok := conf[models.BusinessConfWatermarkReport]; ok {
  60. resp.WatermarkReport = v
  61. }
  62. // 晨周报
  63. resp.Report = new(models.ReportItem)
  64. reportChapters := make([]*models.ReportChapter, 0)
  65. if utils.BusinessCode == utils.BusinessCodeRelease && report.HasChapter == 1 {
  66. // 获取章节内容
  67. chapters, e := models.GetPublishedChapterListByReportId(report.Id)
  68. if e != nil {
  69. br.Msg = "获取失败"
  70. br.ErrMsg = "获取章节列表失败, Err: " + e.Error()
  71. return
  72. }
  73. if len(chapters) > 0 {
  74. // 获取更新规则
  75. researchType := chapters[0].ReportType
  76. types, e := models.GetAllReportChapterTypeListByResearchType(researchType)
  77. if e != nil {
  78. br.Msg = "获取更新规则失败"
  79. br.ErrMsg = "获取更新规则失败, Err: " + e.Error()
  80. return
  81. }
  82. // 调整章节更新
  83. nowTime := time.Now().Local()
  84. for _, chapter := range chapters {
  85. stop := false
  86. for _, rule := range types {
  87. if rule.ReportChapterTypeId != chapter.TypeId {
  88. continue
  89. }
  90. // 如果被永久暂停更新了
  91. if rule.Enabled == 0 && chapter.IsEdit == 0 { //该章节已被永久禁用,同时未被操作过
  92. stop = true
  93. } else if rule.PauseStartTime != "" && rule.PauseEndTime != "" && rule.PauseStartTime != utils.EmptyDateStr && rule.PauseEndTime != utils.EmptyDateStr {
  94. startTime, e := time.ParseInLocation(utils.FormatDate, rule.PauseStartTime, time.Local)
  95. if e != nil {
  96. br.Msg = "获取更新规则失败"
  97. br.ErrMsg = "更新规则开始时间转换失败, Err: " + e.Error()
  98. return
  99. }
  100. endTime, e := time.ParseInLocation(utils.FormatDate, rule.PauseEndTime, time.Local)
  101. if e != nil {
  102. br.Msg = "获取更新规则失败"
  103. br.ErrMsg = "更新规则结束时间转换失败, Err: " + e.Error()
  104. return
  105. }
  106. // 暂停更新
  107. if nowTime.After(startTime) && nowTime.Before(endTime.AddDate(0, 0, 1)) {
  108. stop = true
  109. }
  110. break
  111. }
  112. }
  113. if !stop {
  114. chapter.Content = html.UnescapeString(chapter.Content)
  115. chapter.ContentSub = html.UnescapeString(chapter.ContentSub)
  116. reportChapters = append(reportChapters, chapter)
  117. }
  118. }
  119. }
  120. report.Abstract = report.Title
  121. }
  122. resp.Report.Report = report
  123. resp.Report.ChapterList = reportChapters
  124. br.Ret = 200
  125. br.Success = true
  126. br.Msg = "获取成功"
  127. br.Data = resp
  128. }