report.go 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  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. Title string `description:"标题"`
  16. Abstract string `description:"摘要"`
  17. Author string `description:"作者"`
  18. Frequency string `description:"频度"`
  19. CreateTime string `description:"创建时间"`
  20. ModifyTime time.Time `description:"修改时间"`
  21. State int `description:"1:未发布,2:已发布"`
  22. PublishTime string `description:"发布时间"`
  23. Stage int `description:"期数"`
  24. MsgIsSend int `description:"消息是否已发送,0:否,1:是"`
  25. Content string `description:"内容"`
  26. VideoUrl string `description:"音频文件URL"`
  27. VideoName string `description:"音频文件名称"`
  28. VideoPlaySeconds string `description:"音频播放时长"`
  29. VideoSize string `description:"音频文件大小,单位M"`
  30. HasPermission int `description:"是否拥有报告权限,1:拥有,0:没有"`
  31. TitleType string `description:"标题类型,FICC或者权益"`
  32. IsCurrentDate int `description:"是否当前日期:1是,0不是"`
  33. ClassifyDetail
  34. }
  35. func GetReportListCount(condition string, pars []interface{}) (count int, err error) {
  36. o := orm.NewOrmUsingDB("rddp")
  37. sql := ` SELECT COUNT(*) AS count FROM report WHERE 1=1 AND state=2 `
  38. if condition != "" {
  39. sql += condition
  40. }
  41. err = o.Raw(sql, pars...).QueryRow(&count)
  42. return
  43. }
  44. // GetReportDailyListCount 获得今日报告数量
  45. func GetReportDailyListCount() (count int, err error) {
  46. o := orm.NewOrmUsingDB("rddp")
  47. sql := ` SELECT COUNT(*) AS count FROM report WHERE 1=1 AND state=2 AND DATE(modify_time)=DATE(NOW()) `
  48. err = o.Raw(sql).QueryRow(&count)
  49. return
  50. }
  51. func GetReportDailyList(startSize, pageSize int) (items []*ReportList, err error) {
  52. o := orm.NewOrmUsingDB("rddp")
  53. 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,
  54. 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,
  55. 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,
  56. CASE WHEN DATE(a.modify_time)=DATE(NOW()) THEN 1 ELSE 0 END AS is_current_date
  57. FROM report AS a
  58. INNER JOIN classify AS b ON a.classify_id_second=b.id
  59. WHERE a.state=2 AND DATE(a.modify_time)=DATE(NOW())
  60. ORDER BY a.publish_time DESC LIMIT ?,? `
  61. _, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
  62. return
  63. }
  64. func GetReportListByIds(reportIds []string, startSize, pageSize int) (items []*ReportList, err error) {
  65. o := orm.NewOrmUsingDB("rddp")
  66. 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,
  67. 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,
  68. 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,
  69. CASE WHEN DATE(a.modify_time)=DATE(NOW()) THEN 1 ELSE 0 END AS is_current_date
  70. FROM report AS a
  71. INNER JOIN classify AS b ON a.classify_id_second=b.id
  72. WHERE a.state=2 AND a.id IN (?)
  73. ORDER BY a.publish_time DESC LIMIT ?,? `
  74. var reportIdsStr string
  75. if len(reportIds) > 0 {
  76. reportIdsStr = strings.Join(reportIds, ",")
  77. }
  78. _, err = o.Raw(sql, reportIdsStr, startSize, pageSize).QueryRows(&items)
  79. return
  80. }
  81. func GetReportCountByClassifyIds(classifyIds []string, condition string) (count int, err error) {
  82. o := orm.NewOrmUsingDB("rddp")
  83. sql := `SELECT COUNT(*) AS count FROM report AS a
  84. WHERE a.state=2 AND a.classify_id_second IN (%s) `
  85. var reportIdsStr string
  86. if len(classifyIds) > 0 {
  87. reportIdsStr = strings.Join(classifyIds, ",")
  88. sql = fmt.Sprintf(sql, reportIdsStr)
  89. }
  90. if condition != "" {
  91. sql += condition
  92. }
  93. err = o.Raw(sql).QueryRow(&count)
  94. return
  95. }
  96. func GetReportListByClassifyIds(classifyIds []string, condition string, startSize, pageSize int) (items []*ReportList, err error) {
  97. o := orm.NewOrmUsingDB("rddp")
  98. 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,
  99. 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,
  100. 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,
  101. CASE WHEN DATE(a.modify_time)=DATE(NOW()) THEN 1 ELSE 0 END AS is_current_date
  102. FROM report AS a
  103. INNER JOIN classify AS b ON a.classify_id_second=b.id
  104. WHERE a.state=2 AND a.classify_id_second IN (%s) `
  105. var reportIdsStr string
  106. if len(classifyIds) > 0 {
  107. reportIdsStr = strings.Join(classifyIds, ",")
  108. sql = fmt.Sprintf(sql, reportIdsStr)
  109. }
  110. if condition != "" {
  111. sql += condition
  112. }
  113. sql += ` ORDER BY a.publish_time DESC LIMIT ?,? `
  114. _, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
  115. return
  116. }
  117. func GetReportList(condition string, pars []interface{}, startSize, pageSize int) (items []*ReportList, err error) {
  118. o := orm.NewOrmUsingDB("rddp")
  119. 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,
  120. 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,
  121. 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,
  122. CASE WHEN DATE(a.modify_time)=DATE(NOW()) THEN 1 ELSE 0 END AS is_current_date
  123. FROM report AS a
  124. INNER JOIN classify AS b ON a.classify_id_second=b.id
  125. WHERE a.state=2 `
  126. if condition != "" {
  127. sql += condition
  128. }
  129. sql += ` ORDER BY a.publish_time DESC LIMIT ?,? `
  130. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
  131. return
  132. }
  133. func GetReportPermission(userId int, classifyNameSecond string) (count int, err error) {
  134. o := orm.NewOrm()
  135. sql := ` SELECT COUNT(1) AS count
  136. FROM company_report_permission AS crp
  137. INNER JOIN chart_permission_chapter_mapping AS cpcm ON crp.chart_permission_id = cpcm.chart_permission_id
  138. INNER JOIN chart_permission_search_key_word_mapping AS cskwm ON cskwm.chart_permission_id=crp.chart_permission_id
  139. INNER JOIN wx_user wu ON wu.company_id = crp.company_id
  140. WHERE wu.user_id = ?
  141. AND cpcm.research_type = 'rddp'
  142. AND cskwm.from='rddp'
  143. AND cskwm.key_word=? `
  144. err = o.Raw(sql, userId, classifyNameSecond).QueryRow(&count)
  145. return
  146. }
  147. type ReportDetail struct {
  148. Id int `description:"报告Id"`
  149. AddType int `description:"新增方式:1:新增报告,2:继承报告"`
  150. ClassifyIdFirst int `description:"一级分类id"`
  151. ClassifyNameFirst string `description:"一级分类名称"`
  152. ClassifyIdSecond int `description:"二级分类id"`
  153. ClassifyNameSecond string `description:"二级分类名称"`
  154. Title string `description:"标题"`
  155. Abstract string `description:"摘要"`
  156. Author string `description:"作者"`
  157. Frequency string `description:"频度"`
  158. CreateTime string `description:"创建时间"`
  159. ModifyTime string `description:"修改时间"`
  160. State int `description:"1:未发布,2:已发布"`
  161. PublishTime string `description:"发布时间"`
  162. Stage int `description:"期数"`
  163. MsgIsSend int `description:"消息是否已发送,0:否,1:是"`
  164. Content string `description:"内容"`
  165. VideoUrl string `description:"音频文件URL"`
  166. VideoName string `description:"音频文件名称"`
  167. VideoPlaySeconds string `description:"音频播放时长"`
  168. VideoSize string `description:"音频文件大小,单位M"`
  169. ContentSub string `description:"内容前两个章节"`
  170. IsShowNewLabel int `description:"是否显示新标签"`
  171. IsCurrentDate int `description:"是否当前日期"`
  172. ClassifyName string `description:"分类名称"`
  173. TitleType string `description:"标题类型,FICC或者权益"`
  174. IsPublic bool `description:"是否是公共报告 "`
  175. }
  176. func GetReportById(reportId int) (item *ReportDetail, err error) {
  177. o := orm.NewOrmUsingDB("rddp")
  178. sql := `SELECT * FROM report WHERE id=?`
  179. err = o.Raw(sql, reportId).QueryRow(&item)
  180. return
  181. }
  182. type ReportCollectListItem struct {
  183. ReportId int `description:"报告Id"`
  184. ReportChapterId int `description:"报告章节Id"`
  185. ClassifyIdFirst int `description:"一级分类id"`
  186. ClassifyNameFirst string `description:"一级分类名称" `
  187. ClassifyIdSecond int `description:"二级分类id"`
  188. ClassifyNameSecond string `description:"二级分类名称"`
  189. ReportChapterTypeId int `description:"报告章节类型id"`
  190. PublishTime time.Time `description:"发布时间"`
  191. Title string `description:"标题"`
  192. ContentSub string `description:"内容前两个章节"`
  193. }