smart_report.go 8.1 KB

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