article_department.go 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  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 []*IndustrialManagementIdName
  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 AND a.publish_status = 1 AND a.is_report = 1 ) 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 a.article_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. AND a.publish_status=1
  109. GROUP BY
  110. m.industrial_management_id
  111. ORDER BY art_time DESC LIMIT 6 `
  112. _, err = o.Raw(sql, industrialManagementId).QueryRows(&items)
  113. return
  114. }
  115. //获取作者数量
  116. func GetDepartmentCount(departmentId int) (count int, err error) {
  117. sqlCount := ` SELECT COUNT(1) AS count FROM cygx_article_department WHERE department_id=? `
  118. o := orm.NewOrm()
  119. err = o.Raw(sqlCount, departmentId).QueryRow(&count)
  120. return
  121. }
  122. type IndustrialSubjectList struct {
  123. SubjectName string `description:"标的名称"`
  124. }
  125. //最新标的列表
  126. func GetIndustrialSubjectNewList(condition string) (items []*IndustrialSubjectList, err error) {
  127. o := orm.NewOrm()
  128. sql := `SELECT s.*
  129. FROM
  130. cygx_industrial_subject AS s
  131. INNER JOIN cygx_industrial_article_group_subject AS sg ON sg.industrial_subject_id = s.industrial_subject_id
  132. INNER JOIN cygx_article AS art ON art.article_id = sg.article_id
  133. INNER JOIN cygx_industrial_article_group_management AS mg ON mg.article_id = art.article_id
  134. WHERE
  135. 1 = 1
  136. AND art.publish_status = 1 `
  137. if condition != "" {
  138. sql += condition
  139. }
  140. sql += ` GROUP BY s.industrial_subject_id ORDER BY s.create_time DESC LIMIT 4`
  141. _, err = o.Raw(sql).QueryRows(&items)
  142. return
  143. }
  144. //最新标的列表
  145. func GetIndustrialSubjectNewListByDepartmentId(departmentId, industrialManagementId int) (items []*IndustrialManagementIdName, err error) {
  146. o := orm.NewOrm()
  147. sql := `SELECT art.article_id,
  148. ( SELECT GROUP_CONCAT( DISTINCT s.subject_name ORDER BY s.industrial_subject_id DESC SEPARATOR '/' ) ) AS subject_name
  149. FROM
  150. cygx_article AS art
  151. INNER JOIN cygx_industrial_article_group_subject AS sg ON sg.article_id = art.article_id
  152. INNER JOIN cygx_industrial_subject AS s ON s.industrial_subject_id = sg.industrial_subject_id
  153. WHERE
  154. department_id = ?
  155. AND s.industrial_management_id = ?
  156. GROUP BY art.article_id
  157. ORDER BY s.create_time DESC LIMIT 4`
  158. _, err = o.Raw(sql, departmentId, industrialManagementId).QueryRows(&items)
  159. return
  160. }
  161. //最新标的列表
  162. func GetArticleByDepartmentId(departmentId int) (items []*IndustrialManagementIdName, err error) {
  163. o := orm.NewOrm()
  164. sql := `SELECT article_id FROM cygx_article WHERE department_id = ? AND publish_status = 1 AND subject_ids != '' GROUP BY subject_ids ORDER BY publish_date DESC LIMIT 4 `
  165. _, err = o.Raw(sql, departmentId).QueryRows(&items)
  166. return
  167. }
  168. func GetSubjectNames(articleId int) (subjects string, err error) {
  169. sql := ` SELECT GROUP_CONCAT( DISTINCT s.subject_name ORDER BY id ASC SEPARATOR '/' ) AS subject_name
  170. FROM
  171. cygx_industrial_article_group_subject as sg
  172. INNER JOIN cygx_industrial_subject as s ON s.industrial_subject_id = sg.industrial_subject_id
  173. WHERE article_id = ?`
  174. o := orm.NewOrm()
  175. err = o.Raw(sql, articleId).QueryRow(&subjects)
  176. return
  177. }
  178. func GetIndustrialNames(articleId int) (Industrial string, err error) {
  179. sql := ` SELECT
  180. m.industry_name
  181. FROM
  182. cygx_industrial_article_group_management as mg
  183. INNER JOIN cygx_industrial_management as m ON m.industrial_management_id = mg.industrial_management_id
  184. WHERE
  185. mg.article_id = ?
  186. ORDER BY m.industrial_management_id DESC
  187. LIMIT 1
  188. `
  189. o := orm.NewOrm()
  190. err = o.Raw(sql, articleId).QueryRow(&Industrial)
  191. return
  192. }