industrial_management.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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. //产业列表 不置顶
  13. func GetIndustrialManagementAll(ChartPermissionId, uid int, orderSrt string) (items []*IndustrialManagement, err error) {
  14. o := orm.NewOrm()
  15. sql := `SELECT
  16. man.*,
  17. art.publish_date AS update_time,(
  18. 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
  19. FROM
  20. cygx_industrial_management AS man
  21. INNER JOIN cygx_report_mapping AS re ON re.chart_permission_id = man.chart_permission_id
  22. INNER JOIN cygx_industrial_article_group_management AS man_g ON man_g.industrial_management_id = man.industrial_management_id
  23. INNER JOIN cygx_article AS art ON art.article_id = man_g.article_id
  24. WHERE
  25. man.chart_permission_id = ?
  26. AND man.industrial_management_id NOT IN ( SELECT industrial_management_id FROM cygx_industry_top WHERE user_id = ` + strconv.Itoa(uid) + ` )
  27. AND re.report_type = 2
  28. AND art.is_report = 1
  29. AND art.is_class = 1
  30. GROUP BY
  31. man.industry_name
  32. ORDER BY ` + orderSrt
  33. _, err = o.Raw(sql, ChartPermissionId).QueryRows(&items)
  34. return
  35. }
  36. //产业列表 -置顶
  37. func GetIndustrialManagementTopAll(ChartPermissionId, uid int) (items []*IndustrialManagement, err error) {
  38. o := orm.NewOrm()
  39. sql := `SELECT
  40. man.*
  41. FROM
  42. cygx_industrial_management AS man
  43. INNER JOIN cygx_industry_top as top ON man.industrial_management_id = top.industrial_management_id
  44. INNER JOIN cygx_report_mapping AS re ON re.chart_permission_id = man.chart_permission_id
  45. INNER JOIN cygx_industrial_article_group_management AS man_g ON man_g.industrial_management_id = man.industrial_management_id
  46. INNER JOIN cygx_article AS art ON art.article_id = man_g.article_id
  47. WHERE
  48. man.chart_permission_id = ` + strconv.Itoa(ChartPermissionId) + `
  49. AND top.user_id = ` + strconv.Itoa(uid) + `
  50. AND re.report_type = 2
  51. AND art.is_report = 1
  52. AND art.is_class = 1
  53. GROUP BY
  54. man.industry_name
  55. ORDER BY
  56. top.create_time DESC`
  57. _, err = o.Raw(sql).QueryRows(&items)
  58. return
  59. }
  60. //标的列表
  61. func GetIndustrialSubjectAll(IndustrialManagementId int) (items []*IndustrialSubject, err error) {
  62. o := orm.NewOrm()
  63. sql := `SELECT * FROM cygx_industrial_subject WHERE industrial_management_id = ? `
  64. _, err = o.Raw(sql, IndustrialManagementId).QueryRows(&items)
  65. return
  66. }
  67. //分析师列表
  68. func GetIndustrialAnalystAll(IndustrialManagementId int) (items []*IndustrialAnalyst, err error) {
  69. o := orm.NewOrm()
  70. sql := `SELECT * FROM cygx_industrial_analyst where industrial_management_id = ? `
  71. _, err = o.Raw(sql, IndustrialManagementId).QueryRows(&items)
  72. return
  73. }
  74. //获取产业数量
  75. func GetIndustrialManagementCount(IndustrialManagementId int) (count int, err error) {
  76. sqlCount := ` SELECT COUNT(1) AS count FROM cygx_industrial_management WHERE industrial_management_id=? `
  77. o := orm.NewOrm()
  78. err = o.Raw(sqlCount, IndustrialManagementId).QueryRow(&count)
  79. return
  80. }
  81. func GetIndustrialManagementDetail(industrialManagementId int) (items *IndustrialManagementRep, err error) {
  82. o := orm.NewOrm()
  83. sql := `SELECT * FROM cygx_industrial_management WHERE industrial_management_id = ?`
  84. err = o.Raw(sql, industrialManagementId).QueryRow(&items)
  85. return
  86. }
  87. //获取该产业下最新的文章详情
  88. func GetIndustrialNewArticleDetail(industrialManagementId int) (item *ArticleDetail, err error) {
  89. o := orm.NewOrm()
  90. sql := `SELECT
  91. *
  92. FROM
  93. cygx_article
  94. WHERE
  95. article_id IN ( SELECT article_id FROM cygx_industrial_article_group_management WHERE industrial_management_id = ? )
  96. ORDER BY
  97. publish_date DESC
  98. LIMIT 0,1`
  99. err = o.Raw(sql, industrialManagementId).QueryRow(&item)
  100. return
  101. }