article_department.go 8.2 KB

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