smart_report.go 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. package models
  2. import (
  3. "eta/eta_report/utils"
  4. "fmt"
  5. "github.com/beego/beego/v2/client/orm"
  6. "html"
  7. "time"
  8. )
  9. // SmartReport 智能研报
  10. type SmartReport struct {
  11. SmartReportId int `orm:"column(smart_report_id);pk" description:"智能研报ID"`
  12. ReportCode string `description:"报告唯一编码"`
  13. ClassifyIdFirst int `description:"一级分类ID"`
  14. ClassifyNameFirst string `description:"一级分类名称"`
  15. ClassifyIdSecond int `description:"二级分类ID"`
  16. ClassifyNameSecond string `description:"二级分类名称"`
  17. AddType int `description:"新增方式:1-新增报告;2-继承报告"`
  18. Title string `description:"标题"`
  19. Abstract string `description:"摘要"`
  20. Author string `description:"作者"`
  21. Frequency string `description:"频度"`
  22. Stage int `description:"期数"`
  23. Content string `description:"内容"`
  24. ContentSub string `description:"内容前两个章节"`
  25. ContentStruct string `description:"内容组件"`
  26. VideoUrl string `description:"音频文件URL"`
  27. VideoName string `description:"音频文件名称"`
  28. VideoPlaySeconds float64 `description:"音频播放时长"`
  29. VideoSize string `description:"音频文件大小,单位M"`
  30. AdminId int `description:"创建者ID"`
  31. AdminRealName string `description:"创建者姓名"`
  32. State int `description:"发布状态:1-待发布;2-已发布"`
  33. Pv int `description:"pv"`
  34. Uv int `description:"uv"`
  35. PublishTime time.Time `description:"发布时间"`
  36. PrePublishTime time.Time `description:"预发布时间"`
  37. PreMsgSend int `description:"定时发布后是否推送模版消息:0-否;1-是"`
  38. MsgIsSend int `description:"消息是否已发送:0-否;1-是"`
  39. MsgSendTime time.Time `description:"模版消息发送时间"`
  40. DetailImgUrl string `description:"报告详情长图地址"`
  41. DetailPdfUrl string `description:"报告详情PDF地址"`
  42. CreateTime time.Time `description:"创建时间"`
  43. ModifyTime time.Time `description:"修改时间"`
  44. }
  45. func (m *SmartReport) TableName() string {
  46. return "smart_report"
  47. }
  48. func (m *SmartReport) PrimaryId() string {
  49. return "smart_report_id"
  50. }
  51. func (m *SmartReport) Create() (err error) {
  52. o := orm.NewOrm()
  53. id, err := o.Insert(m)
  54. if err != nil {
  55. return
  56. }
  57. m.SmartReportId = int(id)
  58. return
  59. }
  60. func (m *SmartReport) Update(cols []string) (err error) {
  61. o := orm.NewOrm()
  62. _, err = o.Update(m, cols...)
  63. return
  64. }
  65. func (m *SmartReport) GetItemById(id int) (item *SmartReport, err error) {
  66. o := orm.NewOrm()
  67. sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
  68. err = o.Raw(sql, id).QueryRow(&item)
  69. return
  70. }
  71. func (m *SmartReport) GetItemByCondition(condition string, pars []interface{}) (item *SmartReport, err error) {
  72. o := orm.NewOrm()
  73. sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s LIMIT 1`, m.TableName(), condition)
  74. err = o.Raw(sql, pars).QueryRow(&item)
  75. return
  76. }
  77. // SmartReportItem 智能研报信息
  78. type SmartReportItem struct {
  79. SmartReportId int `description:"智能研报ID"`
  80. ReportCode string `description:"报告唯一编码"`
  81. ClassifyIdFirst int `description:"一级分类ID"`
  82. ClassifyNameFirst string `description:"一级分类名称"`
  83. ClassifyIdSecond int `description:"二级分类ID"`
  84. ClassifyNameSecond string `description:"二级分类名称"`
  85. AddType int `description:"新增方式:1-新增报告;2-继承报告"`
  86. Title string `description:"标题"`
  87. Abstract string `description:"摘要"`
  88. Author string `description:"作者"`
  89. Frequency string `description:"频度"`
  90. Stage int `description:"期数"`
  91. Content string `description:"内容"`
  92. ContentSub string `description:"内容前两个章节"`
  93. ContentStruct string `description:"内容组件"`
  94. VideoUrl string `description:"音频文件URL"`
  95. VideoName string `description:"音频文件名称"`
  96. VideoPlaySeconds float64 `description:"音频播放时长"`
  97. VideoSize string `description:"音频文件大小,单位M"`
  98. AdminId int `description:"创建者姓名"`
  99. AdminRealName string `description:"创建者姓名"`
  100. Pv int `description:"pv"`
  101. Uv int `description:"uv"`
  102. State int `description:"发布状态:1-待发布;2-已发布"`
  103. PublishTime string `description:"发布时间"`
  104. PrePublishTime string `description:"预发布时间"`
  105. MsgIsSend int `description:"消息是否已发送:0-否;1-是"`
  106. DetailImgUrl string `description:"报告详情长图地址"`
  107. DetailPdfUrl string `description:"报告详情PDF地址"`
  108. CreateTime string `description:"创建时间"`
  109. ModifyTime string `description:"修改时间"`
  110. CanEdit bool `description:"是否可编辑"`
  111. Editor string `description:"当前编辑人"`
  112. }
  113. // FormatSmartReport2Item 格式化智能研报数据格式
  114. func FormatSmartReport2Item(origin *SmartReport) (item *SmartReportItem) {
  115. item = new(SmartReportItem)
  116. if origin == nil {
  117. return
  118. }
  119. item.SmartReportId = origin.SmartReportId
  120. item.ReportCode = origin.ReportCode
  121. item.ClassifyIdFirst = origin.ClassifyIdFirst
  122. item.ClassifyNameFirst = origin.ClassifyNameFirst
  123. item.ClassifyIdSecond = origin.ClassifyIdSecond
  124. item.ClassifyNameSecond = origin.ClassifyNameSecond
  125. item.AddType = origin.AddType
  126. item.Title = origin.Title
  127. item.Abstract = origin.Abstract
  128. item.Author = origin.Author
  129. item.Frequency = origin.Frequency
  130. item.Stage = origin.Stage
  131. item.Content = html.UnescapeString(origin.Content)
  132. item.ContentSub = html.UnescapeString(origin.ContentSub)
  133. item.ContentStruct = html.UnescapeString(origin.ContentStruct)
  134. item.VideoUrl = origin.VideoUrl
  135. item.VideoName = origin.VideoName
  136. item.VideoPlaySeconds = origin.VideoPlaySeconds
  137. item.VideoSize = origin.VideoSize
  138. item.AdminId = origin.AdminId
  139. item.AdminRealName = origin.AdminRealName
  140. item.Pv = origin.Pv
  141. item.Uv = origin.Uv
  142. item.State = origin.State
  143. item.PublishTime = utils.TimeTransferString(utils.FormatDateTime, origin.PublishTime)
  144. item.PrePublishTime = utils.TimeTransferString(utils.FormatDateTime, origin.PrePublishTime)
  145. item.MsgIsSend = origin.MsgIsSend
  146. item.DetailImgUrl = origin.DetailImgUrl
  147. item.DetailPdfUrl = origin.DetailPdfUrl
  148. item.CreateTime = utils.TimeTransferString(utils.FormatDateTime, origin.CreateTime)
  149. item.ModifyTime = utils.TimeTransferString(utils.FormatDateTime, origin.ModifyTime)
  150. return
  151. }
  152. // SmartReportShareDetailResp 智能研报分享详情响应体
  153. type SmartReportShareDetailResp struct {
  154. Report *SmartReportItem `description:"智能研报"`
  155. Disclaimer string `description:"免责声明"`
  156. H5ShareName string `description:"研报分享抬头"`
  157. H5ReportShareImg string `description:"研报分享图片"`
  158. Hz int
  159. }
  160. // UpdateSmartReportPv 研报pv自增
  161. func UpdateSmartReportPv(reportId int) (err error) {
  162. o := orm.NewOrm()
  163. sql := `UPDATE smart_report SET pv = pv + 1 WHERE smart_report_id = ?`
  164. _, err = o.Raw(sql, reportId).Exec()
  165. return
  166. }