report.go 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "hongze/hongze_cygx/models"
  6. "hongze/hongze_cygx/services"
  7. "hongze/hongze_cygx/utils"
  8. "rdluck_tools/paging"
  9. "strconv"
  10. "time"
  11. )
  12. //报告
  13. type ReportController struct {
  14. BaseAuthController
  15. }
  16. type ReportCommonController struct {
  17. BaseCommonController
  18. }
  19. // @Title 行业报告分类列表接口
  20. // @Description 获取行业报告分类列表接口
  21. // @Param ChartPermissionId query int true "分类ID"
  22. // @Success 200 {object} models.IndustrialManagementList
  23. // @router /home/tradeList [get]
  24. func (this *ReportController) TradeList() {
  25. br := new(models.BaseResponse).Init()
  26. defer func() {
  27. this.Data["json"] = br
  28. this.ServeJSON()
  29. }()
  30. user := this.User
  31. if user == nil {
  32. br.Msg = "请重新登录"
  33. br.Ret = 408
  34. return
  35. }
  36. uid := user.UserId
  37. ChartPermissionId, _ := this.GetInt("ChartPermissionId")
  38. if ChartPermissionId < 1 {
  39. br.Msg = "请输入分类ID"
  40. return
  41. }
  42. list, err := models.GetTradeAll(ChartPermissionId)
  43. if err != nil {
  44. br.Msg = "获取信息失败"
  45. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  46. return
  47. }
  48. for k, v := range list {
  49. list[k].UpdateTime = utils.TimeRemoveHms(v.UpdateTime)
  50. count, err := models.CheckThisCategoryNewArticleIsRead(uid, v.CategoryId)
  51. if err != nil {
  52. br.Msg = "获取信息失败"
  53. br.ErrMsg = "获取帖子总数失败,Err:" + err.Error()
  54. return
  55. }
  56. if count == 0 && user.CreatedTime.Before(utils.StrTimeToTime(v.UpdateTime)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(v.UpdateTime)) {
  57. list[k].IsRed = true
  58. }
  59. }
  60. resp := new(models.TradeReportMappingResp)
  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. // @Param IsNewLabel query string true "是否属于新标签,1是,0否"
  71. // @Param IsDeepLabel query string true "是否属于深标签,1是,0否"
  72. // @Param KeyWord query string true "搜索关键词"
  73. // @Param OrderColumn query int true "排序字段 ,NewTime 最近更新 ,Recommend弘则推荐"
  74. // @Param PageSize query int true "每页数据条数"
  75. // @Param CurrentIndex query int true "当前页页码,从1开始"
  76. // @Success 200 {object} models.IndustrialManagementList
  77. // @router /home/industryList [get]
  78. func (this *ReportController) IndustryList() {
  79. br := new(models.BaseResponse).Init()
  80. defer func() {
  81. this.Data["json"] = br
  82. this.ServeJSON()
  83. }()
  84. user := this.User
  85. if user == nil {
  86. br.Msg = "请重新登录"
  87. br.Ret = 408
  88. return
  89. }
  90. uid := user.UserId
  91. fmt.Println(uid)
  92. ChartPermissionId, _ := this.GetInt("ChartPermissionId")
  93. orderColumn := this.GetString("OrderColumn")
  94. isNewLabel := this.GetString("IsNewLabel")
  95. isDeepLabel := this.GetString("IsDeepLabel")
  96. keyWord := this.GetString("KeyWord")
  97. pageSize, _ := this.GetInt("PageSize")
  98. currentIndex, _ := this.GetInt("CurrentIndex")
  99. var orderSrt string
  100. var condition string
  101. var startSize int
  102. resp := new(models.IndustrialManagementList)
  103. if pageSize <= 0 {
  104. pageSize = utils.PageSize20
  105. }
  106. if currentIndex <= 0 {
  107. currentIndex = 1
  108. }
  109. startSize = paging.StartIndex(currentIndex, pageSize)
  110. if isNewLabel == "1" {
  111. condition += ` AND is_new_label = ` + isNewLabel
  112. }
  113. if isDeepLabel == "1" {
  114. condition += ` AND is_deep_label = ` + isDeepLabel
  115. }
  116. if keyWord != "" {
  117. keyWordArr, err := services.GetIndustryMapNameSliceV2(keyWord)
  118. if err != nil {
  119. br.Msg = "获取信息失败"
  120. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  121. return
  122. }
  123. var conditionkeyWord string
  124. conditionkeyWord += ` subject_names LIKE '%` + keyWord + `%'`
  125. keyWordArr = services.RemoveDuplicatesAndEmpty(keyWordArr)
  126. keyWordLen := len(keyWordArr)
  127. if keyWordLen <= 0 {
  128. keyWordArr = append(keyWordArr, keyWord)
  129. keyWordLen = len(keyWordArr)
  130. }
  131. for _, v := range keyWordArr {
  132. conditionkeyWord += ` OR subject_names LIKE '%` + v + `%'`
  133. }
  134. industrialManagementIds, err := models.GetIndustrialManagementIdsBykeyWord(conditionkeyWord)
  135. if err != nil {
  136. br.Msg = "获取信息失败"
  137. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  138. return
  139. }
  140. if industrialManagementIds == "" {
  141. br.Ret = 200
  142. br.Success = true
  143. br.Msg = "获取成功"
  144. br.Data = resp
  145. return
  146. }
  147. condition += ` AND man.industrial_management_id IN (` + industrialManagementIds + `)`
  148. }
  149. var sqlChartPermissionId string
  150. if ChartPermissionId > 0 {
  151. sqlChartPermissionId += ` AND man_g.industrial_management_id IN ( SELECT industrial_management_id FROM cygx_industrial_management WHERE chart_permission_id = ` + strconv.Itoa(ChartPermissionId) + ` ) `
  152. condition += ` AND man.chart_permission_id IN (` + strconv.Itoa(ChartPermissionId) + `)`
  153. }
  154. var total int
  155. var list []*models.IndustrialManagement
  156. totalTopList, errTop := models.GetIndustrialManagemenCountTop(sqlChartPermissionId, uid, condition)
  157. totalTop := len(totalTopList)
  158. if errTop != nil {
  159. br.Msg = "获取信息失败"
  160. br.ErrMsg = "获取品种信息失败,Err:" + errTop.Error()
  161. return
  162. }
  163. totalNoTopList, errNoTop := models.GetIndustrialManagemenCountNoTop(sqlChartPermissionId, uid, condition)
  164. totalNoTop := len(totalNoTopList)
  165. if errNoTop != nil {
  166. br.Msg = "获取信息失败"
  167. br.ErrMsg = "获取品种信息失败,Err:" + errNoTop.Error()
  168. return
  169. }
  170. total = totalTop + totalNoTop
  171. page := paging.GetPaging(currentIndex, pageSize, total)
  172. if orderColumn == "" {
  173. orderColumn = "NewTime"
  174. }
  175. if orderColumn == "NewTime" {
  176. orderSrt = "update_time DESC"
  177. } else {
  178. orderSrt = "man.recommended_index DESC,update_time DESC"
  179. }
  180. fmt.Println(orderSrt)
  181. //全部都是置顶
  182. //if totalTop >= currentIndex*pageSize {
  183. // listTop, err := models.GetIndustrialManagementTopAll(uid, condition, startSize, pageSize)
  184. // for k, _ := range listTop {
  185. // listTop[k].IsTop = true
  186. // }
  187. // if err != nil {
  188. // br.Msg = "获取信息失败"
  189. // br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  190. // return
  191. // }
  192. // list = listTop
  193. //} else if totalTop < (currentIndex-1)*pageSize { //全部都是不置顶
  194. // listNoTop, err := models.GetIndustrialManagementAll(uid, condition, orderSrt, startSize-totalTop, pageSize)
  195. // if err != nil {
  196. // br.Msg = "获取信息失败"
  197. // br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  198. // return
  199. // }
  200. // list = listNoTop
  201. //} else { //部分置顶,部分不置顶
  202. // listTop, err := models.GetIndustrialManagementTopAll(uid, condition, startSize, pageSize)
  203. // if err != nil {
  204. // br.Msg = "获取信息失败"
  205. // br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  206. // return
  207. // }
  208. // for k, _ := range listTop {
  209. // listTop[k].IsTop = true
  210. // }
  211. // listNoTop, err := models.GetIndustrialManagementAll(uid, condition, orderSrt, 0, pageSize-len(listTop))
  212. // if err != nil {
  213. // br.Msg = "获取信息失败"
  214. // br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  215. // return
  216. // }
  217. // list = append(listTop, listNoTop...)
  218. //}
  219. detailHot3, err := models.GetIndustrialManagementHot3()
  220. if err != nil {
  221. br.Msg = "获取信息失败"
  222. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  223. return
  224. }
  225. list, err = models.GetIndustrialManagementAll(uid, condition, orderSrt, startSize, pageSize)
  226. if err != nil {
  227. br.Msg = "获取信息失败"
  228. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  229. return
  230. }
  231. for k, v := range list {
  232. //var analystStr string
  233. //analystList, err := models.GetIndustrialAnalystAll(v.IndustrialManagementId)
  234. //if err != nil {
  235. // br.Msg = "获取信息失败"
  236. // br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  237. // return
  238. //}
  239. industrialSubjectList, err := models.GetIndustrialSubjectAll(v.IndustrialManagementId)
  240. if err != nil {
  241. br.Msg = "获取信息失败"
  242. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  243. return
  244. }
  245. list[k].IndustrialSubjectList = industrialSubjectList
  246. //if len(analystList) > 0 {
  247. // for _, v2 := range analystList {
  248. // analystStr += v2.AnalystName + "/"
  249. // }
  250. // analystStr = strings.TrimRight(analystStr, "/")
  251. //}
  252. //list[k].Analyst = analystStr
  253. list[k].LayoutTime = utils.TimeRemoveHms(v.LayoutTime)
  254. newArtinfo, err := models.GetIndustrialNewArticleDetail(v.IndustrialManagementId)
  255. if err != nil {
  256. br.Msg = "获取信息失败"
  257. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  258. return
  259. }
  260. list[k].UpdateTime = utils.TimeRemoveHms(newArtinfo.PublishDate)
  261. recordCount, err := models.GetUserToArticleCount(uid, newArtinfo.ArticleId)
  262. if err != nil && err.Error() != utils.ErrNoRow() {
  263. br.Msg = "获取信息失败"
  264. br.ErrMsg = "获取信息失败,Err:" + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(newArtinfo.ArticleId)
  265. return
  266. }
  267. if recordCount == 0 && user.CreatedTime.Before(utils.StrTimeToTime(newArtinfo.PublishDate)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(newArtinfo.PublishDate)) {
  268. list[k].IsRed = true
  269. }
  270. if v.ArticleReadNum >= detailHot3.ArticleReadNum {
  271. list[k].IsHot = true
  272. }
  273. }
  274. resp.List = list
  275. resp.Paging = page
  276. br.Ret = 200
  277. br.Success = true
  278. br.Msg = "获取成功"
  279. br.Data = resp
  280. }
  281. // @Title 产业下所关联的文章分类列表
  282. // @Description 产业下所关联的文章分类列表接口
  283. // @Param IndustrialManagementId query int true "产业ID"
  284. // @Success 200 {object} models.IndustrialToArticleCategoryListRep
  285. // @router /toArticleCategoryList [get]
  286. func (this *ReportController) ArticleCategoryList() {
  287. br := new(models.BaseResponse).Init()
  288. defer func() {
  289. this.Data["json"] = br
  290. this.ServeJSON()
  291. }()
  292. user := this.User
  293. if user == nil {
  294. br.Msg = "请重新登录"
  295. br.Ret = 408
  296. return
  297. }
  298. uid := user.UserId
  299. industrialManagementId, _ := this.GetInt("IndustrialManagementId")
  300. if industrialManagementId < 1 {
  301. br.Msg = "请输入分类ID"
  302. return
  303. }
  304. list, err := models.IndustrialToArticleCategory(industrialManagementId)
  305. if err != nil {
  306. br.Msg = "获取信息失败"
  307. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  308. return
  309. }
  310. for k, v := range list {
  311. recordCount, err := models.IndustrialUserRecordArticleCount(uid, industrialManagementId, v.CategoryId)
  312. if err != nil && err.Error() != utils.ErrNoRow() {
  313. br.Msg = "获取信息失败"
  314. br.ErrMsg = "判断是否已申请过试用失败,Err:" + err.Error()
  315. return
  316. }
  317. Newdetail, err := models.GetNewIndustrialUserRecordArticle(industrialManagementId, v.CategoryId)
  318. if err != nil {
  319. br.Msg = "获取信息失败"
  320. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  321. return
  322. }
  323. if recordCount == 0 && user.CreatedTime.Before(utils.StrTimeToTime(Newdetail.PublishDate)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(Newdetail.PublishDate)) {
  324. list[k].IsRed = true
  325. }
  326. }
  327. detail, err := models.GetIndustrialManagementDetail(industrialManagementId)
  328. if err != nil {
  329. br.Msg = "获取信息失败"
  330. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  331. return
  332. }
  333. resp := new(models.IndustrialToArticleCategoryListRep)
  334. resp.List = list
  335. resp.LayoutTime = utils.TimeRemoveHms(detail.LayoutTime)
  336. resp.IndustryName = detail.IndustryName
  337. resp.IndustrialManagementId = industrialManagementId
  338. br.Ret = 200
  339. br.Success = true
  340. br.Msg = "获取成功"
  341. br.Data = resp
  342. }
  343. // @Title 产业文章列表接口
  344. // @Description 获取产业文章列表接口
  345. // @Param PageSize query int true "每页数据条数"
  346. // @Param CurrentIndex query int true "当前页页码,从1开始"
  347. // @Param CategoryId query int true "分类ID"
  348. // @Param IndustrialManagementId query int true "产业ID"
  349. // @Success 200 {object} models.TacticsListResp
  350. // @router /industry/ArticleList [get]
  351. func (this *ReportController) List() {
  352. br := new(models.BaseResponse).Init()
  353. defer func() {
  354. this.Data["json"] = br
  355. this.ServeJSON()
  356. }()
  357. user := this.User
  358. if user == nil {
  359. br.Msg = "请重新登录"
  360. br.Ret = 408
  361. return
  362. }
  363. uid := user.UserId
  364. pageSize, _ := this.GetInt("PageSize")
  365. currentIndex, _ := this.GetInt("CurrentIndex")
  366. categoryId, _ := this.GetInt("CategoryId")
  367. industrialManagementId, _ := this.GetInt("IndustrialManagementId")
  368. var startSize int
  369. if pageSize <= 0 {
  370. pageSize = utils.PageSize20
  371. }
  372. if currentIndex <= 0 {
  373. currentIndex = 1
  374. }
  375. startSize = paging.StartIndex(currentIndex, pageSize)
  376. var pars []interface{}
  377. var total int
  378. resp := new(models.TacticsListResp)
  379. page := paging.GetPaging(currentIndex, pageSize, total)
  380. if categoryId < 1 {
  381. br.Msg = "请输入分类ID"
  382. return
  383. }
  384. if industrialManagementId < 1 {
  385. br.Msg = "请输入产业ID"
  386. return
  387. }
  388. total, err := models.GetReportIndustrialCount(categoryId, industrialManagementId)
  389. if err != nil {
  390. br.Msg = "获取信息失败"
  391. br.ErrMsg = "获取帖子总数失败,Err:" + err.Error()
  392. return
  393. }
  394. page = paging.GetPaging(currentIndex, pageSize, total)
  395. list, err := models.GetReportIndustrialList(pars, categoryId, industrialManagementId, uid, startSize, pageSize)
  396. if err != nil {
  397. br.Msg = "获取信息失败"
  398. br.ErrMsg = "获取帖子数据失败,Err:" + err.Error()
  399. return
  400. }
  401. lenList := len(list)
  402. for i := 0; i < lenList; i++ {
  403. item := list[i]
  404. list[i].Body, _ = services.GetReportContentTextSub(item.Body)
  405. //list[i].Abstract = html.UnescapeString(item.Abstract)
  406. list[i].Abstract, _ = services.GetReportContentTextSub(item.Abstract)
  407. }
  408. for k, v := range list {
  409. if v.Readnum == 0 && user.CreatedTime.Before(utils.StrTimeToTime(v.PublishDate)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(v.PublishDate)) {
  410. list[k].IsRed = true
  411. }
  412. }
  413. resp.List = list
  414. resp.Paging = page
  415. br.Ret = 200
  416. br.Success = true
  417. br.Msg = "获取成功"
  418. br.Data = resp
  419. }
  420. // @Title 置顶/取消置顶
  421. // @Description 置顶
  422. // @Param request body models.CygxIndustryTopRep true "type json string"
  423. // @Success 200
  424. // @router /top [post]
  425. func (this *ReportController) ArticleCollect() {
  426. br := new(models.BaseResponse).Init()
  427. defer func() {
  428. this.Data["json"] = br
  429. this.ServeJSON()
  430. }()
  431. user := this.User
  432. if user == nil {
  433. br.Msg = "请重新登录"
  434. br.Ret = 408
  435. return
  436. }
  437. uid := user.UserId
  438. var req models.CygxIndustryTopRep
  439. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  440. if err != nil {
  441. br.Msg = "参数解析异常!"
  442. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  443. return
  444. }
  445. industrialManagementId := req.IndustrialManagementId
  446. countIndustrial, err := models.GetIndustrialManagementCount(industrialManagementId)
  447. if err != nil {
  448. br.Msg = "获取数据失败!"
  449. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  450. return
  451. }
  452. if countIndustrial == 0 {
  453. br.Msg = "产业不存在!"
  454. br.ErrMsg = "产业ID不存在:" + strconv.Itoa(industrialManagementId)
  455. return
  456. }
  457. count, err := models.GetCygxIndustryTop(uid, industrialManagementId)
  458. if err != nil {
  459. br.Msg = "获取数据失败!"
  460. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  461. return
  462. }
  463. resp := new(models.ArticleCollectResp)
  464. if count <= 0 {
  465. item := new(models.CygxIndustryTop)
  466. item.IndustrialManagementId = req.IndustrialManagementId
  467. item.UserId = uid
  468. item.CreateTime = time.Now()
  469. _, err = models.AddCygxIndustryTop(item)
  470. if err != nil {
  471. br.Msg = "置顶失败"
  472. br.ErrMsg = "置顶失败,Err:" + err.Error()
  473. return
  474. }
  475. br.Msg = "置顶成功"
  476. resp.Status = 1
  477. } else {
  478. err = models.RemoveCygxIndustryTop(uid, industrialManagementId)
  479. if err != nil {
  480. br.Msg = "取消置顶失败"
  481. br.ErrMsg = "取消置顶失败,Err:" + err.Error()
  482. return
  483. }
  484. br.Msg = "已取消置顶"
  485. resp.Status = 2
  486. }
  487. br.Ret = 200
  488. br.Success = true
  489. br.Data = resp
  490. }
  491. // @Title 关注/取消关注
  492. // @Description 关注/取消关注 接口
  493. // @Param request body models.CygxIndustryFllowRep true "type json string"
  494. // @Success 200
  495. // @router /fllow [post]
  496. func (this *ReportController) Fllow() {
  497. br := new(models.BaseResponse).Init()
  498. defer func() {
  499. this.Data["json"] = br
  500. this.ServeJSON()
  501. }()
  502. user := this.User
  503. if user == nil {
  504. br.Msg = "请重新登录"
  505. br.Ret = 408
  506. return
  507. }
  508. uid := user.UserId
  509. var req models.CygxIndustryFllowRep
  510. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  511. if err != nil {
  512. br.Msg = "参数解析异常!"
  513. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  514. return
  515. }
  516. industrialManagementId := req.IndustrialManagementId
  517. var condition string
  518. countIndustrial, err := models.GetIndustrialManagementCount(industrialManagementId)
  519. if err != nil {
  520. br.Msg = "获取数据失败!"
  521. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  522. return
  523. }
  524. if countIndustrial == 0 {
  525. br.Msg = "产业不存在!"
  526. br.ErrMsg = "产业ID不存在:" + strconv.Itoa(industrialManagementId)
  527. return
  528. }
  529. count, err := models.GetCountCygxIndustryFllow(uid, industrialManagementId, condition)
  530. if err != nil {
  531. br.Msg = "获取数据失败!"
  532. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  533. return
  534. }
  535. resp := new(models.CygxIndustryFllowResp)
  536. countUser, err := models.GetArticleDepartmentFollowByUid(uid)
  537. if countUser == 0 {
  538. resp.GoFollow = true
  539. }
  540. if count == 0 {
  541. item := new(models.CygxIndustryFllow)
  542. item.IndustrialManagementId = industrialManagementId
  543. item.UserId = uid
  544. item.Email = user.Email
  545. item.Mobile = user.Mobile
  546. item.CompanyId = user.CompanyId
  547. item.CompanyName = user.CompanyName
  548. item.Type = 1
  549. item.CreateTime = time.Now()
  550. item.ModifyTime = time.Now()
  551. _, err = models.AddCygxIndustryFllow(item)
  552. if err != nil {
  553. br.Msg = "操作失败"
  554. br.ErrMsg = "操作失败,Err:" + err.Error()
  555. return
  556. }
  557. resp.Status = 1
  558. } else {
  559. var doType int
  560. condition = ` AND type = 1`
  561. count, err = models.GetCountCygxIndustryFllow(uid, industrialManagementId, condition)
  562. if err != nil {
  563. br.Msg = "操作失败!"
  564. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  565. return
  566. }
  567. if count == 1 {
  568. resp.Status = 2
  569. doType = 2
  570. } else {
  571. resp.Status = 1
  572. doType = 1
  573. }
  574. err = models.RemoveCygxIndustryFllow(uid, industrialManagementId, doType)
  575. if err != nil {
  576. br.Msg = "操作失败"
  577. br.ErrMsg = "取消关注失败,Err:" + err.Error()
  578. return
  579. }
  580. }
  581. br.Msg = "操作成功"
  582. br.Ret = 200
  583. br.Success = true
  584. br.Data = resp
  585. }
  586. // @Title 产业报告分类关联作者列表接口
  587. // @Description 获取产业报告分类关联作者列表接口
  588. // @Param ChartPermissionId query int true "分类ID"
  589. // @Param PageSize query int true "每页数据条数"
  590. // @Param CurrentIndex query int true "当前页页码,从1开始"
  591. // @Success 200 {object} models.CygxArticleDepartmentList
  592. // @router /industryListByDepartment [get]
  593. func (this *ReportController) IndustryListByDepartment() {
  594. br := new(models.BaseResponse).Init()
  595. defer func() {
  596. this.Data["json"] = br
  597. this.ServeJSON()
  598. }()
  599. user := this.User
  600. if user == nil {
  601. br.Msg = "请重新登录"
  602. br.Ret = 408
  603. return
  604. }
  605. uid := user.UserId
  606. fmt.Println(uid)
  607. pageSize, _ := this.GetInt("PageSize")
  608. currentIndex, _ := this.GetInt("CurrentIndex")
  609. chartPermissionId, _ := this.GetInt("ChartPermissionId")
  610. var startSize int
  611. var condition string
  612. condition = ` AND m.chart_permission_id =` + strconv.Itoa(chartPermissionId)
  613. if pageSize <= 0 {
  614. pageSize = utils.PageSize20
  615. }
  616. if currentIndex <= 0 {
  617. currentIndex = 1
  618. }
  619. startSize = paging.StartIndex(currentIndex, pageSize)
  620. total, err := models.GetArticleDepartmentCount(condition)
  621. page := paging.GetPaging(currentIndex, pageSize, total)
  622. //获取作者信息,并排序
  623. list, err := models.GetCygxArticleDepartmentList(startSize, pageSize, condition, uid)
  624. if err != nil {
  625. br.Msg = "获取信息失败"
  626. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  627. return
  628. }
  629. for k, v := range list {
  630. list[k].List, err = models.GetIndustrialSubjectByDepartment(v.DepartmentId)
  631. if err != nil {
  632. br.Msg = "获取信息失败"
  633. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  634. return
  635. }
  636. if v.FollowNum > 0 {
  637. list[k].IsMyFollow = true
  638. }
  639. }
  640. resp := new(models.CygxArticleDepartmentList)
  641. resp.ListnNew, err = models.GetIndustrialSubjectByDepartmentNew(chartPermissionId)
  642. if err != nil {
  643. br.Msg = "获取信息失败"
  644. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  645. return
  646. }
  647. resp.List = list
  648. resp.Paging = page
  649. br.Ret = 200
  650. br.Success = true
  651. br.Msg = "获取成功"
  652. br.Data = resp
  653. }
  654. // @Title 关注作者/取消关注作者
  655. // @Description 关注作者/取消关注作者 接口
  656. // @Param request body models.CygxArticleDepartmentId true "type json string"
  657. // @Success 200
  658. // @router /fllowDepartment [post]
  659. func (this *ReportController) FllowDepartment() {
  660. br := new(models.BaseResponse).Init()
  661. defer func() {
  662. this.Data["json"] = br
  663. this.ServeJSON()
  664. }()
  665. user := this.User
  666. if user == nil {
  667. br.Msg = "请重新登录"
  668. br.Ret = 408
  669. return
  670. }
  671. uid := user.UserId
  672. var req models.CygxArticleDepartmentId
  673. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  674. if err != nil {
  675. br.Msg = "参数解析异常!"
  676. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  677. return
  678. }
  679. departmentId := req.DepartmentId
  680. var condition string
  681. countDepartment, err := models.GetDepartmentCount(departmentId)
  682. if err != nil {
  683. br.Msg = "获取数据失败!"
  684. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  685. return
  686. }
  687. if countDepartment == 0 {
  688. br.Msg = "作者不存在!"
  689. br.ErrMsg = "作者ID不存在:" + strconv.Itoa(departmentId)
  690. return
  691. }
  692. countUser, err := models.GetArticleDepartmentFollowByUid(uid)
  693. count, err := models.GetArticleDepartmentFollow(uid, departmentId, condition)
  694. if err != nil {
  695. br.Msg = "获取数据失败!"
  696. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  697. return
  698. }
  699. resp := new(models.CygxArticleDepartmentFollowResp)
  700. if countUser == 0 {
  701. resp.GoFollow = true
  702. }
  703. if count == 0 {
  704. item := new(models.CygxArticleDepartmentFollow)
  705. item.DepartmentId = departmentId
  706. item.UserId = uid
  707. item.Email = user.Email
  708. item.Mobile = user.Mobile
  709. item.CompanyId = user.CompanyId
  710. item.CompanyName = user.CompanyName
  711. item.Type = 1
  712. item.CreateTime = time.Now()
  713. item.ModifyTime = time.Now()
  714. _, err = models.AddArticleDepartmentFollow(item)
  715. if err != nil {
  716. br.Msg = "操作失败"
  717. br.ErrMsg = "操作失败,Err:" + err.Error()
  718. return
  719. }
  720. resp.Status = 1
  721. } else {
  722. var doType int
  723. condition = ` AND type = 1`
  724. count, err = models.GetArticleDepartmentFollow(uid, departmentId, condition)
  725. if err != nil {
  726. br.Msg = "操作失败!"
  727. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  728. return
  729. }
  730. if count == 1 {
  731. resp.Status = 2
  732. doType = 2
  733. } else {
  734. resp.Status = 1
  735. doType = 1
  736. }
  737. err = models.RemoveArticleDepartmentFollow(uid, departmentId, doType)
  738. if err != nil {
  739. br.Msg = "操作失败"
  740. br.ErrMsg = "取消关注失败,Err:" + err.Error()
  741. return
  742. }
  743. }
  744. br.Msg = "操作成功"
  745. br.Ret = 200
  746. br.Success = true
  747. br.Data = resp
  748. }
  749. // @Title 研选文章列表接口
  750. // @Description 获取研选文章列表接口
  751. // @Param PageSize query int true "每页数据条数"
  752. // @Param CurrentIndex query int true "当前页页码,从1开始"
  753. // @Param DepartmentId query int true "作者ID"
  754. // @Param IndustrialManagementId query int true "产业ID"
  755. // @Success 200 {object} models.ReportArticleWhichIndustrialRepList
  756. // @router /industry/reportList [get]
  757. func (this *ReportController) ReportList() {
  758. br := new(models.BaseResponse).Init()
  759. defer func() {
  760. this.Data["json"] = br
  761. this.ServeJSON()
  762. }()
  763. user := this.User
  764. if user == nil {
  765. br.Msg = "请重新登录"
  766. br.Ret = 408
  767. return
  768. }
  769. uid := user.UserId
  770. pageSize, _ := this.GetInt("PageSize")
  771. currentIndex, _ := this.GetInt("CurrentIndex")
  772. departmentId, _ := this.GetInt("DepartmentId")
  773. industrialManagementId, _ := this.GetInt("IndustrialManagementId")
  774. var condition string
  775. var startSize int
  776. if pageSize <= 0 {
  777. pageSize = utils.PageSize20
  778. }
  779. if currentIndex <= 0 {
  780. currentIndex = 1
  781. }
  782. startSize = paging.StartIndex(currentIndex, pageSize)
  783. var pars []interface{}
  784. var total int
  785. resp := new(models.ReportArticleWhichIndustrialRepList)
  786. page := paging.GetPaging(currentIndex, pageSize, total)
  787. if departmentId > 0 {
  788. condition += ` AND art.department_id = ` + strconv.Itoa(departmentId)
  789. }
  790. if industrialManagementId > 0 {
  791. condition += ` AND m.industrial_management_id = ` + strconv.Itoa(industrialManagementId)
  792. }
  793. total, err := models.GetWhichDepartmentCount(condition)
  794. if err != nil {
  795. br.Msg = "获取信息失败"
  796. br.ErrMsg = "获取帖子总数失败,Err:" + err.Error()
  797. return
  798. }
  799. page = paging.GetPaging(currentIndex, pageSize, total)
  800. condition += ` ORDER BY art.publish_date DESC`
  801. list, err := models.IndustrialToArticleWhichDepartment(condition, pars, uid, startSize, pageSize)
  802. if err != nil {
  803. br.Msg = "获取失败"
  804. br.ErrMsg = "获取失败,Err:" + err.Error()
  805. return
  806. }
  807. for k, v := range list {
  808. if v.Readnum == 0 {
  809. list[k].IsRed = true
  810. }
  811. resp.NickName = v.NickName
  812. resp.IndustryName = v.IndustryName
  813. }
  814. resp.List = list
  815. resp.Paging = page
  816. br.Ret = 200
  817. br.Success = true
  818. br.Msg = "获取成功"
  819. br.Data = resp
  820. }