research.go 21 KB

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