report.go 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. package english_report
  2. import (
  3. "hongze/hongze_yb_en_api/global"
  4. "hongze/hongze_yb_en_api/models/base"
  5. "time"
  6. )
  7. type Report struct {
  8. Id uint `gorm:"primaryKey;column:id" json:"id"`
  9. AddType int8 `gorm:"column:add_type" json:"add_type"` //新增方式:1:新增报告,2:继承报告
  10. ClassifyIdFirst int `gorm:"column:classify_id_first" json:"classify_id_first"` //一级分类id
  11. ClassifyNameFirst string `gorm:"column:classify_name_first" json:"classify_name_first"` //一级分类名称
  12. ClassifyIdSecond int `gorm:"column:classify_id_second" json:"classify_id_second"` //二级分类id
  13. ClassifyNameSecond string `gorm:"column:classify_name_second" json:"classify_name_second"` //二级分类名称
  14. Title string `gorm:"column:title" json:"title"` //标题
  15. Abstract string `gorm:"column:abstract" json:"abstract"` //摘要
  16. Author string `gorm:"column:author" json:"author"` //作者
  17. Frequency string `gorm:"column:frequency" json:"frequency"` //频度
  18. State int8 `gorm:"column:state" json:"state"` //1:未发布,2:已发布
  19. PublishTime time.Time `gorm:"column:publish_time" json:"publish_time"` //发布时间
  20. Stage int `gorm:"column:stage" json:"stage"` //期数
  21. MsgIsSend int8 `gorm:"column:msg_is_send" json:"msg_is_send"` //消息是否已发送,0:否,1:是
  22. Content string `gorm:"column:content" json:"content"` //内容
  23. Overview string `gorm:"column:overview" json:"overview"` //概述
  24. VideoUrl string `gorm:"column:video_url" json:"video_url"` //音频文件URL
  25. VideoName string `gorm:"column:video_name" json:"video_name"` //音频文件名称
  26. VideoPlaySeconds string `gorm:"column:video_play_seconds" json:"video_play_seconds"` //音频播放时长
  27. ContentSub string `gorm:"column:content_sub" json:"content_sub"` //内容前两个章节
  28. ReportCode string `gorm:"column:report_code" json:"report_code"` //报告唯一编码
  29. VideoSize string `gorm:"column:video_size" json:"video_size"` //音频文件大小,单位M
  30. Pv int `gorm:"column:pv" json:"pv"`
  31. ShareUrl string `gorm:"column:share_url" json:"share_url"` //分享url
  32. PvEmail uint `gorm:"column:pv_email" json:"pv_email"` //分享邮箱的PV
  33. EmailState uint8 `gorm:"column:email_state" json:"email_state"` //是否已群发邮件:0-否; 1-是
  34. KeyTakeaways string `gorm:"column:key_takeaways" json:"key_takeaways"` //关键点
  35. base.TimeBase
  36. }
  37. // TableName get sql table name.获取数据库表名
  38. func (r *Report) TableName() string {
  39. return "english_report"
  40. }
  41. type ReportListReq struct {
  42. ClassifyIdFirst int `json:"classify_id_first" form:"classify_id_first"`
  43. ClassifyIdSecond int `json:"classify_id_second" form:"classify_id_second"`
  44. base.PageReq
  45. }
  46. type ReportListItem struct {
  47. Id uint `json:"id"`
  48. AddType int8 `json:"add_type"` //新增方式:1:新增报告,2:继承报告
  49. ClassifyIdFirst int `json:"classify_id_first"` //一级分类id
  50. ClassifyNameFirst string `json:"classify_name_first"` //一级分类名称
  51. ClassifyIdSecond int `json:"classify_id_second"` //二级分类id
  52. ClassifyNameSecond string `json:"classify_name_second"` //二级分类名称
  53. Title string `json:"title"` //标题
  54. Abstract string `json:"abstract"` //摘要
  55. Author string `json:"author"` //作者
  56. Frequency string `json:"frequency"` //频度
  57. PublishTime string `json:"publish_time"` //发布时间
  58. Stage int `json:"stage"` //期数
  59. VideoUrl string `json:"video_url"` //音频文件URL
  60. VideoName string `json:"video_name"` //音频文件名称
  61. VideoPlaySeconds string `json:"video_play_seconds"` //音频播放时长
  62. ReportCode string `json:"report_code"` //报告唯一编码
  63. ShareUrl string `json:"share_url"` //分享url
  64. CreateTime string `json:"create_time"` //创建时间
  65. ModifyTime string `json:"modify_time"` //最后更新时间
  66. }
  67. type ReportSearchReq struct {
  68. KeyWord string `json:"key_word" form:"key_word"`
  69. base.PageReq
  70. }
  71. type ReportDetailReq struct {
  72. ReportCode string `json:"report_code" form:"report_code" binding:"required"` //报告唯一编码
  73. ShareEmail int `json:"share_email" form:"share_email"` //推送的邮箱ID
  74. }
  75. type ReportDetail struct {
  76. Id uint `json:"id"`
  77. AddType int8 `json:"add_type"` //新增方式:1:新增报告,2:继承报告
  78. ClassifyIdFirst int `json:"classify_id_first"` //一级分类id
  79. ClassifyNameFirst string `json:"classify_name_first"` //一级分类名称
  80. ClassifyIdSecond int `json:"classify_id_second"` //二级分类id
  81. ClassifyNameSecond string `json:"classify_name_second"` //二级分类名称
  82. Title string `json:"title"` //标题
  83. Abstract string `json:"abstract"` //摘要
  84. Author string `json:"author"` //作者
  85. Content string `json:"content"` //内容
  86. ContentSub string `json:"content_sub"` //内容
  87. Frequency string `json:"frequency"` //频度
  88. PublishTime string `json:"publish_time"` //发布时间
  89. Stage int `json:"stage"` //期数
  90. VideoUrl string `json:"video_url"` //音频文件URL
  91. VideoName string `json:"video_name"` //音频文件名称
  92. VideoPlaySeconds string `json:"video_play_seconds"` //音频播放时长
  93. ReportCode string `json:"report_code"` //报告唯一编码
  94. CreateTime string `json:"create_time"` //创建时间
  95. ModifyTime string `json:"modify_time"` //最后更新时间
  96. Overview string `json:"overview"` //概述
  97. VideoSize string `json:"video_size"` //音频文件大小,单位M
  98. KeyTakeaways string `json:"key_takeaways"` //关键点
  99. }
  100. type ReportDetailResp struct {
  101. Report *ReportDetail `json:"report"`
  102. }
  103. type SearchEnglishReportItem struct {
  104. Id uint `json:"id"`
  105. ClassifyIdFirst int `json:"classify_id_first"` //一级分类id
  106. ClassifyNameFirst string `json:"classify_name_first"` //一级分类名称
  107. ClassifyIdSecond int `json:"classify_id_second"` //二级分类id
  108. ClassifyNameSecond string `json:"classify_name_second"` //二级分类名称
  109. Title string `json:"title"` //标题
  110. Author string `json:"author"` //作者
  111. PublishTime string `json:"publish_time"` //发布时间
  112. ReportCode string `json:"report_code"` //报告唯一编码
  113. CreateTime string `json:"create_time"` //创建时间
  114. ContentSub string `json:"content_sub"` //内容前两个章节"`
  115. VideoUrl string `json:"video_url"` //视频文件URL
  116. VideoCoverUrl string `json:"video_cover_url"` //视频文件封面地址
  117. VideoSeconds string `json:"video_seconds"` //视频时长
  118. ReportType int `json:"report_type"` //类型:0英文研报,1英文线上路演
  119. Stage int `json:"stage"` //期数
  120. }
  121. type ElasticEnglishReportDetail struct {
  122. Id string
  123. ReportId uint
  124. VideoId uint
  125. ClassifyIdFirst int
  126. ClassifyNameFirst string
  127. ClassifyIdSecond int
  128. ClassifyNameSecond string
  129. StageStr string
  130. Title string
  131. Abstract string
  132. Author string
  133. Frequency string
  134. PublishState int
  135. BodyContent string
  136. ContentSub string
  137. CreateTime string
  138. PublishTime string
  139. ReportCode string
  140. Overview string
  141. }
  142. func (r *Report) SelectPage(page base.IPage, condition string, pars []interface{}) (count int64, results []*Report, err error) {
  143. results = make([]*Report, 0)
  144. query := global.DEFAULT_MYSQL.Model(r).
  145. Select("*").
  146. Where(condition, pars...)
  147. query.Count(&count)
  148. if len(page.GetOrderItemsString()) > 0 {
  149. query = query.Order(page.GetOrderItemsString())
  150. }
  151. err = query.Limit(int(page.GetPageSize())).Offset(int(page.Offset())).Find(&results).Error
  152. return
  153. }
  154. func (r *Report) GetEnglishReportByCode(reportCode string) (item *Report, err error) {
  155. err = global.MYSQL["rddp"].Model(r).Where("report_code= ?", reportCode).First(&item).Error
  156. return
  157. }
  158. // 修改
  159. func (r *Report) Update(updateCols []string) (err error) {
  160. err = global.DEFAULT_MYSQL.Model(r).Select(updateCols).Updates(r).Error
  161. return
  162. }
  163. func (r *Report) UpdatePvEmailByReportCode(reportCode string) (err error) {
  164. sql := `UPDATE english_report SET pv_email = pv_email+1 WHERE report_code = ? `
  165. err = global.DEFAULT_MYSQL.Exec(sql, reportCode).Error
  166. return
  167. }
  168. func (r *Report) UpdatePvByReportCode(reportCode string) (err error) {
  169. sql := `UPDATE english_report SET pv = pv+1 WHERE report_code = ? `
  170. err = global.DEFAULT_MYSQL.Exec(sql, reportCode).Error
  171. return
  172. }