report.go 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. package models
  2. import (
  3. "rdluck_tools/orm"
  4. "rdluck_tools/paging"
  5. "strconv"
  6. //"rdluck_tools/paging"
  7. )
  8. type IndustrialManagementList struct {
  9. Paging *paging.PagingItem
  10. List []*IndustrialManagement
  11. }
  12. type IndustrialManagement struct {
  13. IndustrialManagementId int `orm:"column(industrial_management_id);pk" description:"产业id"`
  14. IndustryName string `description:"产业名称"`
  15. RecommendedIndex int `description:"推荐指数"`
  16. CategoryId int `description:"文章分类ID"`
  17. LayoutTime string `description:"布局时间"`
  18. UpdateTime string `description:"更新时间"`
  19. IsRed bool `description:"是否标记红点"`
  20. IsTop bool `description:"是否置顶"`
  21. AnalystList []*IndustrialAnalyst `description:"分析师列表"`
  22. Analyst string `description:"分析师"`
  23. IndustrialSubjectList []*IndustrialSubject `description:"标的列表"`
  24. IsHot bool `description:"是否是热门"`
  25. IsFollow int `description:"是否关注"`
  26. }
  27. type IndustrialAnalyst struct {
  28. AnalystName string `description:"分析师名称"`
  29. IndustrialManagementId int `description:"产业id"`
  30. }
  31. type IndustrialSubject struct {
  32. IndustrialSubjectId int `orm:"column(industrial_subject_id);pk" description:"标的id"`
  33. IndustrialManagementId int `description:"产业id"`
  34. SubjectName string `description:"标的名称"`
  35. }
  36. //获取产业报告数量
  37. func GetReportIndustrialCount(categoryId, industrialManagementId int) (count int, err error) {
  38. o := orm.NewOrm()
  39. sql := `SELECT COUNT(1) count
  40. FROM
  41. cygx_article AS a
  42. INNER JOIN cygx_industrial_article_group_management as man_g ON man_g.article_id = a.article_id
  43. WHERE
  44. a.publish_status = 1
  45. AND category_id IN (SELECT
  46. category_id
  47. FROM
  48. cygx_report_mapping
  49. WHERE
  50. chart_permission_id = any( SELECT chart_permission_id FROM cygx_report_mapping WHERE category_id = ` + strconv.Itoa(categoryId) + ` )
  51. AND match_type_name = any( SELECT match_type_name FROM cygx_report_mapping WHERE category_id = ` + strconv.Itoa(categoryId) + ` ) )
  52. AND a.is_class = 1
  53. AND man_g.industrial_management_id = ?`
  54. err = o.Raw(sql, industrialManagementId).QueryRow(&count)
  55. return
  56. }
  57. //获取产业报告列表
  58. func GetReportIndustrialList(pars []interface{}, categoryId, industrialManagementId, userId, startSize, pageSize int) (items []*ReportArticle, err error) {
  59. o := orm.NewOrm()
  60. sql := `SELECT *,( SELECT COUNT( 1 ) FROM cygx_article_history_record AS rec WHERE rec.user_id = ` + strconv.Itoa(userId) + ` AND rec.article_id = a.article_id ) AS readnum
  61. FROM
  62. cygx_article AS a
  63. INNER JOIN cygx_industrial_article_group_management as man_g ON man_g.article_id = a.article_id
  64. WHERE
  65. a.publish_status = 1
  66. AND category_id IN (SELECT
  67. category_id
  68. FROM
  69. cygx_report_mapping
  70. WHERE
  71. chart_permission_id = any( SELECT chart_permission_id FROM cygx_report_mapping WHERE category_id = ` + strconv.Itoa(categoryId) + ` )
  72. AND match_type_name = any( SELECT match_type_name FROM cygx_report_mapping WHERE category_id = ` + strconv.Itoa(categoryId) + ` ) )
  73. AND a.is_class = 1
  74. AND man_g.industrial_management_id = ?`
  75. sql += ` ORDER BY publish_date DESC LIMIT ?,? `
  76. _, err = o.Raw(sql, pars, industrialManagementId, startSize, pageSize).QueryRows(&items)
  77. return
  78. }
  79. //产业下所关联的文章分类列表
  80. func IndustrialToArticleCategory(industrialManagementId int) (items []*IndustrialToArticleCategoryRep, err error) {
  81. o := orm.NewOrm()
  82. sql := `SELECT map.match_type_name,map.category_id
  83. FROM cygx_report_mapping AS map
  84. INNER JOIN cygx_article AS art ON art.category_id = map.category_id
  85. INNER JOIN cygx_industrial_article_group_management AS man_g ON man_g.article_id = art.article_id
  86. WHERE map.report_type = 2
  87. AND art.is_report = 1
  88. AND man_g.industrial_management_id =?
  89. GROUP BY map.match_type_name`
  90. _, err = o.Raw(sql, industrialManagementId).QueryRows(&items)
  91. return
  92. }
  93. //判断用户是否阅读该产业下,某一分类的文章
  94. func IndustrialUserRecordArticleCount(userId, industrialManagementId, categoryId int) (count int, err error) {
  95. o := orm.NewOrm()
  96. sql := `SELECT
  97. COUNT(1) count
  98. FROM
  99. cygx_article_history_record
  100. WHERE
  101. article_id = ( SELECT article_id FROM cygx_article WHERE article_id IN (SELECT article_id FROM cygx_industrial_article_group_management WHERE industrial_management_id = ? ) AND category_id = ? ORDER BY publish_date DESC LIMIT 0, 1 )
  102. AND user_id = ? `
  103. err = o.Raw(sql, industrialManagementId, categoryId, userId).QueryRow(&count)
  104. return
  105. }
  106. //获取最新文章
  107. func GetNewIndustrialUserRecordArticle(industrialManagementId, categoryId int) (item *ArticleDetail, err error) {
  108. o := orm.NewOrm()
  109. sql := ` SELECT * FROM cygx_article WHERE article_id IN (SELECT article_id FROM cygx_industrial_article_group_management WHERE industrial_management_id = ? ) AND category_id = ? ORDER BY publish_date DESC LIMIT 0, 1`
  110. err = o.Raw(sql, industrialManagementId, categoryId).QueryRow(&item)
  111. return
  112. }
  113. //获取最新文章
  114. func GetNewArticleByCategoryId(categoryId int) (item *ArticleDetail, err error) {
  115. o := orm.NewOrm()
  116. sql := ` SELECT * FROM cygx_article WHERE category_id = ? ORDER BY publish_date DESC LIMIT 0, 1`
  117. err = o.Raw(sql, categoryId).QueryRow(&item)
  118. return
  119. }
  120. func GetIndustrialManagementIdsBykeyWord(condition string) (industrialManagementIds string, err error) {
  121. sql := `SELECT GROUP_CONCAT(DISTINCT industrial_management_id SEPARATOR ',') AS industrial_management_ids FROM cygx_industrial_management WHERE` + condition
  122. o := orm.NewOrm()
  123. err = o.Raw(sql).QueryRow(&industrialManagementIds)
  124. return
  125. }