english_report.go 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package services
  2. import (
  3. "context"
  4. "fmt"
  5. "hongze/hongze_task/models"
  6. "hongze/hongze_task/services/alarm_msg"
  7. "hongze/hongze_task/utils"
  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.FormatDateTime)
  21. list, e := models.GetPrePublishedEnglishReports(now)
  22. if e != nil {
  23. return
  24. }
  25. listLen := len(list)
  26. if listLen == 0 {
  27. return
  28. }
  29. // 比对时间(分钟),时间相等则发布并推送
  30. for i := 0; i < listLen; i++ {
  31. item := list[i]
  32. publishTime := time.Now().Format(utils.FormatDateTime)
  33. if item.PublishTime != "" {
  34. // 发布时间固定为首次发布时间
  35. publishTime = item.PublishTime
  36. }
  37. if err = models.PublishEnglishReportById(item.Id, publishTime); err != nil {
  38. err = e
  39. return
  40. }
  41. go func() {
  42. _ = UpdateEnglishReportEs(item.Id, 2)
  43. }()
  44. }
  45. return
  46. }
  47. // UpdateEnglishReportEs 更新英文报告/章节Es
  48. func UpdateEnglishReportEs(reportId int, publishState int) (err error) {
  49. if reportId <= 0 {
  50. return
  51. }
  52. reportInfo, err := models.GetEnglishReportById(reportId)
  53. if err != nil {
  54. return
  55. }
  56. // 新增报告ES
  57. esReport := &models.ElasticEnglishReportDetail{
  58. Id: strconv.Itoa(reportInfo.Id),
  59. ReportId: reportInfo.Id,
  60. Title: reportInfo.Title,
  61. Abstract: reportInfo.Abstract,
  62. BodyContent: utils.TrimHtml(html.UnescapeString(reportInfo.Content)),
  63. PublishTime: reportInfo.PublishTime,
  64. CreateTime: reportInfo.CreateTime,
  65. ReportCode: reportInfo.ReportCode,
  66. PublishState: publishState,
  67. Author: reportInfo.Author,
  68. Frequency: reportInfo.Frequency,
  69. ClassifyIdFirst: reportInfo.ClassifyIdFirst,
  70. ClassifyNameFirst: reportInfo.ClassifyNameFirst,
  71. ClassifyIdSecond: reportInfo.ClassifyIdSecond,
  72. ClassifyNameSecond: reportInfo.ClassifyNameSecond,
  73. StageStr: strconv.Itoa(reportInfo.Stage),
  74. Overview: utils.TrimHtml(html.UnescapeString(reportInfo.Overview)),
  75. ContentSub: utils.TrimHtml(html.UnescapeString(reportInfo.ContentSub)),
  76. }
  77. docId := fmt.Sprintf("%d", reportInfo.Id)
  78. if err = EsAddOrEditEnglishReport(utils.EsEnglishReportIndexName, docId, esReport); err != nil {
  79. return
  80. }
  81. return
  82. }