industrial_management.go 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package models
  2. import (
  3. "rdluck_tools/orm"
  4. "strconv"
  5. )
  6. type IndustrialManagementRep struct {
  7. IndustryName string `description:"产业名称"`
  8. ChartPermissionId int `description:"权限id"`
  9. RecommendedIndex int `description:"推荐指数"`
  10. LayoutTime string `description:"布局时间"`
  11. }
  12. type IndustrialManagementCount struct {
  13. IndustrialManagementId int `orm:"column(industrial_management_id);pk" description:"产业id"`
  14. }
  15. //获取产业置顶数量分类列表
  16. func GetIndustrialManagemenCountTop(ChartPermissionId, uid int) (items []*IndustrialManagementCount, err error) {
  17. o := orm.NewOrm()
  18. sql := `SELECT
  19. man_g.industrial_management_id
  20. FROM
  21. cygx_industrial_article_group_management AS man_g
  22. WHERE
  23. man_g.industrial_management_id IN ( SELECT industrial_management_id FROM cygx_industrial_management WHERE chart_permission_id = ? )
  24. AND man_g.industrial_management_id IN ( SELECT industrial_management_id FROM cygx_industry_top WHERE user_id = ? )
  25. GROUP BY
  26. man_g.industrial_management_id`
  27. _, err = o.Raw(sql, ChartPermissionId, uid).QueryRows(&items)
  28. return
  29. }
  30. //获取产业不置顶数量
  31. func GetIndustrialManagemenCountNoTop(ChartPermissionId, uid int) (items []*IndustrialManagementCount, err error) {
  32. o := orm.NewOrm()
  33. sql := `SELECT
  34. man_g.industrial_management_id
  35. FROM
  36. cygx_industrial_article_group_management AS man_g
  37. WHERE
  38. man_g.industrial_management_id IN ( SELECT industrial_management_id FROM cygx_industrial_management WHERE chart_permission_id = ? )
  39. AND man_g.industrial_management_id NOT IN ( SELECT industrial_management_id FROM cygx_industry_top WHERE user_id = ? )
  40. GROUP BY
  41. man_g.industrial_management_id`
  42. _, err = o.Raw(sql, ChartPermissionId, uid).QueryRows(&items)
  43. return
  44. }
  45. //产业列表 不置顶
  46. func GetIndustrialManagementAll(ChartPermissionId, uid int, orderSrt string, startSize, pageSize int) (items []*IndustrialManagement, err error) {
  47. o := orm.NewOrm()
  48. sql := `SELECT
  49. man.*,
  50. MAX( art.publish_date ) AS update_time ,(
  51. SELECT COUNT( 1 ) FROM cygx_article_history_record AS rec WHERE rec.user_id = ` + strconv.Itoa(uid) + ` AND rec.article_id = art.article_id ) AS readnum
  52. FROM
  53. cygx_industrial_management AS man
  54. INNER JOIN cygx_report_mapping AS re ON re.chart_permission_id = man.chart_permission_id
  55. INNER JOIN cygx_industrial_article_group_management AS man_g ON man_g.industrial_management_id = man.industrial_management_id
  56. INNER JOIN cygx_article AS art ON art.article_id = man_g.article_id
  57. WHERE
  58. man.chart_permission_id = ?
  59. AND man.industrial_management_id NOT IN ( SELECT industrial_management_id FROM cygx_industry_top WHERE user_id = ` + strconv.Itoa(uid) + ` )
  60. AND re.report_type = 2
  61. AND art.is_report = 1
  62. AND art.is_class = 1
  63. GROUP BY
  64. man.industry_name
  65. ORDER BY ` + orderSrt + ` LIMIT ?,?`
  66. //fmt.Println(sql)
  67. //fmt.Println(startSize)
  68. //fmt.Println(pageSize)
  69. _, err = o.Raw(sql, ChartPermissionId, startSize, pageSize).QueryRows(&items)
  70. return
  71. }
  72. //产业列表 -置顶
  73. func GetIndustrialManagementTopAll(ChartPermissionId, uid, startSize, pageSize int) (items []*IndustrialManagement, err error) {
  74. o := orm.NewOrm()
  75. sql := `SELECT
  76. man.*
  77. FROM
  78. cygx_industrial_management AS man
  79. INNER JOIN cygx_industry_top as top ON man.industrial_management_id = top.industrial_management_id
  80. INNER JOIN cygx_report_mapping AS re ON re.chart_permission_id = man.chart_permission_id
  81. INNER JOIN cygx_industrial_article_group_management AS man_g ON man_g.industrial_management_id = man.industrial_management_id
  82. INNER JOIN cygx_article AS art ON art.article_id = man_g.article_id
  83. WHERE
  84. man.chart_permission_id = ` + strconv.Itoa(ChartPermissionId) + `
  85. AND top.user_id = ` + strconv.Itoa(uid) + `
  86. AND re.report_type = 2
  87. AND art.is_report = 1
  88. AND art.is_class = 1
  89. GROUP BY
  90. man.industry_name
  91. ORDER BY
  92. top.create_time DESC LIMIT ?,?`
  93. _, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
  94. return
  95. }
  96. //标的列表
  97. func GetIndustrialSubjectAll(IndustrialManagementId int) (items []*IndustrialSubject, err error) {
  98. o := orm.NewOrm()
  99. sql := `SELECT * FROM cygx_industrial_subject WHERE industrial_management_id = ? `
  100. _, err = o.Raw(sql, IndustrialManagementId).QueryRows(&items)
  101. return
  102. }
  103. //分析师列表
  104. func GetIndustrialAnalystAll(IndustrialManagementId int) (items []*IndustrialAnalyst, err error) {
  105. o := orm.NewOrm()
  106. sql := `SELECT * FROM cygx_industrial_analyst where industrial_management_id = ? `
  107. _, err = o.Raw(sql, IndustrialManagementId).QueryRows(&items)
  108. return
  109. }
  110. //获取产业数量
  111. func GetIndustrialManagementCount(IndustrialManagementId int) (count int, err error) {
  112. sqlCount := ` SELECT COUNT(1) AS count FROM cygx_industrial_management WHERE industrial_management_id=? `
  113. o := orm.NewOrm()
  114. err = o.Raw(sqlCount, IndustrialManagementId).QueryRow(&count)
  115. return
  116. }
  117. func GetIndustrialManagementDetail(industrialManagementId int) (items *IndustrialManagementRep, err error) {
  118. o := orm.NewOrm()
  119. sql := `SELECT * FROM cygx_industrial_management WHERE industrial_management_id = ?`
  120. err = o.Raw(sql, industrialManagementId).QueryRow(&items)
  121. return
  122. }
  123. //获取该产业下最新的文章详情
  124. func GetIndustrialNewArticleDetail(industrialManagementId int) (item *ArticleDetail, err error) {
  125. o := orm.NewOrm()
  126. sql := `SELECT
  127. *
  128. FROM
  129. cygx_article
  130. WHERE
  131. article_id IN ( SELECT article_id FROM cygx_industrial_article_group_management WHERE industrial_management_id = ? )
  132. ORDER BY
  133. publish_date DESC
  134. LIMIT 0,1`
  135. err = o.Raw(sql, industrialManagementId).QueryRow(&item)
  136. return
  137. }