report.go 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831
  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. list, err := models.GetIndustrialManagementAll(uid, condition, orderSrt, startSize, pageSize)
  220. if err != nil {
  221. br.Msg = "获取信息失败"
  222. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  223. return
  224. }
  225. for k, v := range list {
  226. //var analystStr string
  227. //analystList, err := models.GetIndustrialAnalystAll(v.IndustrialManagementId)
  228. //if err != nil {
  229. // br.Msg = "获取信息失败"
  230. // br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  231. // return
  232. //}
  233. industrialSubjectList, err := models.GetIndustrialSubjectAll(v.IndustrialManagementId)
  234. if err != nil {
  235. br.Msg = "获取信息失败"
  236. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  237. return
  238. }
  239. list[k].IndustrialSubjectList = industrialSubjectList
  240. //if len(analystList) > 0 {
  241. // for _, v2 := range analystList {
  242. // analystStr += v2.AnalystName + "/"
  243. // }
  244. // analystStr = strings.TrimRight(analystStr, "/")
  245. //}
  246. //list[k].Analyst = analystStr
  247. list[k].LayoutTime = utils.TimeRemoveHms(v.LayoutTime)
  248. newArtinfo, err := models.GetIndustrialNewArticleDetail(v.IndustrialManagementId)
  249. if err != nil {
  250. br.Msg = "获取信息失败"
  251. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  252. return
  253. }
  254. list[k].UpdateTime = utils.TimeRemoveHms(newArtinfo.PublishDate)
  255. recordCount, err := models.GetUserToArticleCount(uid, newArtinfo.ArticleId)
  256. if err != nil && err.Error() != utils.ErrNoRow() {
  257. br.Msg = "获取信息失败"
  258. br.ErrMsg = "获取信息失败,Err:" + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(newArtinfo.ArticleId)
  259. return
  260. }
  261. if recordCount == 0 && user.CreatedTime.Before(utils.StrTimeToTime(newArtinfo.PublishDate)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(newArtinfo.PublishDate)) {
  262. list[k].IsRed = true
  263. }
  264. }
  265. resp.List = list
  266. resp.Paging = page
  267. br.Ret = 200
  268. br.Success = true
  269. br.Msg = "获取成功"
  270. br.Data = resp
  271. }
  272. // @Title 产业下所关联的文章分类列表
  273. // @Description 产业下所关联的文章分类列表接口
  274. // @Param IndustrialManagementId query int true "产业ID"
  275. // @Success 200 {object} models.IndustrialToArticleCategoryListRep
  276. // @router /toArticleCategoryList [get]
  277. func (this *ReportController) ArticleCategoryList() {
  278. br := new(models.BaseResponse).Init()
  279. defer func() {
  280. this.Data["json"] = br
  281. this.ServeJSON()
  282. }()
  283. user := this.User
  284. if user == nil {
  285. br.Msg = "请重新登录"
  286. br.Ret = 408
  287. return
  288. }
  289. uid := user.UserId
  290. industrialManagementId, _ := this.GetInt("IndustrialManagementId")
  291. if industrialManagementId < 1 {
  292. br.Msg = "请输入分类ID"
  293. return
  294. }
  295. list, err := models.IndustrialToArticleCategory(industrialManagementId)
  296. if err != nil {
  297. br.Msg = "获取信息失败"
  298. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  299. return
  300. }
  301. for k, v := range list {
  302. recordCount, err := models.IndustrialUserRecordArticleCount(uid, industrialManagementId, v.CategoryId)
  303. if err != nil && err.Error() != utils.ErrNoRow() {
  304. br.Msg = "获取信息失败"
  305. br.ErrMsg = "判断是否已申请过试用失败,Err:" + err.Error()
  306. return
  307. }
  308. Newdetail, err := models.GetNewIndustrialUserRecordArticle(industrialManagementId, v.CategoryId)
  309. if err != nil {
  310. br.Msg = "获取信息失败"
  311. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  312. return
  313. }
  314. if recordCount == 0 && user.CreatedTime.Before(utils.StrTimeToTime(Newdetail.PublishDate)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(Newdetail.PublishDate)) {
  315. list[k].IsRed = true
  316. }
  317. }
  318. detail, err := models.GetIndustrialManagementDetail(industrialManagementId)
  319. if err != nil {
  320. br.Msg = "获取信息失败"
  321. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  322. return
  323. }
  324. resp := new(models.IndustrialToArticleCategoryListRep)
  325. resp.List = list
  326. resp.LayoutTime = utils.TimeRemoveHms(detail.LayoutTime)
  327. resp.IndustryName = detail.IndustryName
  328. resp.IndustrialManagementId = industrialManagementId
  329. br.Ret = 200
  330. br.Success = true
  331. br.Msg = "获取成功"
  332. br.Data = resp
  333. }
  334. // @Title 产业文章列表接口
  335. // @Description 获取产业文章列表接口
  336. // @Param PageSize query int true "每页数据条数"
  337. // @Param CurrentIndex query int true "当前页页码,从1开始"
  338. // @Param CategoryId query int true "分类ID"
  339. // @Param IndustrialManagementId query int true "产业ID"
  340. // @Success 200 {object} models.TacticsListResp
  341. // @router /industry/ArticleList [get]
  342. func (this *ReportController) List() {
  343. br := new(models.BaseResponse).Init()
  344. defer func() {
  345. this.Data["json"] = br
  346. this.ServeJSON()
  347. }()
  348. user := this.User
  349. if user == nil {
  350. br.Msg = "请重新登录"
  351. br.Ret = 408
  352. return
  353. }
  354. uid := user.UserId
  355. pageSize, _ := this.GetInt("PageSize")
  356. currentIndex, _ := this.GetInt("CurrentIndex")
  357. categoryId, _ := this.GetInt("CategoryId")
  358. industrialManagementId, _ := this.GetInt("IndustrialManagementId")
  359. var startSize int
  360. if pageSize <= 0 {
  361. pageSize = utils.PageSize20
  362. }
  363. if currentIndex <= 0 {
  364. currentIndex = 1
  365. }
  366. startSize = paging.StartIndex(currentIndex, pageSize)
  367. var pars []interface{}
  368. var total int
  369. resp := new(models.TacticsListResp)
  370. page := paging.GetPaging(currentIndex, pageSize, total)
  371. if categoryId < 1 {
  372. br.Msg = "请输入分类ID"
  373. return
  374. }
  375. if industrialManagementId < 1 {
  376. br.Msg = "请输入产业ID"
  377. return
  378. }
  379. total, err := models.GetReportIndustrialCount(categoryId, industrialManagementId)
  380. if err != nil {
  381. br.Msg = "获取信息失败"
  382. br.ErrMsg = "获取帖子总数失败,Err:" + err.Error()
  383. return
  384. }
  385. page = paging.GetPaging(currentIndex, pageSize, total)
  386. list, err := models.GetReportIndustrialList(pars, categoryId, industrialManagementId, uid, startSize, pageSize)
  387. if err != nil {
  388. br.Msg = "获取信息失败"
  389. br.ErrMsg = "获取帖子数据失败,Err:" + err.Error()
  390. return
  391. }
  392. lenList := len(list)
  393. for i := 0; i < lenList; i++ {
  394. item := list[i]
  395. list[i].Body, _ = services.GetReportContentTextSub(item.Body)
  396. //list[i].Abstract = html.UnescapeString(item.Abstract)
  397. list[i].Abstract, _ = services.GetReportContentTextSub(item.Abstract)
  398. }
  399. for k, v := range list {
  400. if v.Readnum == 0 && user.CreatedTime.Before(utils.StrTimeToTime(v.PublishDate)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(v.PublishDate)) {
  401. list[k].IsRed = true
  402. }
  403. }
  404. resp.List = list
  405. resp.Paging = page
  406. br.Ret = 200
  407. br.Success = true
  408. br.Msg = "获取成功"
  409. br.Data = resp
  410. }
  411. // @Title 置顶/取消置顶
  412. // @Description 置顶
  413. // @Param request body models.CygxIndustryTopRep true "type json string"
  414. // @Success 200
  415. // @router /top [post]
  416. func (this *ReportController) ArticleCollect() {
  417. br := new(models.BaseResponse).Init()
  418. defer func() {
  419. this.Data["json"] = br
  420. this.ServeJSON()
  421. }()
  422. user := this.User
  423. if user == nil {
  424. br.Msg = "请重新登录"
  425. br.Ret = 408
  426. return
  427. }
  428. uid := user.UserId
  429. var req models.CygxIndustryTopRep
  430. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  431. if err != nil {
  432. br.Msg = "参数解析异常!"
  433. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  434. return
  435. }
  436. industrialManagementId := req.IndustrialManagementId
  437. countIndustrial, err := models.GetIndustrialManagementCount(industrialManagementId)
  438. if err != nil {
  439. br.Msg = "获取数据失败!"
  440. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  441. return
  442. }
  443. if countIndustrial == 0 {
  444. br.Msg = "产业不存在!"
  445. br.ErrMsg = "产业ID不存在:" + strconv.Itoa(industrialManagementId)
  446. return
  447. }
  448. count, err := models.GetCygxIndustryTop(uid, industrialManagementId)
  449. if err != nil {
  450. br.Msg = "获取数据失败!"
  451. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  452. return
  453. }
  454. resp := new(models.ArticleCollectResp)
  455. if count <= 0 {
  456. item := new(models.CygxIndustryTop)
  457. item.IndustrialManagementId = req.IndustrialManagementId
  458. item.UserId = uid
  459. item.CreateTime = time.Now()
  460. _, err = models.AddCygxIndustryTop(item)
  461. if err != nil {
  462. br.Msg = "置顶失败"
  463. br.ErrMsg = "置顶失败,Err:" + err.Error()
  464. return
  465. }
  466. br.Msg = "置顶成功"
  467. resp.Status = 1
  468. } else {
  469. err = models.RemoveCygxIndustryTop(uid, industrialManagementId)
  470. if err != nil {
  471. br.Msg = "取消置顶失败"
  472. br.ErrMsg = "取消置顶失败,Err:" + err.Error()
  473. return
  474. }
  475. br.Msg = "已取消置顶"
  476. resp.Status = 2
  477. }
  478. br.Ret = 200
  479. br.Success = true
  480. br.Data = resp
  481. }
  482. // @Title 关注/取消关注
  483. // @Description 关注/取消关注 接口
  484. // @Param request body models.CygxIndustryFllowRep true "type json string"
  485. // @Success 200
  486. // @router /fllow [post]
  487. func (this *ReportController) Fllow() {
  488. br := new(models.BaseResponse).Init()
  489. defer func() {
  490. this.Data["json"] = br
  491. this.ServeJSON()
  492. }()
  493. user := this.User
  494. if user == nil {
  495. br.Msg = "请重新登录"
  496. br.Ret = 408
  497. return
  498. }
  499. uid := user.UserId
  500. var req models.CygxIndustryFllowRep
  501. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  502. if err != nil {
  503. br.Msg = "参数解析异常!"
  504. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  505. return
  506. }
  507. industrialManagementId := req.IndustrialManagementId
  508. var condition string
  509. countIndustrial, err := models.GetIndustrialManagementCount(industrialManagementId)
  510. if err != nil {
  511. br.Msg = "获取数据失败!"
  512. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  513. return
  514. }
  515. if countIndustrial == 0 {
  516. br.Msg = "产业不存在!"
  517. br.ErrMsg = "产业ID不存在:" + strconv.Itoa(industrialManagementId)
  518. return
  519. }
  520. count, err := models.GetCountCygxIndustryFllow(uid, industrialManagementId, condition)
  521. if err != nil {
  522. br.Msg = "获取数据失败!"
  523. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  524. return
  525. }
  526. resp := new(models.CygxIndustryFllowResp)
  527. if count == 0 {
  528. item := new(models.CygxIndustryFllow)
  529. item.IndustrialManagementId = industrialManagementId
  530. item.UserId = uid
  531. item.Email = user.Email
  532. item.Mobile = user.Mobile
  533. item.CompanyId = user.CompanyId
  534. item.CompanyName = user.CompanyName
  535. item.Type = 1
  536. item.CreateTime = time.Now()
  537. item.ModifyTime = time.Now()
  538. _, err = models.AddCygxIndustryFllow(item)
  539. if err != nil {
  540. br.Msg = "操作失败"
  541. br.ErrMsg = "操作失败,Err:" + err.Error()
  542. return
  543. }
  544. resp.GoFollow = true
  545. resp.Status = 1
  546. } else {
  547. var doType int
  548. condition = ` AND type = 1`
  549. count, err = models.GetCountCygxIndustryFllow(uid, industrialManagementId, condition)
  550. if err != nil {
  551. br.Msg = "操作失败!"
  552. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  553. return
  554. }
  555. if count == 1 {
  556. resp.Status = 2
  557. doType = 2
  558. } else {
  559. resp.Status = 1
  560. doType = 1
  561. }
  562. err = models.RemoveCygxIndustryFllow(uid, industrialManagementId, doType)
  563. if err != nil {
  564. br.Msg = "操作失败"
  565. br.ErrMsg = "取消关注失败,Err:" + err.Error()
  566. return
  567. }
  568. }
  569. br.Msg = "操作成功"
  570. br.Ret = 200
  571. br.Success = true
  572. br.Data = resp
  573. }
  574. // @Title 产业报告分类关联作者列表接口
  575. // @Description 获取产业报告分类关联作者列表接口
  576. // @Param ChartPermissionId query int true "分类ID"
  577. // @Param PageSize query int true "每页数据条数"
  578. // @Param CurrentIndex query int true "当前页页码,从1开始"
  579. // @Success 200 {object} models.CygxArticleDepartmentList
  580. // @router /industryListByDepartment [get]
  581. func (this *ReportController) IndustryListByDepartment() {
  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. uid := user.UserId
  594. fmt.Println(uid)
  595. pageSize, _ := this.GetInt("PageSize")
  596. currentIndex, _ := this.GetInt("CurrentIndex")
  597. chartPermissionId, _ := this.GetInt("ChartPermissionId")
  598. var startSize int
  599. var condition string
  600. condition = ` AND m.chart_permission_id =` + strconv.Itoa(chartPermissionId)
  601. if pageSize <= 0 {
  602. pageSize = utils.PageSize20
  603. }
  604. if currentIndex <= 0 {
  605. currentIndex = 1
  606. }
  607. startSize = paging.StartIndex(currentIndex, pageSize)
  608. total, err := models.GetArticleDepartmentCount(condition)
  609. page := paging.GetPaging(currentIndex, pageSize, total)
  610. //获取作者信息,并排序
  611. list, err := models.GetCygxArticleDepartmentList(startSize, pageSize, condition)
  612. if err != nil {
  613. br.Msg = "获取信息失败"
  614. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  615. return
  616. }
  617. for k, v := range list {
  618. list[k].List, err = models.GetIndustrialSubjectByDepartment(v.DepartmentId)
  619. if err != nil {
  620. br.Msg = "获取信息失败"
  621. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  622. return
  623. }
  624. if v.FollowNum > 0 {
  625. list[k].IsMyFollow = true
  626. }
  627. }
  628. resp := new(models.CygxArticleDepartmentList)
  629. resp.ListnNew, err = models.GetIndustrialSubjectByDepartmentNew(chartPermissionId)
  630. if err != nil {
  631. br.Msg = "获取信息失败"
  632. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  633. return
  634. }
  635. resp.List = list
  636. resp.Paging = page
  637. br.Ret = 200
  638. br.Success = true
  639. br.Msg = "获取成功"
  640. br.Data = resp
  641. }
  642. // @Title 关注作者/取消关注作者
  643. // @Description 关注作者/取消关注作者 接口
  644. // @Param request body models.CygxArticleDepartmentId true "type json string"
  645. // @Success 200
  646. // @router /fllowDepartment [post]
  647. func (this *ReportController) FllowDepartment() {
  648. br := new(models.BaseResponse).Init()
  649. defer func() {
  650. this.Data["json"] = br
  651. this.ServeJSON()
  652. }()
  653. user := this.User
  654. if user == nil {
  655. br.Msg = "请重新登录"
  656. br.Ret = 408
  657. return
  658. }
  659. uid := user.UserId
  660. var req models.CygxArticleDepartmentId
  661. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  662. if err != nil {
  663. br.Msg = "参数解析异常!"
  664. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  665. return
  666. }
  667. departmentId := req.DepartmentId
  668. var condition string
  669. countDepartment, err := models.GetDepartmentCount(departmentId)
  670. if err != nil {
  671. br.Msg = "获取数据失败!"
  672. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  673. return
  674. }
  675. if countDepartment == 0 {
  676. br.Msg = "作者不存在!"
  677. br.ErrMsg = "作者ID不存在:" + strconv.Itoa(departmentId)
  678. return
  679. }
  680. count, err := models.GetArticleDepartmentFollow(uid, departmentId, condition)
  681. if err != nil {
  682. br.Msg = "获取数据失败!"
  683. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  684. return
  685. }
  686. resp := new(models.CygxArticleDepartmentFollowResp)
  687. if count == 0 {
  688. item := new(models.CygxArticleDepartmentFollow)
  689. item.DepartmentId = departmentId
  690. item.UserId = uid
  691. item.Email = user.Email
  692. item.Mobile = user.Mobile
  693. item.CompanyId = user.CompanyId
  694. item.CompanyName = user.CompanyName
  695. item.Type = 1
  696. item.CreateTime = time.Now()
  697. item.ModifyTime = time.Now()
  698. _, err = models.AddArticleDepartmentFollow(item)
  699. if err != nil {
  700. br.Msg = "操作失败"
  701. br.ErrMsg = "操作失败,Err:" + err.Error()
  702. return
  703. }
  704. resp.Status = 1
  705. resp.GoFollow = true
  706. } else {
  707. var doType int
  708. condition = ` AND type = 1`
  709. count, err = models.GetArticleDepartmentFollow(uid, departmentId, condition)
  710. if err != nil {
  711. br.Msg = "操作失败!"
  712. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  713. return
  714. }
  715. if count == 1 {
  716. resp.Status = 2
  717. doType = 2
  718. } else {
  719. resp.Status = 1
  720. doType = 1
  721. }
  722. err = models.RemoveArticleDepartmentFollow(uid, departmentId, doType)
  723. if err != nil {
  724. br.Msg = "操作失败"
  725. br.ErrMsg = "取消关注失败,Err:" + err.Error()
  726. return
  727. }
  728. }
  729. br.Msg = "操作成功"
  730. br.Ret = 200
  731. br.Success = true
  732. br.Data = resp
  733. }
  734. // @Title 研选文章列表接口
  735. // @Description 获取研选文章列表接口
  736. // @Param PageSize query int true "每页数据条数"
  737. // @Param CurrentIndex query int true "当前页页码,从1开始"
  738. // @Param DepartmentId query int true "作者ID"
  739. // @Param IndustrialManagementId query int true "产业ID"
  740. // @Success 200 {object} models.ReportArticleWhichIndustrialRepList
  741. // @router /industry/reportList [get]
  742. func (this *ReportController) ReportList() {
  743. br := new(models.BaseResponse).Init()
  744. defer func() {
  745. this.Data["json"] = br
  746. this.ServeJSON()
  747. }()
  748. user := this.User
  749. if user == nil {
  750. br.Msg = "请重新登录"
  751. br.Ret = 408
  752. return
  753. }
  754. uid := user.UserId
  755. pageSize, _ := this.GetInt("PageSize")
  756. currentIndex, _ := this.GetInt("CurrentIndex")
  757. departmentId, _ := this.GetInt("DepartmentId")
  758. industrialManagementId, _ := this.GetInt("IndustrialManagementId")
  759. var condition string
  760. var startSize int
  761. if pageSize <= 0 {
  762. pageSize = utils.PageSize20
  763. }
  764. if currentIndex <= 0 {
  765. currentIndex = 1
  766. }
  767. startSize = paging.StartIndex(currentIndex, pageSize)
  768. var pars []interface{}
  769. var total int
  770. resp := new(models.ReportArticleWhichIndustrialRepList)
  771. page := paging.GetPaging(currentIndex, pageSize, total)
  772. if departmentId > 0 {
  773. condition += ` AND art.department_id = ` + strconv.Itoa(departmentId)
  774. }
  775. if industrialManagementId > 0 {
  776. condition += ` AND m.industrial_management_id = ` + strconv.Itoa(industrialManagementId)
  777. }
  778. total, err := models.GetWhichDepartmentCount(condition)
  779. if err != nil {
  780. br.Msg = "获取信息失败"
  781. br.ErrMsg = "获取帖子总数失败,Err:" + err.Error()
  782. return
  783. }
  784. page = paging.GetPaging(currentIndex, pageSize, total)
  785. condition += ` ORDER BY art.publish_date DESC`
  786. list, err := models.IndustrialToArticleWhichDepartment(condition, pars, uid, startSize, pageSize)
  787. if err != nil {
  788. br.Msg = "获取失败"
  789. br.ErrMsg = "获取失败,Err:" + err.Error()
  790. return
  791. }
  792. for k, v := range list {
  793. if v.Readnum == 0 {
  794. list[k].IsRed = true
  795. }
  796. resp.NickName = v.NickName
  797. resp.IndustryName = v.IndustryName
  798. }
  799. resp.List = list
  800. resp.Paging = page
  801. br.Ret = 200
  802. br.Success = true
  803. br.Msg = "获取成功"
  804. br.Data = resp
  805. }