report.go 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495
  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. ChartPermissionId, _ := this.GetInt("ChartPermissionId")
  92. orderColumn := this.GetString("OrderColumn")
  93. isNewLabel := this.GetString("IsNewLabel")
  94. isDeepLabel := this.GetString("IsDeepLabel")
  95. keyWord := this.GetString("KeyWord")
  96. pageSize, _ := this.GetInt("PageSize")
  97. currentIndex, _ := this.GetInt("CurrentIndex")
  98. var orderSrt string
  99. var condition string
  100. var startSize int
  101. resp := new(models.IndustrialManagementList)
  102. if pageSize <= 0 {
  103. pageSize = utils.PageSize20
  104. }
  105. if currentIndex <= 0 {
  106. currentIndex = 1
  107. }
  108. startSize = paging.StartIndex(currentIndex, pageSize)
  109. if isNewLabel == "1" {
  110. condition += ` AND is_new_label = ` + isNewLabel
  111. }
  112. if isDeepLabel == "1" {
  113. condition += ` AND is_deep_label = ` + isDeepLabel
  114. }
  115. if keyWord != "" {
  116. keyWordArr, err := services.GetIndustryMapNameSliceV2(keyWord)
  117. if err != nil {
  118. br.Msg = "获取信息失败"
  119. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  120. return
  121. }
  122. var conditionkeyWord string
  123. conditionkeyWord += ` subject_names LIKE '%` + keyWord + `%'`
  124. keyWordArr = services.RemoveDuplicatesAndEmpty(keyWordArr)
  125. keyWordLen := len(keyWordArr)
  126. if keyWordLen <= 0 {
  127. keyWordArr = append(keyWordArr, keyWord)
  128. keyWordLen = len(keyWordArr)
  129. }
  130. for _, v := range keyWordArr {
  131. conditionkeyWord += ` OR subject_names LIKE '%` + v + `%'`
  132. }
  133. industrialManagementIds, err := models.GetIndustrialManagementIdsBykeyWord(conditionkeyWord)
  134. if err != nil {
  135. br.Msg = "获取信息失败"
  136. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  137. return
  138. }
  139. if industrialManagementIds == "" {
  140. br.Ret = 200
  141. br.Success = true
  142. br.Msg = "获取成功"
  143. br.Data = resp
  144. return
  145. }
  146. condition += ` AND man.industrial_management_id IN (` + industrialManagementIds + `)`
  147. }
  148. var sqlChartPermissionId string
  149. if ChartPermissionId > 0 {
  150. sqlChartPermissionId += ` AND man_g.industrial_management_id IN ( SELECT industrial_management_id FROM cygx_industrial_management WHERE chart_permission_id = ` + strconv.Itoa(ChartPermissionId) + ` ) `
  151. condition += ` AND man.chart_permission_id IN (` + strconv.Itoa(ChartPermissionId) + `)`
  152. }
  153. var total int
  154. var list []*models.IndustrialManagement
  155. totalTopList, errTop := models.GetIndustrialManagemenCountTop(sqlChartPermissionId, uid, condition)
  156. totalTop := len(totalTopList)
  157. if errTop != nil {
  158. br.Msg = "获取信息失败"
  159. br.ErrMsg = "获取品种信息失败,Err:" + errTop.Error()
  160. return
  161. }
  162. totalNoTopList, errNoTop := models.GetIndustrialManagemenCountNoTop(sqlChartPermissionId, uid, condition)
  163. totalNoTop := len(totalNoTopList)
  164. if errNoTop != nil {
  165. br.Msg = "获取信息失败"
  166. br.ErrMsg = "获取品种信息失败,Err:" + errNoTop.Error()
  167. return
  168. }
  169. total = totalTop + totalNoTop
  170. page := paging.GetPaging(currentIndex, pageSize, total)
  171. if orderColumn == "" {
  172. orderColumn = "NewTime"
  173. }
  174. //if ChartPermissionId < 1 {
  175. // br.Msg = "请输入分类ID"
  176. // return
  177. //}
  178. if orderColumn == "NewTime" {
  179. orderSrt = "update_time DESC"
  180. } else {
  181. orderSrt = "man.recommended_index DESC,update_time DESC"
  182. }
  183. fmt.Println(orderSrt)
  184. //全部都是置顶
  185. if totalTop >= currentIndex*pageSize {
  186. listTop, err := models.GetIndustrialManagementTopAll(uid, condition, startSize, pageSize)
  187. for k, _ := range listTop {
  188. listTop[k].IsTop = true
  189. }
  190. if err != nil {
  191. br.Msg = "获取信息失败"
  192. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  193. return
  194. }
  195. list = listTop
  196. } else if totalTop < (currentIndex-1)*pageSize { //全部都是不置顶
  197. listNoTop, err := models.GetIndustrialManagementAll(uid, condition, orderSrt, startSize-totalTop, pageSize)
  198. if err != nil {
  199. br.Msg = "获取信息失败"
  200. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  201. return
  202. }
  203. list = listNoTop
  204. } else { //部分置顶,部分不置顶
  205. listTop, err := models.GetIndustrialManagementTopAll(uid, condition, startSize, pageSize)
  206. if err != nil {
  207. br.Msg = "获取信息失败"
  208. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  209. return
  210. }
  211. for k, _ := range listTop {
  212. listTop[k].IsTop = true
  213. }
  214. listNoTop, err := models.GetIndustrialManagementAll(uid, condition, orderSrt, 0, pageSize-len(listTop))
  215. if err != nil {
  216. br.Msg = "获取信息失败"
  217. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  218. return
  219. }
  220. list = append(listTop, listNoTop...)
  221. }
  222. for k, v := range list {
  223. //var analystStr string
  224. //analystList, err := models.GetIndustrialAnalystAll(v.IndustrialManagementId)
  225. //if err != nil {
  226. // br.Msg = "获取信息失败"
  227. // br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  228. // return
  229. //}
  230. industrialSubjectList, err := models.GetIndustrialSubjectAll(v.IndustrialManagementId)
  231. if err != nil {
  232. br.Msg = "获取信息失败"
  233. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  234. return
  235. }
  236. list[k].IndustrialSubjectList = industrialSubjectList
  237. //if len(analystList) > 0 {
  238. // for _, v2 := range analystList {
  239. // analystStr += v2.AnalystName + "/"
  240. // }
  241. // analystStr = strings.TrimRight(analystStr, "/")
  242. //}
  243. //list[k].Analyst = analystStr
  244. list[k].LayoutTime = utils.TimeRemoveHms(v.LayoutTime)
  245. newArtinfo, err := models.GetIndustrialNewArticleDetail(v.IndustrialManagementId)
  246. if err != nil {
  247. br.Msg = "获取信息失败"
  248. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  249. return
  250. }
  251. list[k].UpdateTime = utils.TimeRemoveHms(newArtinfo.PublishDate)
  252. recordCount, err := models.GetUserToArticleCount(uid, newArtinfo.ArticleId)
  253. if err != nil && err.Error() != utils.ErrNoRow() {
  254. br.Msg = "获取信息失败"
  255. br.ErrMsg = "获取信息失败,Err:" + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(newArtinfo.ArticleId)
  256. return
  257. }
  258. //
  259. if recordCount == 0 && user.CreatedTime.Before(utils.StrTimeToTime(newArtinfo.PublishDate)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(newArtinfo.PublishDate)) {
  260. list[k].IsRed = true
  261. }
  262. }
  263. resp.List = list
  264. resp.Paging = page
  265. br.Ret = 200
  266. br.Success = true
  267. br.Msg = "获取成功"
  268. br.Data = resp
  269. }
  270. // @Title 产业下所关联的文章分类列表
  271. // @Description 产业下所关联的文章分类列表接口
  272. // @Param IndustrialManagementId query int true "产业ID"
  273. // @Success 200 {object} models.IndustrialToArticleCategoryListRep
  274. // @router /toArticleCategoryList [get]
  275. func (this *ReportController) ArticleCategoryList() {
  276. br := new(models.BaseResponse).Init()
  277. defer func() {
  278. this.Data["json"] = br
  279. this.ServeJSON()
  280. }()
  281. user := this.User
  282. if user == nil {
  283. br.Msg = "请重新登录"
  284. br.Ret = 408
  285. return
  286. }
  287. uid := user.UserId
  288. industrialManagementId, _ := this.GetInt("IndustrialManagementId")
  289. if industrialManagementId < 1 {
  290. br.Msg = "请输入分类ID"
  291. return
  292. }
  293. list, err := models.IndustrialToArticleCategory(industrialManagementId)
  294. if err != nil {
  295. br.Msg = "获取信息失败"
  296. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  297. return
  298. }
  299. for k, v := range list {
  300. recordCount, err := models.IndustrialUserRecordArticleCount(uid, industrialManagementId, v.CategoryId)
  301. if err != nil && err.Error() != utils.ErrNoRow() {
  302. br.Msg = "获取信息失败"
  303. br.ErrMsg = "判断是否已申请过试用失败,Err:" + err.Error()
  304. return
  305. }
  306. Newdetail, err := models.GetNewIndustrialUserRecordArticle(industrialManagementId, v.CategoryId)
  307. if err != nil {
  308. br.Msg = "获取信息失败"
  309. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  310. return
  311. }
  312. if recordCount == 0 && user.CreatedTime.Before(utils.StrTimeToTime(Newdetail.PublishDate)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(Newdetail.PublishDate)) {
  313. list[k].IsRed = true
  314. }
  315. }
  316. detail, err := models.GetIndustrialManagementDetail(industrialManagementId)
  317. if err != nil {
  318. br.Msg = "获取信息失败"
  319. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  320. return
  321. }
  322. resp := new(models.IndustrialToArticleCategoryListRep)
  323. resp.List = list
  324. resp.LayoutTime = utils.TimeRemoveHms(detail.LayoutTime)
  325. resp.IndustryName = detail.IndustryName
  326. resp.IndustrialManagementId = industrialManagementId
  327. br.Ret = 200
  328. br.Success = true
  329. br.Msg = "获取成功"
  330. br.Data = resp
  331. }
  332. // @Title 产业文章列表接口
  333. // @Description 获取产业文章列表接口
  334. // @Param PageSize query int true "每页数据条数"
  335. // @Param CurrentIndex query int true "当前页页码,从1开始"
  336. // @Param CategoryId query int true "分类ID"
  337. // @Param IndustrialManagementId query int true "产业ID"
  338. // @Success 200 {object} models.TacticsListResp
  339. // @router /industry/ArticleList [get]
  340. func (this *ReportController) List() {
  341. br := new(models.BaseResponse).Init()
  342. defer func() {
  343. this.Data["json"] = br
  344. this.ServeJSON()
  345. }()
  346. user := this.User
  347. if user == nil {
  348. br.Msg = "请重新登录"
  349. br.Ret = 408
  350. return
  351. }
  352. uid := user.UserId
  353. pageSize, _ := this.GetInt("PageSize")
  354. currentIndex, _ := this.GetInt("CurrentIndex")
  355. categoryId, _ := this.GetInt("CategoryId")
  356. industrialManagementId, _ := this.GetInt("IndustrialManagementId")
  357. var startSize int
  358. if pageSize <= 0 {
  359. pageSize = utils.PageSize20
  360. }
  361. if currentIndex <= 0 {
  362. currentIndex = 1
  363. }
  364. startSize = paging.StartIndex(currentIndex, pageSize)
  365. var pars []interface{}
  366. var total int
  367. resp := new(models.TacticsListResp)
  368. page := paging.GetPaging(currentIndex, pageSize, total)
  369. if categoryId < 1 {
  370. br.Msg = "请输入分类ID"
  371. return
  372. }
  373. if industrialManagementId < 1 {
  374. br.Msg = "请输入产业ID"
  375. return
  376. }
  377. total, err := models.GetReportIndustrialCount(categoryId, industrialManagementId)
  378. if err != nil {
  379. br.Msg = "获取信息失败"
  380. br.ErrMsg = "获取帖子总数失败,Err:" + err.Error()
  381. return
  382. }
  383. page = paging.GetPaging(currentIndex, pageSize, total)
  384. list, err := models.GetReportIndustrialList(pars, categoryId, industrialManagementId, uid, startSize, pageSize)
  385. if err != nil {
  386. br.Msg = "获取信息失败"
  387. br.ErrMsg = "获取帖子数据失败,Err:" + err.Error()
  388. return
  389. }
  390. lenList := len(list)
  391. for i := 0; i < lenList; i++ {
  392. item := list[i]
  393. list[i].Body, _ = services.GetReportContentTextSub(item.Body)
  394. //list[i].Abstract = html.UnescapeString(item.Abstract)
  395. list[i].Abstract, _ = services.GetReportContentTextSub(item.Abstract)
  396. }
  397. for k, v := range list {
  398. if v.Readnum == 0 && user.CreatedTime.Before(utils.StrTimeToTime(v.PublishDate)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(v.PublishDate)) {
  399. list[k].IsRed = true
  400. }
  401. }
  402. resp.List = list
  403. resp.Paging = page
  404. br.Ret = 200
  405. br.Success = true
  406. br.Msg = "获取成功"
  407. br.Data = resp
  408. }
  409. // @Title 置顶/取消置顶
  410. // @Description 置顶
  411. // @Param request body models.CygxIndustryTopRep true "type json string"
  412. // @Success 200
  413. // @router /top [post]
  414. func (this *ReportController) ArticleCollect() {
  415. br := new(models.BaseResponse).Init()
  416. defer func() {
  417. this.Data["json"] = br
  418. this.ServeJSON()
  419. }()
  420. user := this.User
  421. if user == nil {
  422. br.Msg = "请重新登录"
  423. br.Ret = 408
  424. return
  425. }
  426. uid := user.UserId
  427. var req models.CygxIndustryTopRep
  428. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  429. if err != nil {
  430. br.Msg = "参数解析异常!"
  431. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  432. return
  433. }
  434. industrialManagementId := req.IndustrialManagementId
  435. fmt.Println(industrialManagementId)
  436. countIndustrial, err := models.GetIndustrialManagementCount(industrialManagementId)
  437. if err != nil {
  438. br.Msg = "获取数据失败!"
  439. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  440. return
  441. }
  442. if countIndustrial == 0 {
  443. br.Msg = "产业不存在!"
  444. br.ErrMsg = "产业ID不存在:" + strconv.Itoa(industrialManagementId)
  445. return
  446. }
  447. count, err := models.GetCygxIndustryTop(uid, industrialManagementId)
  448. if err != nil {
  449. br.Msg = "获取数据失败!"
  450. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  451. return
  452. }
  453. resp := new(models.ArticleCollectResp)
  454. if count <= 0 {
  455. item := new(models.CygxIndustryTop)
  456. item.IndustrialManagementId = req.IndustrialManagementId
  457. item.UserId = uid
  458. item.CreateTime = time.Now()
  459. _, err = models.AddCygxIndustryTop(item)
  460. if err != nil {
  461. br.Msg = "置顶失败"
  462. br.ErrMsg = "置顶失败,Err:" + err.Error()
  463. return
  464. }
  465. br.Msg = "置顶成功"
  466. resp.Status = 1
  467. } else {
  468. err = models.RemoveCygxIndustryTop(uid, industrialManagementId)
  469. if err != nil {
  470. br.Msg = "取消置顶失败"
  471. br.ErrMsg = "取消置顶失败,Err:" + err.Error()
  472. return
  473. }
  474. br.Msg = "已取消置顶"
  475. resp.Status = 2
  476. }
  477. br.Ret = 200
  478. br.Success = true
  479. br.Data = resp
  480. }