english_report.go 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package services
  2. import (
  3. "context"
  4. "eta/eta_task/models"
  5. "eta/eta_task/services/alarm_msg"
  6. "eta/eta_task/utils"
  7. "fmt"
  8. "html"
  9. "strconv"
  10. "time"
  11. )
  12. // PublishEnglishReport 定时发布英文研报-每分钟
  13. func PublishEnglishReport(cont context.Context) (err error) {
  14. defer func() {
  15. if err != nil {
  16. go alarm_msg.SendAlarmMsg("PublishEnglishReport-定时发布英文研报失败, ErrMsg:\n"+err.Error(), 3)
  17. }
  18. }()
  19. // 获取所有未发布的语音播报
  20. now := time.Now().Format(utils.FormatDateTimeMinute)
  21. startTime := now + ":00"
  22. endTime := now + ":59"
  23. afterDate := time.Now().AddDate(0, -1, 0).Format(utils.FormatDate) //限制一下,只查询最近一个月的
  24. list, err := models.GetPrePublishedEnglishReports(startTime, endTime, afterDate)
  25. if err != nil {
  26. return
  27. }
  28. listLen := len(list)
  29. if listLen == 0 {
  30. return
  31. }
  32. // 比对时间(分钟),时间相等则发布并推送
  33. for i := 0; i < listLen; i++ {
  34. item := list[i]
  35. publishTime := time.Now().Format(utils.FormatDateTime)
  36. if item.PublishTime != "" {
  37. // 发布时间固定为首次发布时间
  38. publishTime = item.PublishTime
  39. }
  40. if err = models.PublishEnglishReportById(item.Id, publishTime); err != nil {
  41. return
  42. }
  43. go func() {
  44. _ = UpdateEnglishReportEs(item.Id, 2)
  45. }()
  46. }
  47. return
  48. }
  49. // UpdateEnglishReportEs 更新英文报告/章节Es
  50. func UpdateEnglishReportEs(reportId int, publishState int) (err error) {
  51. if reportId <= 0 {
  52. return
  53. }
  54. reportInfo, err := models.GetEnglishReportById(reportId)
  55. if err != nil {
  56. return
  57. }
  58. if reportInfo != nil && reportInfo.Id <= 0 {
  59. return
  60. }
  61. // 新增报告ES
  62. esReport := &models.ElasticEnglishReportDetail{
  63. Id: strconv.Itoa(reportInfo.Id),
  64. ReportId: reportInfo.Id,
  65. Title: reportInfo.Title,
  66. Abstract: reportInfo.Abstract,
  67. BodyContent: utils.TrimHtml(html.UnescapeString(reportInfo.Content)),
  68. PublishTime: reportInfo.PublishTime,
  69. CreateTime: reportInfo.CreateTime,
  70. ReportCode: reportInfo.ReportCode,
  71. PublishState: publishState,
  72. Author: reportInfo.Author,
  73. Frequency: reportInfo.Frequency,
  74. ClassifyIdFirst: reportInfo.ClassifyIdFirst,
  75. ClassifyNameFirst: reportInfo.ClassifyNameFirst,
  76. ClassifyIdSecond: reportInfo.ClassifyIdSecond,
  77. ClassifyNameSecond: reportInfo.ClassifyNameSecond,
  78. StageStr: strconv.Itoa(reportInfo.Stage),
  79. Overview: utils.TrimHtml(html.UnescapeString(reportInfo.Overview)),
  80. ContentSub: utils.TrimHtml(html.UnescapeString(reportInfo.ContentSub)),
  81. }
  82. docId := fmt.Sprintf("%d", reportInfo.Id)
  83. if err = EsAddOrEditEnglishReport(utils.EsEnglishReportIndexName, docId, esReport); err != nil {
  84. return
  85. }
  86. return
  87. }