research.go 22 KB

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