research.go 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516
  1. package controllers
  2. import (
  3. "hongze/hongze_cygx/models"
  4. "strconv"
  5. )
  6. //研选
  7. type ResearchController struct {
  8. BaseAuthController
  9. }
  10. // @Title 近期更新主题列表
  11. // @Description 近期更新主题列表接口
  12. // @Param ChartPermissionId query int true "分类ID"
  13. // @Success 200 {object} models.IndustrialManagementNewList
  14. // @router /theme/newList [get]
  15. func (this *ResearchController) NewList() {
  16. br := new(models.BaseResponse).Init()
  17. defer func() {
  18. this.Data["json"] = br
  19. this.ServeJSON()
  20. }()
  21. user := this.User
  22. if user == nil {
  23. br.Msg = "请重新登录"
  24. br.Ret = 408
  25. return
  26. }
  27. chartPermissionId, _ := this.GetInt("ChartPermissionId")
  28. if chartPermissionId < 1 {
  29. br.Msg = "请输入分类ID"
  30. return
  31. }
  32. categoryinfo, err := models.GetChartPermissionById(chartPermissionId)
  33. if err != nil {
  34. br.Msg = "获取信息失败"
  35. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  36. return
  37. }
  38. list, err := models.GetIndustrialManagementNewList(categoryinfo.PermissionName)
  39. if err != nil {
  40. br.Msg = "获取信息失败"
  41. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  42. return
  43. }
  44. mapHot := make(map[string]int)
  45. condition := ` ORDER BY sum_num DESC LIMIT 3 `
  46. listHot, err := models.GetThemeHeatList(categoryinfo.PermissionName, user.UserId, condition)
  47. if err != nil {
  48. br.Msg = "获取信息失败"
  49. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  50. return
  51. }
  52. for _, v := range listHot {
  53. mapHot[v.IndustryName] = v.IndustrialManagementId
  54. }
  55. for k, v := range list {
  56. if mapHot[v.IndustryName] > 0 {
  57. list[k].IsHot = true
  58. }
  59. }
  60. resp := new(models.IndustrialManagementNewList)
  61. resp.List = list
  62. br.Ret = 200
  63. br.Success = true
  64. br.Msg = "获取成功"
  65. br.Data = resp
  66. }
  67. // @Title 用户收藏列表
  68. // @Description 用户收藏列表接口
  69. // @Param ChartPermissionId query int true "分类ID"
  70. // @Success 200 {object} models.ArticleCollectionLIstResp
  71. // @router /collectionList [get]
  72. func (this *ResearchController) CollectionList() {
  73. br := new(models.BaseResponse).Init()
  74. defer func() {
  75. this.Data["json"] = br
  76. this.ServeJSON()
  77. }()
  78. user := this.User
  79. if user == nil {
  80. br.Msg = "请重新登录"
  81. br.Ret = 408
  82. return
  83. }
  84. chartPermissionId, _ := this.GetInt("ChartPermissionId")
  85. if chartPermissionId < 1 {
  86. br.Msg = "请输入分类ID"
  87. return
  88. }
  89. categoryinfo, err := models.GetChartPermissionById(chartPermissionId)
  90. if err != nil {
  91. br.Msg = "获取信息失败"
  92. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  93. return
  94. }
  95. var condition string
  96. condition = ` AND a.category_name LIKE '%` + categoryinfo.PermissionName + `%' AND publish_status = 1 GROUP BY a.article_id ORDER BY collect_num DESC, publish_date DESC LIMIT 15 `
  97. list, err := models.GetArticleCollectionList(condition, user.UserId)
  98. if err != nil {
  99. br.Msg = "获取信息失败"
  100. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  101. return
  102. }
  103. for k, v := range list {
  104. if v.MyCollectNum > 0 {
  105. list[k].IsCollect = true
  106. }
  107. }
  108. resp := new(models.ArticleCollectionLIstResp)
  109. resp.List = list
  110. br.Ret = 200
  111. br.Success = true
  112. br.Msg = "获取成功"
  113. br.Data = resp
  114. }
  115. // @Title 主题热度/近期更新更多,列表
  116. // @Description 主题热度/近期更新更多,列表接口
  117. // @Param ChartPermissionId query int true "分类ID"
  118. // @Param ThemeType query int true "主题类型,1主题热度、2近期更新 默认1"
  119. // @Success 200 {object} models.IndustrialManagementHotListResp
  120. // @router /hotList [get]
  121. func (this *ResearchController) HotList() {
  122. br := new(models.BaseResponse).Init()
  123. defer func() {
  124. this.Data["json"] = br
  125. this.ServeJSON()
  126. }()
  127. user := this.User
  128. if user == nil {
  129. br.Msg = "请重新登录"
  130. br.Ret = 408
  131. return
  132. }
  133. chartPermissionId, _ := this.GetInt("ChartPermissionId")
  134. themeType, _ := this.GetInt("ThemeType")
  135. if chartPermissionId < 1 {
  136. br.Msg = "请输入分类ID"
  137. return
  138. }
  139. var condition string
  140. if themeType != 2 {
  141. themeType = 1
  142. condition = `ORDER BY sum_num DESC LIMIT 15`
  143. } else {
  144. condition = `ORDER BY publish_date DESC `
  145. }
  146. categoryinfo, err := models.GetChartPermissionById(chartPermissionId)
  147. if err != nil {
  148. br.Msg = "获取信息失败"
  149. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  150. return
  151. }
  152. list, err := models.GetThemeHeatList(categoryinfo.PermissionName, user.UserId, condition)
  153. if err != nil {
  154. br.Msg = "获取信息失败"
  155. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  156. return
  157. }
  158. newMap := make(map[int]string)
  159. listNew, err := models.GetIndustrialManagementNewList(categoryinfo.PermissionName)
  160. if err != nil {
  161. br.Msg = "获取信息失败"
  162. br.ErrMsg = "获取产业最新信息失败,Err:" + err.Error()
  163. return
  164. }
  165. for _, v := range listNew {
  166. newMap[v.IndustrialManagementId] = v.IndustryName
  167. }
  168. condition = ` AND a.category_name LIKE '%` + categoryinfo.PermissionName + `%' `
  169. listSubjcet, err := models.GetThemeHeatSubjectList(condition)
  170. if err != nil {
  171. br.Msg = "获取信息失败"
  172. br.ErrMsg = "获取标的信息失败,Err:" + err.Error()
  173. return
  174. }
  175. mapHot := make(map[string]int)
  176. condition = ` ORDER BY sum_num DESC LIMIT 3 `
  177. listHot, err := models.GetThemeHeatList(categoryinfo.PermissionName, user.UserId, condition)
  178. if err != nil {
  179. br.Msg = "获取信息失败"
  180. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  181. return
  182. }
  183. for _, v := range listHot {
  184. mapHot[v.IndustryName] = v.IndustrialManagementId
  185. }
  186. for k, v := range list {
  187. if newMap[v.IndustrialManagementId] != "" {
  188. list[k].IsNew = true
  189. }
  190. if v.FllowNum > 0 {
  191. list[k].IsFollw = true
  192. }
  193. for _, v2 := range listSubjcet {
  194. if v2.IndustrialManagementId == v.IndustrialManagementId {
  195. list[k].IndustrialSubjectList = append(list[k].IndustrialSubjectList, v2)
  196. }
  197. }
  198. if mapHot[v.IndustryName] > 0 {
  199. list[k].IsHot = true
  200. }
  201. }
  202. resp := new(models.IndustrialManagementHotListResp)
  203. resp.List = list
  204. br.Ret = 200
  205. br.Success = true
  206. br.Msg = "获取成功"
  207. br.Data = resp
  208. }
  209. // @Title KOL榜列表
  210. // @Description KOL榜列表接口
  211. // @Param ChartPermissionId query int true "分类ID"
  212. // @Success 200 {object} models.DepartmentListResp
  213. // @router /kolList [get]
  214. func (this *ResearchController) KolList() {
  215. br := new(models.BaseResponse).Init()
  216. defer func() {
  217. this.Data["json"] = br
  218. this.ServeJSON()
  219. }()
  220. user := this.User
  221. if user == nil {
  222. br.Msg = "请重新登录"
  223. br.Ret = 408
  224. return
  225. }
  226. chartPermissionId, _ := this.GetInt("ChartPermissionId")
  227. if chartPermissionId < 1 {
  228. br.Msg = "请输入分类ID"
  229. return
  230. }
  231. categoryinfo, err := models.GetChartPermissionById(chartPermissionId)
  232. if err != nil {
  233. br.Msg = "获取信息失败"
  234. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  235. return
  236. }
  237. list, err := models.GetDepartmentList(categoryinfo.PermissionName, user.UserId)
  238. if err != nil {
  239. br.Msg = "获取信息失败"
  240. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  241. return
  242. }
  243. listIndustrial, err := models.GetIndustrialDepartmentList(categoryinfo.PermissionName)
  244. if err != nil {
  245. br.Msg = "获取信息失败"
  246. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  247. return
  248. }
  249. departmentMap := make(map[string]string)
  250. for k, v := range list {
  251. if v.FllowNum > 0 {
  252. list[k].IsFollw = true
  253. }
  254. for _, v2 := range listIndustrial {
  255. if v2.DepartmentId == v.DepartmentId {
  256. if departmentMap["D"+strconv.Itoa(v2.DepartmentId)+"In"+strconv.Itoa(v2.IndustrialManagementId)] == "" && len(list[k].List) < 4 {
  257. list[k].List = append(list[k].List, v2)
  258. departmentMap["D"+strconv.Itoa(v2.DepartmentId)+"In"+strconv.Itoa(v2.IndustrialManagementId)] = v.NickName
  259. }
  260. }
  261. }
  262. }
  263. resp := new(models.DepartmentListResp)
  264. resp.List = list
  265. br.Ret = 200
  266. br.Success = true
  267. br.Msg = "获取成功"
  268. br.Data = resp
  269. }
  270. // @Title 主题详情
  271. // @Description 主题详情接口
  272. // @Param IndustrialManagementId query int true "分类ID"
  273. // @Success 200 {object} models.GetThemeDetailResp
  274. // @router /theme/detail [get]
  275. func (this *ResearchController) ThemeDetail() {
  276. br := new(models.BaseResponse).Init()
  277. defer func() {
  278. this.Data["json"] = br
  279. this.ServeJSON()
  280. }()
  281. user := this.User
  282. if user == nil {
  283. br.Msg = "请重新登录"
  284. br.Ret = 408
  285. return
  286. }
  287. industrialManagementId, _ := this.GetInt("IndustrialManagementId")
  288. if industrialManagementId < 1 {
  289. br.Msg = "请输入产业ID"
  290. return
  291. }
  292. resp := new(models.GetThemeDetailResp)
  293. list, err := models.GetThemeDetail(user.UserId, industrialManagementId)
  294. if err != nil {
  295. br.Msg = "获取信息失败"
  296. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  297. return
  298. }
  299. var itemsNull []*models.GetThemeAericleListResp
  300. subjectMap := make(map[string]string)
  301. articleMap := make(map[int]int)
  302. for _, v := range list {
  303. resp.IndustryName = v.IndustryName
  304. resp.IndustrialManagementId = v.IndustrialManagementId
  305. itemSubJect := new(models.IndustrialSubject)
  306. itemSubJect.SubjectName = v.SubjectName
  307. itemSubJect.IndustrialSubjectId = v.IndustrialSubjectId
  308. if subjectMap[v.SubjectName] == "" && v.SubjectName != "" {
  309. resp.ListSubject = append(resp.ListSubject, itemSubJect)
  310. }
  311. subjectMap[v.SubjectName] = v.IndustryName
  312. if v.FllowNum > 0 {
  313. resp.IsFollw = true
  314. }
  315. if v.SubjectName == "" {
  316. item := new(models.GetThemeAericleListResp)
  317. item.ArticleId = v.ArticleId
  318. item.Title = v.Title
  319. item.PublishDate = v.PublishDate
  320. item.SubjectName = v.SubjectName
  321. item.DepartmentId = v.DepartmentId
  322. item.NickName = v.NickName
  323. item.Pv = v.Pv
  324. item.CollectNum = v.CollectNum
  325. itemsNull = append(itemsNull, item)
  326. }
  327. }
  328. for _, v := range resp.ListSubject {
  329. subjetcGroup := new(models.GetThemeAericleListBuSubjectResp)
  330. for _, v2 := range list {
  331. if v2.IndustrialSubjectId == v.IndustrialSubjectId && articleMap[v2.ArticleId] == 0 {
  332. item := new(models.GetThemeAericleListResp)
  333. item.ArticleId = v2.ArticleId
  334. item.Title = v2.Title
  335. item.PublishDate = v2.PublishDate
  336. item.SubjectName = v2.SubjectName
  337. item.IndustrialSubjectId = v2.IndustrialSubjectId
  338. for _, v3 := range list {
  339. if v3.ArticleId == v2.ArticleId && v3.SubjectName != v2.SubjectName && v3.SubjectName != "" {
  340. item.SubjectName += "/" + v3.SubjectName
  341. }
  342. }
  343. item.DepartmentId = v2.DepartmentId
  344. item.NickName = v2.NickName
  345. item.Pv = v2.Pv
  346. item.CollectNum = v2.CollectNum
  347. item.MyCollectNum = v2.MyCollectNum
  348. if v2.MyCollectNum > 0 {
  349. item.IsCollect = true
  350. }
  351. resp.List = append(resp.List, item)
  352. articleMap[v2.ArticleId] = v2.ArticleId
  353. //subjetcGroup.List = append(subjetcGroup.List, item)
  354. }
  355. subjetcGroup.SubjectName = v.SubjectName
  356. }
  357. }
  358. //当标的为空时进行合并
  359. if len(itemsNull) > 0 {
  360. for _, v := range itemsNull {
  361. resp.List = append(resp.List, v)
  362. }
  363. }
  364. br.Ret = 200
  365. br.Success = true
  366. br.Msg = "获取成功"
  367. br.Data = resp
  368. }
  369. // @Title 研选作者详情
  370. // @Description 研选作者详情接口
  371. // @Param DepartmentId query int true "作者ID"
  372. // @Success 200 {object} models.DepartmentDetailResp
  373. // @router /departmentId/detail [get]
  374. func (this *ResearchController) DepartmentIdDetail() {
  375. br := new(models.BaseResponse).Init()
  376. defer func() {
  377. this.Data["json"] = br
  378. this.ServeJSON()
  379. }()
  380. user := this.User
  381. if user == nil {
  382. br.Msg = "请重新登录"
  383. br.Ret = 408
  384. return
  385. }
  386. departmentId, _ := this.GetInt("DepartmentId")
  387. if departmentId < 1 {
  388. br.Msg = "请输入作者ID"
  389. return
  390. }
  391. resp := new(models.DepartmentDetailResp)
  392. detail, err := models.GetDepartmentDetail(user.UserId, departmentId)
  393. if err != nil {
  394. br.Msg = "获取信息失败"
  395. br.ErrMsg = "获取作者信息失败,Err:" + err.Error()
  396. return
  397. }
  398. resp.DepartmentId = detail.DepartmentId
  399. resp.NickName = detail.NickName
  400. resp.ImgUrl = detail.ImgUrl
  401. resp.FllowNum = detail.FllowNum
  402. resp.ArticleNum = detail.ArticleNum
  403. resp.CollectNum = detail.CollectNum
  404. if detail.MyFllowNum > 0 {
  405. resp.IsFllow = true
  406. }
  407. var condition string
  408. condition = ` AND a.department_id = ` + strconv.Itoa(departmentId) + ` ORDER BY a.publish_date DESC `
  409. list, err := models.GetArticleCollectionList(condition, user.UserId)
  410. if err != nil {
  411. br.Msg = "获取信息失败"
  412. br.ErrMsg = "获取文章列表失败,Err:" + err.Error()
  413. return
  414. }
  415. for k, v := range list {
  416. if v.MyCollectNum > 0 {
  417. list[k].IsCollect = true
  418. }
  419. }
  420. resp.List = list
  421. br.Ret = 200
  422. br.Success = true
  423. br.Msg = "获取成功"
  424. br.Data = resp
  425. }
  426. // @Title 文章相关热门收藏
  427. // @Description 文章相关热门收藏接口
  428. // @Param ArticleId query int true "文章ID"
  429. // @Success 200 {object} models.ArticleCollectionLIstResp
  430. // @router /article/hotList [get]
  431. func (this *ResearchController) ArticleHotList() {
  432. br := new(models.BaseResponse).Init()
  433. defer func() {
  434. this.Data["json"] = br
  435. this.ServeJSON()
  436. }()
  437. user := this.User
  438. if user == nil {
  439. br.Msg = "请重新登录"
  440. br.Ret = 408
  441. return
  442. }
  443. articleId, _ := this.GetInt("ArticleId")
  444. if articleId < 1 {
  445. br.Msg = "请输入分类ID"
  446. return
  447. }
  448. var condition string
  449. condition = ` AND a.article_id IN (SELECT article_id FROM cygx_industrial_article_group_management WHERE industrial_management_id IN (SELECT industrial_management_id FROM cygx_industrial_article_group_management WHERE article_id = ` + strconv.Itoa(articleId) + ` ) ) AND a.article_id != ` + strconv.Itoa(articleId) + ` AND a.category_name LIKE '%研选%' AND publish_status = 1 GROUP BY a.article_id ORDER BY collect_num DESC, publish_date DESC LIMIT 3 `
  450. list, err := models.GetArticleCollectionList(condition, user.UserId)
  451. if err != nil {
  452. br.Msg = "获取信息失败"
  453. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  454. return
  455. }
  456. for k, v := range list {
  457. if v.MyCollectNum > 0 {
  458. list[k].IsCollect = true
  459. }
  460. }
  461. resp := new(models.ArticleCollectionLIstResp)
  462. resp.List = list
  463. br.Ret = 200
  464. br.Success = true
  465. br.Msg = "获取成功"
  466. br.Data = resp
  467. }
  468. // @Title 热搜关键词
  469. // @Description 热搜关键词接口
  470. // @Success 200 {object} models.UserSearchKeyWordListResp
  471. // @router /hotKeyWord [get]
  472. func (this *ResearchController) HotKeyWord() {
  473. br := new(models.BaseResponse).Init()
  474. defer func() {
  475. this.Data["json"] = br
  476. this.ServeJSON()
  477. }()
  478. user := this.User
  479. if user == nil {
  480. br.Msg = "请重新登录"
  481. br.Ret = 408
  482. return
  483. }
  484. //本来应该放在config控制器下,与未上线的代码冲突,所以放在这里
  485. list, err := models.GetUserSearchKeyWord()
  486. if err != nil {
  487. br.Msg = "获取信息失败"
  488. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  489. return
  490. }
  491. resp := new(models.UserSearchKeyWordListResp)
  492. resp.List = list
  493. br.Ret = 200
  494. br.Success = true
  495. br.Msg = "获取成功"
  496. br.Data = resp
  497. }