article_department.go 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. package models
  2. import (
  3. "rdluck_tools/orm"
  4. "rdluck_tools/paging"
  5. "time"
  6. )
  7. type CygxArticleDepartment struct {
  8. DepartmentId int `orm:"column(department_id);pk;主键ID"`
  9. CreateTime time.Time `description:"创建时间"`
  10. NickName string `description:"昵称"`
  11. Remark string `description:"备注"`
  12. Remarks string `description:"备注辅助字段"`
  13. Content string `description:"初始内容"`
  14. }
  15. type CygxArticleDepartmentRep struct {
  16. DepartmentId int `description:"主键ID"`
  17. CreateTime string `description:"创建时间"`
  18. NickName string `description:"昵称"`
  19. ImgUrl string `description:"头像链接"`
  20. FollowNum int `description:"是否关注 1是 ,0 否"`
  21. IsMyFollow bool `description:"是否关注"`
  22. List []*IndustrialManagementIdInt
  23. }
  24. type CygxArticleDepartmentId struct {
  25. DepartmentId int `description:"作者ID"`
  26. }
  27. type CygxArticleDepartmentList struct {
  28. HaveResearch bool `description:"是否有研选权限"`
  29. Paging *paging.PagingItem `description:"分页数据"`
  30. ListnNew []*IndustrialManagementIdInt
  31. List []*CygxArticleDepartmentRep
  32. }
  33. //详情
  34. func GetArticleDepartmentDateil(nickName, remarks string) (item *CygxArticleDepartmentRep, err error) {
  35. o := orm.NewOrm()
  36. sql := `SELECT * FROM cygx_article_department WHERE nick_name = ? AND remarks = ? LIMIT 1 `
  37. err = o.Raw(sql, nickName, remarks).QueryRow(&item)
  38. return
  39. }
  40. //数量
  41. func GetArticleDepartmentCount(condition string) (count int, err error) {
  42. o := orm.NewOrm()
  43. sql := ` SELECT COUNT(*) count
  44. FROM
  45. ( SELECT COUNT(1) FROM cygx_article_department AS d
  46. INNER JOIN cygx_article AS a ON a.department_id = d.department_id
  47. INNER JOIN cygx_industrial_article_group_management AS mg ON mg.article_id = a.article_id
  48. INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = mg.industrial_management_id WHERE 1= 1 `
  49. if condition != "" {
  50. sql += condition
  51. }
  52. sql += ` GROUP BY d.department_id ) AS num `
  53. err = o.Raw(sql).QueryRow(&count)
  54. return
  55. }
  56. //列表
  57. func GetCygxArticleDepartmentList(startSize, pageSize int, condition string, uid int) (items []*CygxArticleDepartmentRep, err error) {
  58. o := orm.NewOrm()
  59. sql := `SELECT d.*,
  60. ( SELECT COUNT( 1 ) FROM cygx_article AS a INNER JOIN cygx_article_history_record as h ON h.article_id = a.article_id WHERE a.department_id = d.department_id ) AS art_num,
  61. ( SELECT COUNT( 1 ) FROM cygx_article_department_follow AS f WHERE f.department_id = d.department_id AND f.user_id = ? AND f.type = 1 ) AS follow_num
  62. FROM
  63. cygx_article_department AS d
  64. INNER JOIN cygx_article AS a ON a.department_id = d.department_id
  65. INNER JOIN cygx_industrial_article_group_management AS mg ON mg.article_id = a.article_id
  66. INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = mg.industrial_management_id WHERE 1= 1 `
  67. if condition != "" {
  68. sql += condition
  69. }
  70. sql += ` GROUP BY
  71. d.department_id
  72. ORDER BY art_num DESC LIMIT ?,?`
  73. _, err = o.Raw(sql, uid, startSize, pageSize).QueryRows(&items)
  74. return
  75. }
  76. //产业列表
  77. func GetIndustrialSubjectByDepartment(departmentId int) (items []*IndustrialManagementIdInt, err error) {
  78. o := orm.NewOrm()
  79. sql := `SELECT
  80. m.*,
  81. ( SELECT GROUP_CONCAT(DISTINCT s.subject_name ORDER BY s.create_time DESC SEPARATOR '/' ) FROM cygx_industrial_subject AS s WHERE s.industrial_management_id = m.industrial_management_id) AS subject_name,
  82. ( SELECT publish_date FROM cygx_article AS a INNER JOIN cygx_industrial_article_group_management as mg ON mg.article_id = a.article_id ORDER BY publish_date DESC LIMIT 1 ) AS art_time
  83. FROM
  84. cygx_article_department AS d
  85. INNER JOIN cygx_article AS a ON a.department_id = d.department_id
  86. INNER JOIN cygx_industrial_article_group_management AS mg ON mg.article_id = a.article_id
  87. INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = mg.industrial_management_id
  88. WHERE 1= 1
  89. AND d.department_id = ?
  90. AND a.publish_status = 1
  91. GROUP BY m.industrial_management_id
  92. ORDER BY art_time DESC
  93. LIMIT 4 `
  94. _, err = o.Raw(sql, departmentId).QueryRows(&items)
  95. return
  96. }
  97. //最新产业列表
  98. func GetIndustrialSubjectByDepartmentNew(industrialManagementId int) (items []*IndustrialManagementIdInt, err error) {
  99. o := orm.NewOrm()
  100. sql := `SELECT m.*, MAX( a.publish_date ) art_time
  101. FROM
  102. cygx_article_department AS d
  103. INNER JOIN cygx_article AS a ON a.department_id = d.department_id
  104. INNER JOIN cygx_industrial_article_group_management AS mg ON mg.article_id = a.article_id
  105. INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = mg.industrial_management_id
  106. WHERE 1 = 1
  107. AND m.chart_permission_id = ?
  108. GROUP BY
  109. m.industrial_management_id
  110. ORDER BY art_time DESC LIMIT 6 `
  111. _, err = o.Raw(sql, industrialManagementId).QueryRows(&items)
  112. return
  113. }
  114. //获取作者数量
  115. func GetDepartmentCount(departmentId int) (count int, err error) {
  116. sqlCount := ` SELECT COUNT(1) AS count FROM cygx_article_department WHERE department_id=? `
  117. o := orm.NewOrm()
  118. err = o.Raw(sqlCount, departmentId).QueryRow(&count)
  119. return
  120. }
  121. type IndustrialSubjectList struct {
  122. SubjectName string `description:"标的名称"`
  123. }
  124. //最新标的列表
  125. func GetIndustrialSubjectNewList(condition string) (items []*IndustrialSubjectList, err error) {
  126. o := orm.NewOrm()
  127. sql := `SELECT s.*
  128. FROM
  129. cygx_industrial_subject AS s
  130. INNER JOIN cygx_industrial_article_group_subject AS sg ON sg.industrial_subject_id = s.industrial_subject_id
  131. INNER JOIN cygx_article AS art ON art.article_id = sg.article_id
  132. INNER JOIN cygx_industrial_article_group_management AS mg ON mg.article_id = art.article_id
  133. WHERE
  134. 1 = 1
  135. AND art.publish_status = 1 `
  136. if condition != "" {
  137. sql += condition
  138. }
  139. sql += ` GROUP BY s.industrial_subject_id ORDER BY s.create_time DESC LIMIT 4`
  140. _, err = o.Raw(sql).QueryRows(&items)
  141. return
  142. }