report.go 30 KB

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