report.go 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. package models
  2. import (
  3. "fmt"
  4. "strings"
  5. "time"
  6. "github.com/beego/beego/v2/client/orm"
  7. )
  8. type ReportList struct {
  9. Id int `description:"报告Id"`
  10. AddType int `description:"新增方式:1:新增报告,2:继承报告"`
  11. ClassifyIdFirst int `description:"一级分类id"`
  12. ClassifyNameFirst string `description:"一级分类名称"`
  13. ClassifyIdSecond int `description:"二级分类id"`
  14. ClassifyNameSecond string `description:"二级分类名称"`
  15. PermissionNames []string `description:"二级分类名称"`
  16. Title string `description:"标题"`
  17. Abstract string `description:"摘要"`
  18. Author string `description:"作者"`
  19. Frequency string `description:"频度"`
  20. CreateTime string `description:"创建时间"`
  21. ModifyTime time.Time `description:"修改时间"`
  22. State int `description:"1:未发布,2:已发布"`
  23. PublishTime string `description:"发布时间"`
  24. Stage int `description:"期数"`
  25. MsgIsSend int `description:"消息是否已发送,0:否,1:是"`
  26. Content string `description:"内容"`
  27. VideoUrl string `description:"音频文件URL"`
  28. VideoName string `description:"音频文件名称"`
  29. VideoPlaySeconds string `description:"音频播放时长"`
  30. VideoSize string `description:"音频文件大小,单位M"`
  31. HasPermission int `description:"是否拥有报告权限,1:拥有,0:没有"`
  32. TitleType string `description:"标题类型,FICC或者权益"`
  33. IsCurrentDate int `description:"是否当前日期:1是,0不是"`
  34. ClassifyDetail
  35. }
  36. // GetReportDailyListCount 获得今日报告数量
  37. func GetReportDailyListCount() (count int, err error) {
  38. o := orm.NewOrmUsingDB("rddp")
  39. sql := ` SELECT COUNT(*) AS count FROM report WHERE 1=1 AND (state=2 OR state=6) AND DATE(modify_time)=DATE(NOW()) `
  40. err = o.Raw(sql).QueryRow(&count)
  41. return
  42. }
  43. func GetReportDailyList(startSize, pageSize int) (items []*ReportList, err error) {
  44. o := orm.NewOrmUsingDB("rddp")
  45. sql := ` SELECT a.id,a.add_type,a.classify_id_first,a.classify_name_first,a.classify_id_second,a.classify_name_second,a.title,a.abstract,a.author,a.frequency,
  46. a.create_time,a.modify_time,a.state,a.publish_time,a.stage,a.msg_is_send,b.id AS classify_id,b.classify_name,b.descript,b.report_author,b.author_descript,
  47. b.report_img_url,b.head_img_url,b.avatar_img_url,b.column_img_url,a.video_url,a.video_name,a.video_play_seconds,a.video_size,
  48. CASE WHEN DATE(a.modify_time)=DATE(NOW()) THEN 1 ELSE 0 END AS is_current_date
  49. FROM report AS a
  50. INNER JOIN classify AS b ON a.classify_id_second=b.id
  51. WHERE (a.state=2 OR a.state=6) AND DATE(a.modify_time)=DATE(NOW()) AND a.classify_id_second IN (
  52. SELECT DISTINCT classify_id
  53. FROM chart_permission_search_key_word_mapping
  54. )
  55. ORDER BY a.publish_time DESC LIMIT ?,? `
  56. _, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
  57. return
  58. }
  59. func GetReportCountByClassifyIds(classifyIds []string, condition string) (count int, err error) {
  60. o := orm.NewOrmUsingDB("rddp")
  61. sql := `SELECT COUNT(*) AS count FROM report AS a
  62. WHERE (a.state=2 OR a.state=6) AND a.classify_id_second IN (%s) `
  63. var reportIdsStr string
  64. if len(classifyIds) > 0 {
  65. reportIdsStr = strings.Join(classifyIds, ",")
  66. sql = fmt.Sprintf(sql, reportIdsStr)
  67. }
  68. if condition != "" {
  69. sql += condition
  70. }
  71. err = o.Raw(sql).QueryRow(&count)
  72. return
  73. }
  74. func GetReportListByClassifyIds(classifyIds []string, condition string, startSize, pageSize int) (items []*ReportList, err error) {
  75. o := orm.NewOrmUsingDB("rddp")
  76. sql := `SELECT a.id,a.add_type,a.classify_id_first,a.classify_name_first,a.classify_id_second,a.classify_name_second,a.title,a.abstract,a.author,a.frequency,
  77. a.create_time,a.modify_time,a.state,a.publish_time,a.stage,a.msg_is_send,b.id AS classify_id,b.classify_name,b.descript,b.report_author,b.author_descript,
  78. b.report_img_url,b.head_img_url,b.avatar_img_url,b.column_img_url,a.video_url,a.video_name,a.video_play_seconds,a.video_size,
  79. CASE WHEN DATE(a.modify_time)=DATE(NOW()) THEN 1 ELSE 0 END AS is_current_date
  80. FROM report AS a
  81. INNER JOIN classify AS b ON a.classify_id_second=b.id
  82. WHERE (a.state=2 OR a.state=6) AND a.classify_id_second IN (%s) `
  83. var reportIdsStr string
  84. if len(classifyIds) > 0 {
  85. reportIdsStr = strings.Join(classifyIds, ",")
  86. sql = fmt.Sprintf(sql, reportIdsStr)
  87. }
  88. if condition != "" {
  89. sql += condition
  90. }
  91. sql += ` ORDER BY a.publish_time DESC LIMIT ?,? `
  92. _, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
  93. return
  94. }
  95. type ReportDetail struct {
  96. Id int `description:"报告Id"`
  97. AddType int `description:"新增方式:1:新增报告,2:继承报告"`
  98. ClassifyIdFirst int `description:"一级分类id"`
  99. ClassifyNameFirst string `description:"一级分类名称"`
  100. ClassifyIdSecond int `description:"二级分类id"`
  101. ClassifyNameSecond string `description:"二级分类名称"`
  102. Title string `description:"标题"`
  103. Abstract string `description:"摘要"`
  104. Author string `description:"作者"`
  105. Frequency string `description:"频度"`
  106. CreateTime string `description:"创建时间"`
  107. ModifyTime string `description:"修改时间"`
  108. State int `description:"1:未发布,2:已发布"`
  109. PublishTime string `description:"发布时间"`
  110. Stage int `description:"期数"`
  111. MsgIsSend int `description:"消息是否已发送,0:否,1:是"`
  112. Content string `description:"内容"`
  113. VideoUrl string `description:"音频文件URL"`
  114. VideoName string `description:"音频文件名称"`
  115. VideoPlaySeconds string `description:"音频播放时长"`
  116. VideoSize string `description:"音频文件大小,单位M"`
  117. ContentSub string `description:"内容前两个章节"`
  118. IsShowNewLabel int `description:"是否显示新标签"`
  119. IsCurrentDate int `description:"是否当前日期"`
  120. ClassifyName string `description:"分类名称"`
  121. TitleType string `description:"标题类型,FICC或者权益"`
  122. IsPublic bool `description:"是否是公共报告 "`
  123. }
  124. func GetReportById(reportId int) (item *ReportDetail, err error) {
  125. o := orm.NewOrmUsingDB("rddp")
  126. sql := `SELECT * FROM report WHERE id=?`
  127. err = o.Raw(sql, reportId).QueryRow(&item)
  128. return
  129. }
  130. type ReportCollectListItem struct {
  131. ReportId int `description:"报告Id"`
  132. ReportChapterId int `description:"报告章节Id"`
  133. ClassifyIdFirst int `description:"一级分类id"`
  134. ClassifyNameFirst string `description:"一级分类名称" `
  135. ClassifyIdSecond int `description:"二级分类id"`
  136. ClassifyNameSecond string `description:"二级分类名称"`
  137. ReportChapterTypeId int `description:"报告章节类型id"`
  138. PublishTime time.Time `description:"发布时间"`
  139. Title string `description:"标题"`
  140. ContentSub string `description:"内容前两个章节"`
  141. Abstract string `description:"摘要"`
  142. Stage string `description:"期数"`
  143. Author string `description:"作者"`
  144. }