article_department.go 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  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. func GetArticleDepartmentDateilById(departmentId int) (item *CygxArticleDepartmentRep, err error) {
  41. o := orm.NewOrm()
  42. sql := `SELECT * FROM cygx_article_department WHERE department_id = ? `
  43. err = o.Raw(sql, departmentId).QueryRow(&item)
  44. return
  45. }
  46. //数量
  47. func GetArticleDepartmentCount(condition string) (count int, err error) {
  48. o := orm.NewOrm()
  49. sql := ` SELECT COUNT(*) count
  50. FROM
  51. ( SELECT COUNT(1) FROM cygx_article_department AS d
  52. INNER JOIN cygx_article AS a ON a.department_id = d.department_id
  53. INNER JOIN cygx_industrial_article_group_management AS mg ON mg.article_id = a.article_id
  54. INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = mg.industrial_management_id WHERE 1= 1 `
  55. if condition != "" {
  56. sql += condition
  57. }
  58. sql += ` GROUP BY d.department_id ) AS num `
  59. err = o.Raw(sql).QueryRow(&count)
  60. return
  61. }
  62. //列表
  63. func GetCygxArticleDepartmentList(startSize, pageSize int, condition string, uid int) (items []*CygxArticleDepartmentRep, err error) {
  64. o := orm.NewOrm()
  65. sql := `SELECT d.*,
  66. ( 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,
  67. ( 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
  68. FROM
  69. cygx_article_department AS d
  70. INNER JOIN cygx_article AS a ON a.department_id = d.department_id
  71. INNER JOIN cygx_industrial_article_group_management AS mg ON mg.article_id = a.article_id
  72. INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = mg.industrial_management_id WHERE 1= 1 `
  73. if condition != "" {
  74. sql += condition
  75. }
  76. sql += ` GROUP BY
  77. d.department_id
  78. ORDER BY art_num DESC LIMIT ?,?`
  79. _, err = o.Raw(sql, uid, startSize, pageSize).QueryRows(&items)
  80. return
  81. }
  82. //产业列表
  83. func GetIndustrialSubjectByDepartment(departmentId int) (items []*IndustrialManagementIdInt, err error) {
  84. o := orm.NewOrm()
  85. sql := `SELECT
  86. m.*,
  87. ( 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,
  88. ( 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
  89. FROM
  90. cygx_article_department AS d
  91. INNER JOIN cygx_article AS a ON a.department_id = d.department_id
  92. INNER JOIN cygx_industrial_article_group_management AS mg ON mg.article_id = a.article_id
  93. INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = mg.industrial_management_id
  94. WHERE 1= 1
  95. AND d.department_id = ?
  96. AND a.publish_status = 1
  97. GROUP BY a.article_id
  98. ORDER BY art_time DESC
  99. LIMIT 4 `
  100. _, err = o.Raw(sql, departmentId).QueryRows(&items)
  101. return
  102. }
  103. //最新产业列表
  104. func GetIndustrialSubjectByDepartmentNew() (items []*IndustrialManagementIdInt, err error) {
  105. o := orm.NewOrm()
  106. sql := `SELECT m.*, MAX( a.publish_date ) art_time
  107. FROM
  108. cygx_article_department AS d
  109. INNER JOIN cygx_article AS a ON a.department_id = d.department_id
  110. INNER JOIN cygx_industrial_article_group_management AS mg ON mg.article_id = a.article_id
  111. INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = mg.industrial_management_id
  112. WHERE 1 = 1
  113. AND a.publish_status=1
  114. AND a.subject_ids != ''
  115. AND a.is_report=1
  116. GROUP BY
  117. m.industrial_management_id
  118. ORDER BY art_time DESC LIMIT 6 `
  119. _, err = o.Raw(sql).QueryRows(&items)
  120. return
  121. }
  122. //获取作者数量
  123. func GetDepartmentCount(departmentId int) (count int, err error) {
  124. sqlCount := ` SELECT COUNT(1) AS count FROM cygx_article_department WHERE department_id=? `
  125. o := orm.NewOrm()
  126. err = o.Raw(sqlCount, departmentId).QueryRow(&count)
  127. return
  128. }
  129. type IndustrialSubjectList struct {
  130. SubjectName string `description:"标的名称"`
  131. }
  132. //最新标的列表
  133. func GetIndustrialSubjectNewList(condition string) (items []*IndustrialSubjectList, err error) {
  134. o := orm.NewOrm()
  135. sql := `SELECT s.*
  136. FROM
  137. cygx_industrial_subject AS s
  138. INNER JOIN cygx_industrial_article_group_subject AS sg ON sg.industrial_subject_id = s.industrial_subject_id
  139. INNER JOIN cygx_article AS art ON art.article_id = sg.article_id
  140. INNER JOIN cygx_industrial_article_group_management AS mg ON mg.article_id = art.article_id
  141. WHERE
  142. 1 = 1
  143. AND art.publish_status = 1 `
  144. if condition != "" {
  145. sql += condition
  146. }
  147. sql += ` GROUP BY s.industrial_subject_id ORDER BY s.create_time DESC LIMIT 4`
  148. _, err = o.Raw(sql).QueryRows(&items)
  149. return
  150. }
  151. //最新标的列表
  152. func GetIndustrialSubjectNewListByDepartmentId(departmentId, industrialManagementId int) (items []*IndustrialManagementIdName, err error) {
  153. o := orm.NewOrm()
  154. sql := `SELECT art.article_id,
  155. ( SELECT GROUP_CONCAT( DISTINCT s.subject_name ORDER BY s.industrial_subject_id DESC SEPARATOR '/' ) ) AS subject_name
  156. FROM
  157. cygx_article AS art
  158. INNER JOIN cygx_industrial_article_group_subject AS sg ON sg.article_id = art.article_id
  159. INNER JOIN cygx_industrial_subject AS s ON s.industrial_subject_id = sg.industrial_subject_id
  160. WHERE
  161. department_id = ?
  162. AND s.industrial_management_id = ?
  163. GROUP BY art.article_id
  164. ORDER BY s.create_time DESC LIMIT 4`
  165. _, err = o.Raw(sql, departmentId, industrialManagementId).QueryRows(&items)
  166. return
  167. }
  168. //最新标的列表
  169. func GetArticleByDepartmentId(departmentId int) (items []*IndustrialManagementIdName, err error) {
  170. o := orm.NewOrm()
  171. sql := `SELECT article_id, MAX( publish_date ) art_time FROM cygx_article WHERE department_id = ? AND publish_status = 1 AND subject_ids != '' GROUP BY subject_ids ORDER BY art_time DESC LIMIT 4 `
  172. _, err = o.Raw(sql, departmentId).QueryRows(&items)
  173. return
  174. }
  175. func GetSubjectNames(articleId int) (subjects string, err error) {
  176. sql := ` SELECT GROUP_CONCAT( DISTINCT s.subject_name ORDER BY id ASC SEPARATOR '/' ) AS subject_name
  177. FROM
  178. cygx_industrial_article_group_subject as sg
  179. INNER JOIN cygx_industrial_subject as s ON s.industrial_subject_id = sg.industrial_subject_id
  180. WHERE article_id = ?`
  181. o := orm.NewOrm()
  182. err = o.Raw(sql, articleId).QueryRow(&subjects)
  183. return
  184. }
  185. func GetIndustrialNames(articleId int) (Industrial string, err error) {
  186. sql := ` SELECT
  187. m.industry_name
  188. FROM
  189. cygx_industrial_article_group_management as mg
  190. INNER JOIN cygx_industrial_management as m ON m.industrial_management_id = mg.industrial_management_id
  191. WHERE
  192. mg.article_id = ?
  193. ORDER BY m.industrial_management_id DESC
  194. LIMIT 1
  195. `
  196. o := orm.NewOrm()
  197. err = o.Raw(sql, articleId).QueryRow(&Industrial)
  198. return
  199. }