research.go 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "github.com/rdlucklib/rdluck_tools/paging"
  5. "hongze/hongze_cygx/models"
  6. "hongze/hongze_cygx/services"
  7. "hongze/hongze_cygx/utils"
  8. "strconv"
  9. "strings"
  10. )
  11. // 研选
  12. type ResearchController struct {
  13. BaseAuthController
  14. }
  15. // @Title 近期更新主题列表
  16. // @Description 近期更新主题列表接口
  17. // @Param ChartPermissionId query int true "分类ID"
  18. // @Success 200 {object} models.IndustrialManagementNewList
  19. // @router /theme/newList [get]
  20. func (this *ResearchController) NewList() {
  21. br := new(models.BaseResponse).Init()
  22. defer func() {
  23. this.Data["json"] = br
  24. this.ServeJSON()
  25. }()
  26. user := this.User
  27. if user == nil {
  28. br.Msg = "请重新登录"
  29. br.Ret = 408
  30. return
  31. }
  32. articleTypeIds, err := services.GetYanXuanArticleTypeIds()
  33. if err != nil {
  34. br.Msg = "获取信息失败"
  35. br.ErrMsg = "GetYanXuanArticleTypeIds,Err:" + err.Error()
  36. return
  37. }
  38. if articleTypeIds == "" {
  39. br.Msg = "获取信息失败"
  40. br.ErrMsg = "研选分类ID不能为空"
  41. return
  42. }
  43. var condition string
  44. var conditionOrder string
  45. condition = ` AND a.article_type_id IN (` + articleTypeIds + `) `
  46. list, err := models.GetIndustrialManagementNewList(condition)
  47. if err != nil {
  48. br.Msg = "获取信息失败"
  49. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  50. return
  51. }
  52. mapHot := make(map[string]int)
  53. conditionOrder = ` ORDER BY sum_num DESC `
  54. listHot, err := models.GetThemeHeatList(user.UserId, condition, conditionOrder, 0, 3)
  55. if err != nil {
  56. br.Msg = "获取信息失败"
  57. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  58. return
  59. }
  60. for _, v := range listHot {
  61. mapHot[v.IndustryName] = v.IndustrialManagementId
  62. }
  63. for k, v := range list {
  64. if mapHot[v.IndustryName] > 0 {
  65. list[k].IsHot = true
  66. }
  67. }
  68. resp := new(models.IndustrialManagementNewList)
  69. resp.List = list
  70. br.Ret = 200
  71. br.Success = true
  72. br.Msg = "获取成功"
  73. br.Data = resp
  74. }
  75. // @Title 用户收藏列表
  76. // @Description 用户收藏列表接口
  77. // @Param ChartPermissionId query int true "分类ID"
  78. // @Success 200 {object} models.ArticleCollectionLIstResp
  79. // @router /collectionList [get]
  80. func (this *ResearchController) CollectionList() {
  81. br := new(models.BaseResponse).Init()
  82. defer func() {
  83. this.Data["json"] = br
  84. this.ServeJSON()
  85. }()
  86. user := this.User
  87. if user == nil {
  88. br.Msg = "请重新登录"
  89. br.Ret = 408
  90. return
  91. }
  92. var condition string
  93. articleTypeIds, err := services.GetYanXuanArticleTypeIds()
  94. if err != nil {
  95. br.Msg = "获取信息失败"
  96. br.ErrMsg = "GetYanXuanArticleTypeIds,Err:" + err.Error()
  97. return
  98. }
  99. if articleTypeIds == "" {
  100. br.Msg = "获取信息失败"
  101. br.ErrMsg = "研选分类ID不能为空"
  102. return
  103. }
  104. condition = ` AND a.article_type_id IN (` + articleTypeIds + `) `
  105. condition += ` AND publish_status = 1 GROUP BY a.article_id ORDER BY collect_num_order DESC, publish_date DESC LIMIT 15 `
  106. list, err := models.GetArticleCollectionList(condition, user.UserId)
  107. if err != nil {
  108. br.Msg = "获取信息失败"
  109. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  110. return
  111. }
  112. for k, v := range list {
  113. if v.MyCollectNum > 0 {
  114. list[k].IsCollect = true
  115. }
  116. }
  117. resp := new(models.ArticleCollectionLIstResp)
  118. resp.List = list
  119. br.Ret = 200
  120. br.Success = true
  121. br.Msg = "获取成功"
  122. br.Data = resp
  123. }
  124. // @Title 主题热度/近期更新更多,列表
  125. // @Description 主题热度/近期更新更多,列表接口
  126. // @Param ChartPermissionId query int true "分类ID"
  127. // @Param ThemeType query int true "主题类型,1主题热度、2近期更新 默认1"
  128. // @Param PageSize query int true "每页数据条数"
  129. // @Param CurrentIndex query int true "当前页页码,从1开始"
  130. // @Success 200 {object} models.IndustrialManagementHotListResp
  131. // @router /hotList [get]
  132. func (this *ResearchController) HotList() {
  133. br := new(models.BaseResponse).Init()
  134. defer func() {
  135. this.Data["json"] = br
  136. this.ServeJSON()
  137. }()
  138. user := this.User
  139. if user == nil {
  140. br.Msg = "请重新登录"
  141. br.Ret = 408
  142. return
  143. }
  144. themeType, _ := this.GetInt("ThemeType")
  145. pageSize, _ := this.GetInt("PageSize")
  146. currentIndex, _ := this.GetInt("CurrentIndex")
  147. var startSize int
  148. if pageSize <= 0 {
  149. pageSize = utils.PageSize15
  150. }
  151. if currentIndex <= 0 {
  152. currentIndex = 1
  153. }
  154. startSize = utils.StartIndex(currentIndex, pageSize)
  155. var condition string
  156. var conditionOrder string
  157. articleTypeIds, err := services.GetYanXuanArticleTypeIds()
  158. if err != nil {
  159. br.Msg = "获取信息失败"
  160. br.ErrMsg = "GetYanXuanArticleTypeIds,Err:" + err.Error()
  161. return
  162. }
  163. if articleTypeIds == "" {
  164. br.Msg = "获取信息失败"
  165. br.ErrMsg = "研选分类ID不能为空"
  166. return
  167. }
  168. condition = ` AND a.article_type_id IN (` + articleTypeIds + `) `
  169. if themeType == 2 {
  170. conditionOrder = `ORDER BY publish_date DESC `
  171. } else {
  172. conditionOrder = `ORDER BY sum_num DESC `
  173. }
  174. total, err := models.GetThemeHeatListCount(condition)
  175. if err != nil {
  176. br.Msg = "获取失败"
  177. br.ErrMsg = "获取失败,Err:" + err.Error()
  178. return
  179. }
  180. list, err := models.GetThemeHeatList(user.UserId, condition, conditionOrder, startSize, pageSize)
  181. if err != nil {
  182. br.Msg = "获取信息失败"
  183. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  184. return
  185. }
  186. listSubjcet, err := models.GetThemeHeatSubjectList(condition)
  187. if err != nil {
  188. br.Msg = "获取信息失败"
  189. br.ErrMsg = "获取标的信息失败,Err:" + err.Error()
  190. return
  191. }
  192. mapHot := make(map[int]bool)
  193. mapNew, err := services.GetYanXuanIndustrialManagementIdNewMap(articleTypeIds)
  194. if err != nil {
  195. br.Msg = "获取信息失败"
  196. br.ErrMsg = "GetYanXuanIndustrialManagementIdNewMap,Err:" + err.Error()
  197. return
  198. }
  199. if themeType == 2 {
  200. mapHot, err = services.GetYanXuanIndustrialManagementIdHotMap(articleTypeIds)
  201. if err != nil {
  202. br.Msg = "获取信息失败"
  203. br.ErrMsg = "GetYanXuanIndustrialManagementIdNewMap,Err:" + err.Error()
  204. return
  205. }
  206. }
  207. for k, v := range list {
  208. list[k].IsNew = mapNew[v.IndustrialManagementId]
  209. list[k].IsHot = mapHot[v.IndustrialManagementId]
  210. if v.FllowNum > 0 {
  211. list[k].IsFollw = true
  212. }
  213. for _, v2 := range listSubjcet {
  214. if v2.IndustrialManagementId == v.IndustrialManagementId {
  215. list[k].IndustrialSubjectList = append(list[k].IndustrialSubjectList, v2)
  216. }
  217. }
  218. }
  219. page := paging.GetPaging(currentIndex, pageSize, total)
  220. resp := new(models.IndustrialManagementHotListResp)
  221. resp.Paging = page
  222. resp.List = list
  223. br.Ret = 200
  224. br.Success = true
  225. br.Msg = "获取成功"
  226. br.Data = resp
  227. }
  228. // @Title KOL榜列表
  229. // @Description KOL榜列表接口
  230. // @Param ChartPermissionId query int true "分类ID"
  231. // @Param PageSize query int true "每页数据条数"
  232. // @Param CurrentIndex query int true "当前页页码,从1开始"
  233. // @Param ThemeType query int true "主题类型,1关注度、2更新时间 "
  234. // @Success 200 {object} models.DepartmentListResp
  235. // @router /kolList [get]
  236. func (this *ResearchController) KolList() {
  237. br := new(models.BaseResponse).Init()
  238. defer func() {
  239. this.Data["json"] = br
  240. this.ServeJSON()
  241. }()
  242. user := this.User
  243. if user == nil {
  244. br.Msg = "请重新登录"
  245. br.Ret = 408
  246. return
  247. }
  248. themeType, _ := this.GetInt("ThemeType")
  249. pageSize, _ := this.GetInt("PageSize")
  250. currentIndex, _ := this.GetInt("CurrentIndex")
  251. var startSize int
  252. if pageSize <= 0 {
  253. pageSize = utils.PageSize15
  254. }
  255. if currentIndex <= 0 {
  256. currentIndex = 1
  257. }
  258. startSize = utils.StartIndex(currentIndex, pageSize)
  259. articleTypeIds, err := services.GetYanXuanArticleTypeIds()
  260. if err != nil {
  261. br.Msg = "获取信息失败"
  262. br.ErrMsg = "GetYanXuanArticleTypeIds,Err:" + err.Error()
  263. return
  264. }
  265. if articleTypeIds == "" {
  266. br.Msg = "获取信息失败"
  267. br.ErrMsg = "研选分类ID不能为空"
  268. return
  269. }
  270. var condition string
  271. var conditionOrder string
  272. condition = ` AND a.article_type_id IN (` + articleTypeIds + `) `
  273. total, err := models.GetDepartmentlistCount(condition)
  274. if err != nil {
  275. br.Msg = "获取失败"
  276. br.ErrMsg = "获取失败,Err:" + err.Error()
  277. return
  278. }
  279. if themeType == 2 {
  280. conditionOrder = `ORDER BY publish_date DESC `
  281. } else {
  282. conditionOrder = `ORDER BY sum_num DESC `
  283. }
  284. mapHot := make(map[int]bool)
  285. if themeType == 2 {
  286. conditionHot := `ORDER BY sum_num DESC `
  287. listhot, err := models.GetDepartmentList(condition, conditionHot, user.UserId, 0, 3)
  288. if err != nil {
  289. br.Msg = "获取信息失败"
  290. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  291. return
  292. }
  293. for _, v := range listhot {
  294. mapHot[v.DepartmentId] = true
  295. }
  296. }
  297. list, err := models.GetDepartmentList(condition, conditionOrder, user.UserId, startSize, pageSize)
  298. if err != nil {
  299. br.Msg = "获取信息失败"
  300. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  301. return
  302. }
  303. listIndustrial, err := models.GetIndustrialDepartmentList()
  304. if err != nil {
  305. br.Msg = "获取信息失败"
  306. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  307. return
  308. }
  309. departmentMap := make(map[string]string)
  310. for k, v := range list {
  311. if v.FllowNum > 0 {
  312. list[k].IsFollw = true
  313. }
  314. for _, v2 := range listIndustrial {
  315. if v2.DepartmentId == v.DepartmentId {
  316. if departmentMap["D"+strconv.Itoa(v2.DepartmentId)+"In"+strconv.Itoa(v2.IndustrialManagementId)] == "" && len(list[k].List) < 4 {
  317. list[k].List = append(list[k].List, v2)
  318. departmentMap["D"+strconv.Itoa(v2.DepartmentId)+"In"+strconv.Itoa(v2.IndustrialManagementId)] = v.NickName
  319. }
  320. }
  321. }
  322. if themeType == 2 {
  323. v.IsHot = mapHot[v.DepartmentId]
  324. }
  325. }
  326. resp := new(models.DepartmentListResp)
  327. page := paging.GetPaging(currentIndex, pageSize, total)
  328. resp.Paging = page
  329. resp.List = list
  330. br.Ret = 200
  331. br.Success = true
  332. br.Msg = "获取成功"
  333. br.Data = resp
  334. }
  335. // @Title 主题详情
  336. // @Description 主题详情接口
  337. // @Param IndustrialManagementId query int true "分类ID"
  338. // @Param Source query int true "来源 1:研选,2:报告 默认1"
  339. // @Success 200 {object} models.GetThemeDetailResp
  340. // @router /theme/detail [get]
  341. func (this *ResearchController) ThemeDetail() {
  342. br := new(models.BaseResponse).Init()
  343. defer func() {
  344. this.Data["json"] = br
  345. this.ServeJSON()
  346. }()
  347. user := this.User
  348. if user == nil {
  349. br.Msg = "请重新登录"
  350. br.Ret = 408
  351. return
  352. }
  353. industrialManagementId, _ := this.GetInt("IndustrialManagementId")
  354. if industrialManagementId < 1 {
  355. br.Msg = "请输入产业ID"
  356. return
  357. }
  358. source, _ := this.GetInt("Source")
  359. if source != 2 {
  360. source = 1
  361. }
  362. articleTypeIds, err := services.GetYanXuanArticleTypeIds()
  363. if err != nil {
  364. br.Msg = "获取信息失败"
  365. br.ErrMsg = "GetYanXuanArticleTypeIds,Err:" + err.Error()
  366. return
  367. }
  368. if articleTypeIds == "" {
  369. br.Msg = "获取信息失败"
  370. br.ErrMsg = "研选分类ID不能为空"
  371. return
  372. }
  373. var condition string
  374. if source == 1 {
  375. condition = ` AND a.article_type_id IN (` + articleTypeIds + `) `
  376. } else {
  377. condition = ` AND a.article_type_id NOT IN (` + articleTypeIds + `) `
  378. }
  379. resp := new(models.GetThemeDetailResp)
  380. list, err := models.GetThemeDetail(user.UserId, industrialManagementId, condition)
  381. if err != nil {
  382. br.Msg = "获取信息失败"
  383. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  384. return
  385. }
  386. var articleIds []int
  387. for _, v := range list {
  388. resp.IndustryName = v.IndustryName
  389. resp.IndustrialManagementId = v.IndustrialManagementId
  390. if v.FllowNum > 0 {
  391. resp.IsFollw = true
  392. }
  393. articleIds = append(articleIds, v.ArticleId)
  394. }
  395. mapArticleSubjectName, subjectMap, err := services.GetArticleSubjectName(articleIds)
  396. if err != nil {
  397. br.Msg = "获取信息失败"
  398. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  399. return
  400. }
  401. for _, v2 := range list {
  402. item := new(models.GetThemeAericleListResp)
  403. item.ArticleId = v2.ArticleId
  404. item.Title = v2.Title
  405. item.PublishDate = v2.PublishDate
  406. item.SubjectName = v2.SubjectName
  407. item.IndustrialSubjectId = v2.IndustrialSubjectId
  408. item.DepartmentId = v2.DepartmentId
  409. item.NickName = v2.NickName
  410. item.Pv = v2.Pv
  411. item.CollectNum = v2.CollectNum
  412. item.MyCollectNum = v2.MyCollectNum
  413. if v2.MyCollectNum > 0 {
  414. item.IsCollect = true
  415. }
  416. item.SubjectName = mapArticleSubjectName[v2.ArticleId]
  417. resp.List = append(resp.List, item)
  418. }
  419. listSub, err := models.GetcygxIndustrialSubject(industrialManagementId)
  420. if err != nil {
  421. br.Msg = "获取信息失败"
  422. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  423. return
  424. }
  425. for _, v := range listSub {
  426. itemSubJect := new(models.IndustrialSubject)
  427. itemSubJect.SubjectName = v.SubjectName
  428. itemSubJect.IndustrialSubjectId = v.IndustrialSubjectId
  429. if subjectMap[v.IndustrialSubjectId] != "" {
  430. resp.ListSubject = append(resp.ListSubject, itemSubJect)
  431. }
  432. }
  433. br.Ret = 200
  434. br.Success = true
  435. br.Msg = "获取成功"
  436. br.Data = resp
  437. }
  438. // @Title 研选作者详情
  439. // @Description 研选作者详情接口
  440. // @Param DepartmentId query int true "作者ID"
  441. // @Success 200 {object} models.DepartmentDetailResp
  442. // @router /departmentId/detail [get]
  443. func (this *ResearchController) DepartmentIdDetail() {
  444. br := new(models.BaseResponse).Init()
  445. defer func() {
  446. this.Data["json"] = br
  447. this.ServeJSON()
  448. }()
  449. user := this.User
  450. if user == nil {
  451. br.Msg = "请重新登录"
  452. br.Ret = 408
  453. return
  454. }
  455. departmentId, _ := this.GetInt("DepartmentId")
  456. if departmentId < 1 {
  457. br.Msg = "请输入作者ID"
  458. return
  459. }
  460. resp := new(models.DepartmentDetailResp)
  461. detail, err := models.GetDepartmentDetail(user.UserId, departmentId)
  462. if err != nil {
  463. br.Msg = "获取信息失败"
  464. br.ErrMsg = "获取作者信息失败,Err:" + err.Error()
  465. return
  466. }
  467. resp.DepartmentId = detail.DepartmentId
  468. resp.NickName = detail.NickName
  469. resp.ImgUrl = detail.ImgUrl
  470. resp.FllowNum = detail.FllowNum
  471. resp.ArticleNum = detail.ArticleNum
  472. resp.CollectNum = detail.CollectNum
  473. if detail.MyFllowNum > 0 {
  474. resp.IsFllow = true
  475. }
  476. var condition string
  477. condition = ` AND a.department_id = ` + strconv.Itoa(departmentId) + ` ORDER BY a.publish_date DESC `
  478. list, err := models.GetArticleCollectionList(condition, user.UserId)
  479. if err != nil {
  480. br.Msg = "获取信息失败"
  481. br.ErrMsg = "获取文章列表失败,Err:" + err.Error()
  482. return
  483. }
  484. for k, v := range list {
  485. if v.MyCollectNum > 0 {
  486. list[k].IsCollect = true
  487. }
  488. }
  489. condition = ` AND a.department_id = ` + strconv.Itoa(departmentId)
  490. listIndustrial, err := models.GetIndustrialManagementNewList(condition)
  491. if err != nil {
  492. br.Msg = "获取信息失败"
  493. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  494. return
  495. }
  496. resp.List = list
  497. resp.ListIndustrial = listIndustrial
  498. br.Ret = 200
  499. br.Success = true
  500. br.Msg = "获取成功"
  501. br.Data = resp
  502. }
  503. // @Title 文章相关热门收藏
  504. // @Description 文章相关热门收藏接口
  505. // @Param ArticleId query int true "文章ID"
  506. // @Success 200 {object} models.ArticleCollectionLIstResp
  507. // @router /article/hotList [get]
  508. func (this *ResearchController) ArticleHotList() {
  509. br := new(models.BaseResponse).Init()
  510. defer func() {
  511. this.Data["json"] = br
  512. this.ServeJSON()
  513. }()
  514. user := this.User
  515. if user == nil {
  516. br.Msg = "请重新登录"
  517. br.Ret = 408
  518. return
  519. }
  520. articleId, _ := this.GetInt("ArticleId")
  521. if articleId < 1 {
  522. br.Msg = "请输入分类ID"
  523. return
  524. }
  525. var condition string
  526. 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 `
  527. list, err := models.GetArticleCollectionList(condition, user.UserId)
  528. if err != nil {
  529. br.Msg = "获取信息失败"
  530. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  531. return
  532. }
  533. for k, v := range list {
  534. if v.MyCollectNum > 0 {
  535. list[k].IsCollect = true
  536. }
  537. }
  538. resp := new(models.ArticleCollectionLIstResp)
  539. resp.List = list
  540. br.Ret = 200
  541. br.Success = true
  542. br.Msg = "获取成功"
  543. br.Data = resp
  544. }
  545. // @Title 热搜关键词
  546. // @Description 热搜关键词接口
  547. // @Success 200 {object} models.UserSearchKeyWordListResp
  548. // @router /hotKeyWord [get]
  549. func (this *ResearchController) HotKeyWord() {
  550. br := new(models.BaseResponse).Init()
  551. defer func() {
  552. this.Data["json"] = br
  553. this.ServeJSON()
  554. }()
  555. user := this.User
  556. if user == nil {
  557. br.Msg = "请重新登录"
  558. br.Ret = 408
  559. return
  560. }
  561. //本来应该放在config控制器下,与未上线的代码冲突,所以放在这里
  562. list, err := models.GetUserSearchKeyWord()
  563. if err != nil {
  564. br.Msg = "获取信息失败"
  565. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  566. return
  567. }
  568. resp := new(models.UserSearchKeyWordListResp)
  569. resp.List = list
  570. br.Ret = 200
  571. br.Success = true
  572. br.Msg = "获取成功"
  573. br.Data = resp
  574. }
  575. // @Title 研选文章类型列表
  576. // @Description 研选文章类型列表接口
  577. // @Success 200 {object} models.CygxArticleTypeListResp
  578. // @router /article/typeList [get]
  579. func (this *ResearchController) ArticleType() {
  580. br := new(models.BaseResponse).Init()
  581. defer func() {
  582. this.Data["json"] = br
  583. this.ServeJSON()
  584. }()
  585. user := this.User
  586. if user == nil {
  587. br.Msg = "请重新登录"
  588. br.Ret = 408
  589. return
  590. }
  591. key := utils.YAN_XUAN_TAB_KEY
  592. conf, e := models.GetConfigByCode(key)
  593. if e != nil {
  594. br.Msg = "获取失败"
  595. br.ErrMsg = "获取首页头部导航失败, Err: " + e.Error()
  596. return
  597. }
  598. if conf.ConfigValue == "" {
  599. br.Msg = "获取失败"
  600. br.ErrMsg = "首页头部导航配置值有误"
  601. return
  602. }
  603. list := new(models.CygxArticleTypeListResp)
  604. if e = json.Unmarshal([]byte(conf.ConfigValue), &list); e != nil {
  605. br.Msg = "获取失败"
  606. br.ErrMsg = "首页头部导航配置值解析失败, Err: " + e.Error()
  607. return
  608. }
  609. resp := new(models.CygxArticleTypeListResp)
  610. resp = list
  611. br.Ret = 200
  612. br.Success = true
  613. br.Msg = "获取成功"
  614. br.Data = resp
  615. }
  616. // @Title 研选最新报告列表
  617. // @Description 研选最新报告列表接口
  618. // @Param PageSize query int true "每页数据条数"
  619. // @Param CurrentIndex query int true "当前页页码,从1开始"
  620. // @Param ArticleTypeIds query array true "文章类型ID多个用 , 隔开"
  621. // @Success 200 {object} models.IndustrialManagementNewList
  622. // @router /article/newList [get]
  623. func (this *ResearchController) ArticleNewList() {
  624. br := new(models.BaseResponse).Init()
  625. defer func() {
  626. this.Data["json"] = br
  627. this.ServeJSON()
  628. }()
  629. user := this.User
  630. if user == nil {
  631. br.Msg = "请重新登录"
  632. br.Ret = 408
  633. return
  634. }
  635. pageSize, _ := this.GetInt("PageSize")
  636. currentIndex, _ := this.GetInt("CurrentIndex")
  637. articleTypeIds := this.GetString("ArticleTypeIds")
  638. var startSize int
  639. if pageSize <= 0 {
  640. pageSize = utils.PageSize20
  641. }
  642. if currentIndex <= 0 {
  643. currentIndex = 1
  644. }
  645. startSize = paging.StartIndex(currentIndex, pageSize)
  646. var condition string
  647. var conditiontype string
  648. var pars []interface{}
  649. condition = ` AND publish_status = 1 `
  650. if articleTypeIds == "" {
  651. conditiontype = " AND is_show_yanx = 1 "
  652. } else {
  653. conditiontype = ` AND group_id IN (` + articleTypeIds + `) `
  654. }
  655. listType, err := models.GetCygxArticleTypeListCondition(conditiontype)
  656. if err != nil {
  657. br.Msg = "获取信息失败"
  658. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  659. return
  660. }
  661. for _, v := range listType {
  662. articleTypeIds += strconv.Itoa(v.ArticleTypeId) + ","
  663. }
  664. articleTypeIds = strings.TrimRight(articleTypeIds, ",")
  665. condition += ` AND a.article_type_id IN (` + articleTypeIds + `) `
  666. total, err := models.GetArticleResearchCount(condition, pars)
  667. if err != nil {
  668. br.Msg = "获取信息失败"
  669. br.ErrMsg = "GetArticleResearchCount,Err:" + err.Error()
  670. return
  671. }
  672. list, err := models.GetArticleResearchList(condition, pars, startSize, pageSize, user.UserId)
  673. if err != nil {
  674. br.Msg = "获取信息失败"
  675. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  676. return
  677. }
  678. var articleIds []int
  679. for k, v := range list {
  680. if v.MyCollectNum > 0 {
  681. list[k].IsCollect = true
  682. }
  683. articleIds = append(articleIds, v.ArticleId)
  684. }
  685. //处理关联的产业
  686. industrialMap, err := services.GetArticleIndustrialByArticleId(articleIds)
  687. if err != nil {
  688. br.Msg = "获取信息失败"
  689. br.ErrMsg = "获取关联的产业信息失败,GetArticleIndustrialByArticleId Err:" + err.Error()
  690. return
  691. }
  692. for k, v := range list {
  693. if len(industrialMap[v.ArticleId]) > 0 {
  694. list[k].List = industrialMap[v.ArticleId]
  695. } else {
  696. list[k].List = make([]*models.IndustrialManagementResp, 0)
  697. }
  698. }
  699. //处理对应的文章类型标签按钮
  700. nameMap, styleMap, err := services.GetArticleTypeMap()
  701. if err != nil {
  702. br.Msg = "获取信息失败"
  703. br.ErrMsg = "GetArticleTypeMap Err:" + err.Error()
  704. return
  705. }
  706. page := paging.GetPaging(currentIndex, pageSize, total)
  707. resp := new(models.ArticleResearchListResp)
  708. for _, v := range list {
  709. item := models.ArticleResearchResp{
  710. ArticleId: v.ArticleId,
  711. Title: v.Title,
  712. PublishDate: v.PublishDate,
  713. DepartmentId: v.DepartmentId,
  714. NickName: v.NickName,
  715. IsCollect: v.IsCollect,
  716. Pv: v.Pv,
  717. CollectNum: v.CollectNum,
  718. ArticleTypeName: nameMap[v.ArticleTypeId],
  719. ButtonStyle: styleMap[v.ArticleTypeId],
  720. List: v.List,
  721. }
  722. resp.List = append(resp.List, &item)
  723. }
  724. resp.Paging = page
  725. br.Ret = 200
  726. br.Success = true
  727. br.Msg = "获取成功"
  728. br.Data = resp
  729. }