smart_report.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package models
  2. import (
  3. "eta/eta_task/global"
  4. "eta/eta_task/utils"
  5. "fmt"
  6. "time"
  7. )
  8. // SmartReport 智能研报
  9. type SmartReport struct {
  10. SmartReportId int `gorm:"column:smart_report_id;primaryKey;autoIncrement" description:"智能研报ID"`
  11. ReportCode string `description:"报告唯一编码"`
  12. ClassifyIdFirst int `description:"一级分类ID"`
  13. ClassifyNameFirst string `description:"一级分类名称"`
  14. ClassifyIdSecond int `description:"二级分类ID"`
  15. ClassifyNameSecond string `description:"二级分类名称"`
  16. AddType int `description:"新增方式:1-新增报告;2-继承报告"`
  17. Title string `description:"标题"`
  18. Abstract string `description:"摘要"`
  19. Author string `description:"作者"`
  20. Frequency string `description:"频度"`
  21. Stage int `description:"期数"`
  22. Content string `description:"内容"`
  23. ContentSub string `description:"内容前两个章节"`
  24. ContentStruct string `description:"内容组件"`
  25. VideoUrl string `description:"音频文件URL"`
  26. VideoName string `description:"音频文件名称"`
  27. VideoPlaySeconds string `description:"音频播放时长"`
  28. VideoSize string `description:"音频文件大小,单位M"`
  29. AdminId int `description:"创建者ID"`
  30. AdminRealName string `description:"创建者姓名"`
  31. State int `description:"发布状态:1-待发布;2-已发布"`
  32. PublishTime time.Time `description:"发布时间"`
  33. PrePublishTime time.Time `description:"预发布时间"`
  34. PreMsgSend int `description:"定时发布后是否推送模版消息:0-否;1-是"`
  35. MsgIsSend int `description:"消息是否已发送:0-否;1-是"`
  36. MsgSendTime time.Time `description:"模版消息发送时间"`
  37. CreateTime time.Time `description:"创建时间"`
  38. ModifyTime time.Time `description:"修改时间"`
  39. }
  40. func (m *SmartReport) TableName() string {
  41. return "smart_report"
  42. }
  43. func (m *SmartReport) PrimaryId() string {
  44. return "smart_report_id"
  45. }
  46. func (m *SmartReport) Update(cols []string) (err error) {
  47. err = global.DbMap[utils.DbNameReport].Select(cols).Updates(m).Error
  48. return
  49. }
  50. func (m *SmartReport) GetItemById(id int) (item *SmartReport, err error) {
  51. o := global.DbMap[utils.DbNameReport]
  52. sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
  53. err = o.Raw(sql, id).First(&item).Error
  54. return
  55. }
  56. // GetPrePublishSmartReports 获取定时发布时间为当前时间的未发布的报告列表
  57. func GetPrePublishSmartReports(startTime, endTime string) (list []*SmartReport, err error) {
  58. o := global.DbMap[utils.DbNameReport]
  59. sql := `SELECT * FROM smart_report WHERE state = 1 AND pre_publish_time >= ? AND pre_publish_time <= ?`
  60. err = o.Raw(sql, startTime, endTime).Find(&list).Error
  61. return
  62. }
  63. // PublishSmartReportById 发布智能报告
  64. func PublishSmartReportById(reportId int, publishTime time.Time) (err error) {
  65. o := global.DbMap[utils.DbNameReport]
  66. sql := `UPDATE smart_report SET state = 2, publish_time = ?, msg_is_send = 1, msg_send_time = NOW(), modify_time = NOW() WHERE smart_report_id = ?`
  67. err = o.Exec(sql, publishTime, reportId).Error
  68. return
  69. }
  70. // ElasticSmartReport 智能研报es
  71. type ElasticSmartReport struct {
  72. SmartReportId int `description:"智能研报ID"`
  73. Title string `description:"标题"`
  74. Abstract string `description:"摘要"`
  75. BodyContent string `description:"内容"`
  76. PublishTime string `description:"发布时间"`
  77. PublishState int `description:"发布状态 1-未发布 2-已发布"`
  78. Author string `description:"作者"`
  79. ClassifyIdFirst int `description:"一级分类ID"`
  80. ClassifyNameFirst string `description:"一级分类名称"`
  81. ClassifyIdSecond int `description:"二级分类ID"`
  82. ClassifyNameSecond string `description:"二级分类名称"`
  83. StageStr string `description:"报告期数"`
  84. Frequency string `description:"频度"`
  85. }
  86. // Report2ImgQueueReq 报告详情生成长图队列请求体
  87. type Report2ImgQueueReq struct {
  88. ReportType int `description:"报告类型: 1-研报; 2-智能研报"`
  89. ReportCode string `description:"报告唯一编码"`
  90. }