industrial_management.go 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. package models
  2. import (
  3. "hongze/hongze_cygx/utils"
  4. "rdluck_tools/orm"
  5. "strconv"
  6. "time"
  7. )
  8. type IndustrialManagementRep struct {
  9. IndustryName string `description:"产业名称"`
  10. ChartPermissionId int `description:"权限id"`
  11. RecommendedIndex int `description:"推荐指数"`
  12. LayoutTime string `description:"布局时间"`
  13. }
  14. type IndustrialManagementCount struct {
  15. IndustrialManagementId int `orm:"column(industrial_management_id);pk" description:"产业id"`
  16. }
  17. //获取产业置顶数量分类列表
  18. func GetIndustrialManagemenCountTop(sqlChartPermissionId string, uid int, condition string) (items []*IndustrialManagementCount, err error) {
  19. o := orm.NewOrm()
  20. sql := `SELECT
  21. man_g.industrial_management_id
  22. FROM
  23. cygx_industrial_article_group_management AS man_g
  24. INNER JOIN cygx_industrial_management as man ON man.industrial_management_id = man_g.industrial_management_id
  25. WHERE 1=1 ` + sqlChartPermissionId + `
  26. AND man_g.industrial_management_id IN ( SELECT industrial_management_id FROM cygx_industry_top WHERE user_id = ? ) ` + condition + `
  27. GROUP BY
  28. man_g.industrial_management_id`
  29. _, err = o.Raw(sql, uid).QueryRows(&items)
  30. return
  31. }
  32. //获取产业不置顶数量
  33. func GetIndustrialManagemenCountNoTop(sqlChartPermissionId string, uid int, condition string) (items []*IndustrialManagementCount, err error) {
  34. o := orm.NewOrm()
  35. sql := `SELECT
  36. man_g.industrial_management_id
  37. FROM
  38. cygx_industrial_article_group_management AS man_g
  39. INNER JOIN cygx_industrial_management as man ON man.industrial_management_id = man_g.industrial_management_id
  40. WHERE 1=1 ` + sqlChartPermissionId + `
  41. AND man_g.industrial_management_id NOT IN ( SELECT industrial_management_id FROM cygx_industry_top WHERE user_id = ? ) ` + condition + `
  42. GROUP BY
  43. man_g.industrial_management_id`
  44. _, err = o.Raw(sql, uid).QueryRows(&items)
  45. return
  46. }
  47. //产业列表 不置顶
  48. func GetIndustrialManagementAll(uid int, condition, orderSrt string, startSize, pageSize int) (items []*IndustrialManagement, err error) {
  49. o := orm.NewOrm()
  50. sql := `SELECT
  51. man.*,
  52. MAX( art.publish_date ) AS update_time ,(
  53. 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
  54. FROM
  55. cygx_industrial_management AS man
  56. INNER JOIN cygx_report_mapping AS re ON re.chart_permission_id = man.chart_permission_id
  57. INNER JOIN cygx_industrial_article_group_management AS man_g ON man_g.industrial_management_id = man.industrial_management_id
  58. INNER JOIN cygx_article AS art ON art.article_id = man_g.article_id
  59. WHERE 1= 1
  60. AND man.industrial_management_id NOT IN ( SELECT industrial_management_id FROM cygx_industry_top WHERE user_id = ` + strconv.Itoa(uid) + ` )
  61. AND re.report_type = 2
  62. AND art.is_report = 1
  63. AND art.is_class = 1 ` + condition + `
  64. GROUP BY
  65. man.industry_name
  66. ORDER BY ` + orderSrt + ` LIMIT ?,?`
  67. //fmt.Println(sql)
  68. //fmt.Println(startSize)
  69. //fmt.Println(pageSize)
  70. _, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
  71. return
  72. }
  73. //产业列表 -置顶
  74. func GetIndustrialManagementTopAll(uid int, condition string, startSize, pageSize int) (items []*IndustrialManagement, err error) {
  75. o := orm.NewOrm()
  76. sql := `SELECT
  77. man.*
  78. FROM
  79. cygx_industrial_management AS man
  80. INNER JOIN cygx_industry_top as top ON man.industrial_management_id = top.industrial_management_id
  81. INNER JOIN cygx_report_mapping AS re ON re.chart_permission_id = man.chart_permission_id
  82. INNER JOIN cygx_industrial_article_group_management AS man_g ON man_g.industrial_management_id = man.industrial_management_id
  83. INNER JOIN cygx_article AS art ON art.article_id = man_g.article_id
  84. WHERE 1=1
  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 ` + condition + `
  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. }
  138. //修改产业是否属于新标签
  139. func UpdateIndustrialIsNewLabel() (err error) {
  140. o := orm.NewOrm()
  141. resultTime := time.Now().AddDate(0, -2, 0).Format(utils.FormatDateTime)
  142. var condition string
  143. condition += ` AND is_hand_new_label = 0 AND create_time < ` + "'" + resultTime + "'"
  144. msql := " UPDATE cygx_industrial_management SET is_new_label = 0 WHERE 1 = 1 " + condition
  145. _, err = o.Raw(msql).Exec()
  146. return
  147. }
  148. type IndustrialManagementId struct {
  149. IndustrialManagementId string `description:"产业Id"`
  150. }
  151. //获取归类产业报告数量大于10的
  152. func GetIndustrialMorethan10() (items []*IndustrialManagementId, err error) {
  153. o := orm.NewOrm()
  154. sql := `SELECT * FROM
  155. ( SELECT industrial_management_id, COUNT( 1 ) AS ca FROM cygx_industrial_article_group_management GROUP BY industrial_management_id ) AS na
  156. WHERE ca > 10 `
  157. _, err = o.Raw(sql).QueryRows(&items)
  158. return
  159. }
  160. //修改产业是否属于深度标签
  161. func UpdateIndustrialIsDeepLabel(idStr string) (err error) {
  162. o := orm.NewOrm()
  163. msql := `UPDATE cygx_industrial_management
  164. SET is_deep_label = 1
  165. WHERE
  166. industrial_management_id IN (
  167. SELECT
  168. industrial_management_id
  169. FROM
  170. cygx_industrial_article_group_management AS a
  171. INNER JOIN cygx_article AS b ON b.id = a.cygx_article_id
  172. WHERE
  173. 1 = 1
  174. AND b.match_type_name = '行业深度'
  175. AND a.industrial_management_id IN ( ` + idStr + `)
  176. AND is_hand_deep_label = 0
  177. GROUP BY
  178. a.industrial_management_id)`
  179. _, err = o.Raw(msql).Exec()
  180. return
  181. }
  182. type IndustrialManagementIdInt struct {
  183. IndustrialManagementId int `description:"产业Id"`
  184. IndustryName string `description:"产业名称"`
  185. }
  186. //获取归类产业报告数量大于10的
  187. func GetIndustrialManagementIds() (items []*IndustrialManagementIdInt, err error) {
  188. o := orm.NewOrm()
  189. //sql := `SELECT a.industrial_management_id FROM
  190. // cygx_industrial_management AS a
  191. // INNER JOIN cygx_industrial_subject as b ON b.industrial_management_id=a.industrial_management_id
  192. // WHERE b.industrial_subject_id > 0
  193. // GROUP BY a.industrial_management_id `
  194. sql := `SELECT industrial_management_id,industry_name FROM cygx_industrial_management `
  195. _, err = o.Raw(sql).QueryRows(&items)
  196. return
  197. }
  198. func GetcygxIndustrialSubject(industrialManagementId int) (items []*IndustrialSubject, err error) {
  199. o := orm.NewOrm()
  200. sql := `SELECT subject_name FROM cygx_industrial_subject WHERE industrial_management_id = ?`
  201. _, err = o.Raw(sql, industrialManagementId).QueryRows(&items)
  202. return
  203. }
  204. func UpdateIndustrialManagementSubjectNames(nameStr string, industrialManagementId int) (err error) {
  205. o := orm.NewOrm()
  206. sql := `UPDATE cygx_industrial_management SET subject_names = ? WHERE industrial_management_id = ?`
  207. _, err = o.Raw(sql, nameStr, industrialManagementId).Exec()
  208. return
  209. }