report.go 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  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. }
  25. type IndustrialAnalyst struct {
  26. AnalystName string `description:"分析师名称"`
  27. IndustrialManagementId int `description:"产业id"`
  28. }
  29. type IndustrialSubject struct {
  30. IndustrialSubjectId int `orm:"column(industrial_subject_id);pk" description:"标的id"`
  31. IndustrialManagementId int `description:"产业id"`
  32. SubjectName string `description:"标的名称"`
  33. }
  34. //获取产业报告数量
  35. func GetReportIndustrialCount(categoryId, industrialManagementId int) (count int, err error) {
  36. o := orm.NewOrm()
  37. sql := `SELECT COUNT(1) count
  38. FROM
  39. cygx_article AS a
  40. INNER JOIN cygx_industrial_article_group_management as man_g ON man_g.article_id = a.article_id
  41. WHERE
  42. a.publish_status = 1
  43. AND category_id IN (SELECT
  44. category_id
  45. FROM
  46. cygx_report_mapping
  47. WHERE
  48. chart_permission_id = any( SELECT chart_permission_id FROM cygx_report_mapping WHERE category_id = ` + strconv.Itoa(categoryId) + ` )
  49. AND match_type_name = any( SELECT match_type_name FROM cygx_report_mapping WHERE category_id = ` + strconv.Itoa(categoryId) + ` ) )
  50. AND a.is_class = 1
  51. AND man_g.industrial_management_id = ?`
  52. err = o.Raw(sql, industrialManagementId).QueryRow(&count)
  53. return
  54. }
  55. //获取产业报告列表
  56. func GetReportIndustrialList(pars []interface{}, categoryId, industrialManagementId, userId, startSize, pageSize int) (items []*ReportArticle, err error) {
  57. o := orm.NewOrm()
  58. 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
  59. FROM
  60. cygx_article AS a
  61. INNER JOIN cygx_industrial_article_group_management as man_g ON man_g.article_id = a.article_id
  62. WHERE
  63. a.publish_status = 1
  64. AND category_id IN (SELECT
  65. category_id
  66. FROM
  67. cygx_report_mapping
  68. WHERE
  69. chart_permission_id = any( SELECT chart_permission_id FROM cygx_report_mapping WHERE category_id = ` + strconv.Itoa(categoryId) + ` )
  70. AND match_type_name = any( SELECT match_type_name FROM cygx_report_mapping WHERE category_id = ` + strconv.Itoa(categoryId) + ` ) )
  71. AND a.is_class = 1
  72. AND man_g.industrial_management_id = ?`
  73. sql += ` ORDER BY publish_date DESC LIMIT ?,? `
  74. _, err = o.Raw(sql, pars, industrialManagementId, startSize, pageSize).QueryRows(&items)
  75. return
  76. }
  77. //产业下所关联的文章分类列表
  78. func IndustrialToArticleCategory(industrialManagementId int) (items []*IndustrialToArticleCategoryRep, err error) {
  79. o := orm.NewOrm()
  80. sql := `SELECT map.match_type_name,map.category_id
  81. FROM cygx_report_mapping AS map
  82. INNER JOIN cygx_article AS art ON art.category_id = map.category_id
  83. INNER JOIN cygx_industrial_article_group_management AS man_g ON man_g.article_id = art.article_id
  84. WHERE map.report_type = 2
  85. AND art.is_report = 1
  86. AND man_g.industrial_management_id =?
  87. GROUP BY map.match_type_name`
  88. _, err = o.Raw(sql, industrialManagementId).QueryRows(&items)
  89. return
  90. }
  91. //判断用户是否阅读该产业下,某一分类的文章
  92. func IndustrialUserRecordArticleCount(userId, industrialManagementId, categoryId int) (count int, err error) {
  93. o := orm.NewOrm()
  94. sql := `SELECT
  95. COUNT(1) count
  96. FROM
  97. cygx_article_history_record
  98. WHERE
  99. 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 )
  100. AND user_id = ? `
  101. err = o.Raw(sql, industrialManagementId, categoryId, userId).QueryRow(&count)
  102. return
  103. }
  104. //获取最新文章
  105. func GetNewIndustrialUserRecordArticle(industrialManagementId, categoryId int) (item *ArticleDetail, err error) {
  106. o := orm.NewOrm()
  107. 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`
  108. err = o.Raw(sql, industrialManagementId, categoryId).QueryRow(&item)
  109. return
  110. }
  111. //获取最新文章
  112. func GetNewArticleByCategoryId(categoryId int) (item *ArticleDetail, err error) {
  113. o := orm.NewOrm()
  114. sql := ` SELECT * FROM cygx_article WHERE category_id = ? ORDER BY publish_date DESC LIMIT 0, 1`
  115. err = o.Raw(sql, categoryId).QueryRow(&item)
  116. return
  117. }