industrial_article_group_management.go 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. package cygx
  2. import (
  3. "github.com/beego/beego/v2/client/orm"
  4. "strconv"
  5. "time"
  6. )
  7. type CygxIndustrialArticleGroupManagement struct {
  8. Id int `orm:"column(id);pk" description:"主键ID"`
  9. CygxArticleId int `description:"cygx_article表的主键ID"`
  10. ArticleId int `description:"cygx_article表的文章ID"`
  11. IndustrialManagementId int `description:"cygx_industrial_management表的主键ID"`
  12. CreateTime time.Time `description:"创建时间"`
  13. }
  14. // 新增
  15. func AddCygxIndustrialArticleGroupManagement(item *CygxIndustrialArticleGroupManagement) (newId int64, err error) {
  16. o := orm.NewOrmUsingDB("hz_cygx")
  17. _, err = o.Insert(item)
  18. if err != nil {
  19. return
  20. }
  21. return
  22. }
  23. // 列表
  24. func GetIndustrialArticleGroupManagementList(articleId int) (items []*IndustrialActivityGroupManagementRep, err error) {
  25. o := orm.NewOrmUsingDB("hz_cygx")
  26. sql := `SELECT
  27. m.chart_permission_id,
  28. m.industrial_management_id,
  29. m.industry_name
  30. FROM
  31. cygx_industrial_article_group_management AS am
  32. INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = am.industrial_management_id
  33. WHERE
  34. am.article_id = ?`
  35. _, err = o.Raw(sql, articleId).QueryRows(&items)
  36. return
  37. }
  38. // 通过名称获取详情
  39. func GetIndustrialManagemenDetailByAaticle(articleId int) (item *CygxIndustrialArticleGroupManagement, err error) {
  40. o := orm.NewOrmUsingDB("hz_cygx")
  41. sql := `SELECT * FROM cygx_industrial_article_group_management WHERE article_id = ? `
  42. err = o.Raw(sql, articleId).QueryRow(&item)
  43. return
  44. }
  45. func GetArticleIdsByIndustrialManagementId(industrialManagementId string) (articleId string, err error) {
  46. sql := ` SELECT
  47. GROUP_CONCAT( DISTINCT article_id ORDER BY id ASC SEPARATOR ',' ) AS articleId
  48. FROM
  49. cygx_industrial_article_group_management WHERE industrial_management_id IN (` + industrialManagementId + `)`
  50. o := orm.NewOrmUsingDB("hz_cygx")
  51. err = o.Raw(sql).QueryRow(&articleId)
  52. return
  53. }
  54. type ArticleIndustrialSubjectNameResp struct {
  55. ArticleId int `description:"文章id"`
  56. IndustryName string `description:"产业名称"`
  57. SubjectNameStr string `description:"关联标的"`
  58. IndustrialManagementId int `description:"产业id"`
  59. }
  60. // 通过文章ID获取所关联的产业与标的
  61. func GetCygxArticleIndustrialSubjectName(articleIds string) (items []*ArticleIndustrialSubjectNameResp, err error) {
  62. o := orm.NewOrmUsingDB("hz_cygx")
  63. sql := ` SELECT
  64. art.article_id,
  65. (
  66. SELECT
  67. GROUP_CONCAT( DISTINCT s.subject_name SEPARATOR '/' )
  68. FROM
  69. cygx_industrial_subject AS s
  70. WHERE
  71. s.industrial_subject_id IN ( SELECT industrial_subject_id FROM cygx_industrial_article_group_subject AS sg WHERE sg.article_id = art.article_id )
  72. ) AS subject_name_str,
  73. (
  74. SELECT
  75. GROUP_CONCAT( DISTINCT man.industry_name SEPARATOR '/' )
  76. FROM
  77. cygx_industrial_management AS man
  78. WHERE
  79. man.industrial_management_id IN ( SELECT industrial_management_id FROM cygx_industrial_article_group_management AS man_g WHERE man_g.article_id = art.article_id )
  80. ) AS industry_name
  81. FROM
  82. cygx_article AS art
  83. WHERE art.article_id IN(` + articleIds + `)`
  84. _, err = o.Raw(sql).QueryRows(&items)
  85. return
  86. }
  87. type IndustrialArticleGroupResp struct {
  88. ArticleId int `description:"活动ID"`
  89. IndustrialManagementId int `description:"cygx_industrial_management表的主键ID"`
  90. IndustryName string `description:"产业名称"`
  91. }
  92. // 通过id 获取详情
  93. func GetIndustrialManagemenDetailByAaticleID(articleId int) (items []*ArticleIndustrialSubjectNameResp, err error) {
  94. o := orm.NewOrmUsingDB("hz_cygx")
  95. sql := `SELECT
  96. article_id,
  97. m.industrial_management_id,
  98. industry_name
  99. FROM
  100. cygx_industrial_article_group_management AS mg
  101. INNER JOIN cygx_industrial_management AS m ON mg.industrial_management_id = m.industrial_management_id
  102. WHERE
  103. mg.article_id = ? `
  104. _, err = o.Raw(sql, articleId).QueryRows(&items)
  105. return
  106. }
  107. // 列表
  108. func GetIndustrialArticleGroupListByarticleIds(articleIds string) (items []*IndustrialArticleGroupResp, err error) {
  109. o := orm.NewOrmUsingDB("hz_cygx")
  110. sql := `SELECT mg.*,m.industry_name FROM
  111. cygx_industrial_article_group_management AS mg
  112. INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = mg.industrial_management_id
  113. WHERE 1 = 1
  114. AND mg.article_id IN (` + articleIds + `) GROUP BY mg.article_id,mg.industrial_management_id`
  115. _, err = o.Raw(sql).QueryRows(&items)
  116. return
  117. }
  118. // 用户收藏榜start
  119. type IndustrialManagementHotResp struct {
  120. IndustrialManagementId int `orm:"column(industrial_management_id);pk" description:"产业id"`
  121. IndustryName string `description:"产业名称"`
  122. IsFollw bool `description:"是否关注"`
  123. FllowNum int `description:"关注数量"`
  124. IsNew bool `description:"是否新标签"`
  125. IsHot bool `description:"是否新标签"`
  126. IsRed bool `description:"是否标记红点"`
  127. Readnum int `description:"阅读数量"`
  128. PublishDate string `description:"发布时间"`
  129. MinReportTime string `description:"报告最早发布时间"`
  130. ArticleReadNum int `description:"文章阅读数量"`
  131. Source int `description:"来源 1:弘则资源包(报告)、2:研选主题(报告)"`
  132. IndustrialSubjectList []*CygxIndustrialSubject `description:"标的列表"`
  133. }
  134. // 产业与文章关联列表
  135. func GetSearchResourceList(userId int, condition string, startSize, pageSize int) (items []*IndustrialManagementHotResp, err error) {
  136. o := orm.NewOrmUsingDB("hz_cygx")
  137. sql := `SELECT
  138. m.industry_name,
  139. m.industrial_management_id,
  140. MAX( a.publish_date ) as publish_date_order,
  141. MIN(a.publish_date) AS min_report_time,
  142. date_format( MAX( a.publish_date ), '%Y-%m-%d' ) AS publish_date,
  143. (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
  144. FROM
  145. cygx_industrial_management AS m
  146. INNER JOIN cygx_industrial_article_group_management AS mg ON mg.industrial_management_id = m.industrial_management_id
  147. INNER JOIN cygx_article AS a ON a.article_id = mg.article_id AND a.article_type != 'lyjh'
  148. WHERE
  149. 1 = 1
  150. AND publish_status = 1 ` + condition + ` GROUP BY m.industrial_management_id ORDER BY publish_date_order DESC `
  151. if startSize > 0 || pageSize > 0 {
  152. sql += ` LIMIT ` + strconv.Itoa(startSize) + "," + strconv.Itoa(pageSize)
  153. }
  154. _, err = o.Raw(sql).QueryRows(&items)
  155. return
  156. }