report.go 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945
  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.GetArticleDepartmentFollowByUid(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. artList[k2].IndustryName = industryName + "-" + subjectNamesNew
  685. }
  686. list[k].List = artList
  687. if v.FollowNum > 0 {
  688. list[k].IsMyFollow = true
  689. }
  690. }
  691. resp.ListnNew, err = models.GetIndustrialSubjectByDepartmentNew(chartPermissionId)
  692. if err != nil {
  693. br.Msg = "获取信息失败"
  694. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  695. return
  696. }
  697. resp.List = list
  698. resp.Paging = page
  699. br.Ret = 200
  700. br.Success = true
  701. br.Msg = "获取成功"
  702. br.Data = resp
  703. }
  704. // @Title 关注作者/取消关注作者
  705. // @Description 关注作者/取消关注作者 接口
  706. // @Param request body models.CygxArticleDepartmentId true "type json string"
  707. // @Success 200
  708. // @router /fllowDepartment [post]
  709. func (this *ReportController) FllowDepartment() {
  710. br := new(models.BaseResponse).Init()
  711. defer func() {
  712. this.Data["json"] = br
  713. this.ServeJSON()
  714. }()
  715. user := this.User
  716. if user == nil {
  717. br.Msg = "请重新登录"
  718. br.Ret = 408
  719. return
  720. }
  721. uid := user.UserId
  722. var req models.CygxArticleDepartmentId
  723. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  724. if err != nil {
  725. br.Msg = "参数解析异常!"
  726. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  727. return
  728. }
  729. departmentId := req.DepartmentId
  730. var condition string
  731. countDepartment, err := models.GetDepartmentCount(departmentId)
  732. if err != nil {
  733. br.Msg = "获取数据失败!"
  734. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  735. return
  736. }
  737. if countDepartment == 0 {
  738. br.Msg = "作者不存在!"
  739. br.ErrMsg = "作者ID不存在:" + strconv.Itoa(departmentId)
  740. return
  741. }
  742. countUser, err := models.GetArticleDepartmentFollowByUid(uid)
  743. count, err := models.GetArticleDepartmentFollow(uid, departmentId, condition)
  744. if err != nil {
  745. br.Msg = "获取数据失败!"
  746. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  747. return
  748. }
  749. resp := new(models.CygxArticleDepartmentFollowResp)
  750. if countUser == 0 {
  751. resp.GoFollow = true
  752. }
  753. if count == 0 {
  754. item := new(models.CygxArticleDepartmentFollow)
  755. item.DepartmentId = departmentId
  756. item.UserId = uid
  757. item.Email = user.Email
  758. item.Mobile = user.Mobile
  759. item.CompanyId = user.CompanyId
  760. item.CompanyName = user.CompanyName
  761. item.Type = 1
  762. item.CreateTime = time.Now()
  763. item.ModifyTime = time.Now()
  764. _, err = models.AddArticleDepartmentFollow(item)
  765. if err != nil {
  766. br.Msg = "操作失败"
  767. br.ErrMsg = "操作失败,Err:" + err.Error()
  768. return
  769. }
  770. resp.Status = 1
  771. } else {
  772. var doType int
  773. condition = ` AND type = 1`
  774. count, err = models.GetArticleDepartmentFollow(uid, departmentId, condition)
  775. if err != nil {
  776. br.Msg = "操作失败!"
  777. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  778. return
  779. }
  780. if count == 1 {
  781. resp.Status = 2
  782. doType = 2
  783. } else {
  784. resp.Status = 1
  785. doType = 1
  786. }
  787. err = models.RemoveArticleDepartmentFollow(uid, departmentId, doType)
  788. if err != nil {
  789. br.Msg = "操作失败"
  790. br.ErrMsg = "取消关注失败,Err:" + err.Error()
  791. return
  792. }
  793. }
  794. br.Msg = "操作成功"
  795. br.Ret = 200
  796. br.Success = true
  797. br.Data = resp
  798. }
  799. // @Title 研选文章列表接口
  800. // @Description 获取研选文章列表接口
  801. // @Param PageSize query int true "每页数据条数"
  802. // @Param CurrentIndex query int true "当前页页码,从1开始"
  803. // @Param ArticleId query int true "文章id"
  804. // @Param DepartmentId query int true "作者ID"
  805. // @Param IndustrialManagementId query int true "产业ID"
  806. // @Success 200 {object} models.ReportArticleWhichIndustrialRepList
  807. // @router /industry/reportList [get]
  808. func (this *ReportController) ReportList() {
  809. br := new(models.BaseResponse).Init()
  810. defer func() {
  811. this.Data["json"] = br
  812. this.ServeJSON()
  813. }()
  814. user := this.User
  815. if user == nil {
  816. br.Msg = "请重新登录"
  817. br.Ret = 408
  818. return
  819. }
  820. uid := user.UserId
  821. pageSize, _ := this.GetInt("PageSize")
  822. currentIndex, _ := this.GetInt("CurrentIndex")
  823. departmentId, _ := this.GetInt("DepartmentId")
  824. industrialManagementId, _ := this.GetInt("IndustrialManagementId")
  825. articleId, _ := this.GetInt("ArticleId")
  826. var condition string
  827. var startSize int
  828. if pageSize <= 0 {
  829. pageSize = utils.PageSize20
  830. }
  831. if currentIndex <= 0 {
  832. currentIndex = 1
  833. }
  834. startSize = paging.StartIndex(currentIndex, pageSize)
  835. var pars []interface{}
  836. var total int
  837. resp := new(models.ReportArticleWhichIndustrialRepList)
  838. page := paging.GetPaging(currentIndex, pageSize, total)
  839. userType, _, err := services.GetUserType(user.CompanyId)
  840. if err != nil {
  841. br.Msg = "获取信息失败"
  842. br.ErrMsg = "获取用户信息失败,Err:" + err.Error()
  843. return
  844. }
  845. if userType == 1 {
  846. resp.Paging = page
  847. br.Ret = 200
  848. br.Success = true
  849. br.Msg = "获取成功"
  850. br.Data = resp
  851. return
  852. }
  853. resp.HaveResearch = true
  854. if departmentId > 0 {
  855. condition += ` AND art.department_id = ` + strconv.Itoa(departmentId)
  856. }
  857. if industrialManagementId > 0 {
  858. condition += ` AND m.industrial_management_id = ` + strconv.Itoa(industrialManagementId)
  859. }
  860. if articleId > 0 {
  861. detail, err := models.GetArticleDetailById(articleId)
  862. if err != nil {
  863. br.Msg = "获取信息失败"
  864. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  865. return
  866. }
  867. condition += ` AND art.subject_ids = '` + detail.SubjectIds + `'`
  868. }
  869. total, err = models.GetWhichDepartmentCount(condition)
  870. if err != nil {
  871. br.Msg = "获取信息失败"
  872. br.ErrMsg = "获取帖子总数失败,Err:" + err.Error()
  873. return
  874. }
  875. page = paging.GetPaging(currentIndex, pageSize, total)
  876. condition += ` AND art.is_report =1 GROUP BY art.article_id ORDER BY art.publish_date DESC`
  877. list, err := models.IndustrialToArticleWhichDepartment(condition, pars, uid, startSize, pageSize)
  878. if err != nil {
  879. br.Msg = "获取失败"
  880. br.ErrMsg = "获取失败,Err:" + err.Error()
  881. return
  882. }
  883. for k, v := range list {
  884. if v.Readnum == 0 {
  885. list[k].IsRed = true
  886. }
  887. list[k].IsResearch = true
  888. subjectNames, err := models.GetSubjectNames(v.ArticleId)
  889. if err != nil {
  890. br.Msg = "获取失败" + strconv.Itoa(v.ArticleId)
  891. br.ErrMsg = "获取失败,Err:" + err.Error()
  892. return
  893. }
  894. var subjectNamesNew string
  895. if len(subjectNames) > 0 {
  896. slice := strings.Split(subjectNames, "/")
  897. for k3, v3 := range slice {
  898. if k3 < 4 {
  899. subjectNamesNew += v3 + "/"
  900. }
  901. }
  902. }
  903. industryName, err := models.GetIndustrialNames(v.ArticleId)
  904. if err != nil && err.Error() != utils.ErrNoRow() {
  905. br.Msg = "获取失败" + strconv.Itoa(v.ArticleId)
  906. br.ErrMsg = "获取失败,Err:" + err.Error()
  907. return
  908. }
  909. subjectNamesNew = strings.TrimRight(subjectNamesNew, "/")
  910. list[k].SubjectName = subjectNamesNew
  911. list[k].IndustryName = industryName + "-" + subjectNamesNew
  912. resp.IndustryName = industryName
  913. }
  914. resp.List = list
  915. resp.Paging = page
  916. br.Ret = 200
  917. br.Success = true
  918. br.Msg = "获取成功"
  919. br.Data = resp
  920. }