report.go 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380
  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(uid, 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. if v.Readnum == 0 {
  52. list[k].IsRed = true
  53. }
  54. }
  55. resp := new(models.TradeReportMappingResp)
  56. resp.List = list
  57. br.Ret = 200
  58. br.Success = true
  59. br.Msg = "获取成功"
  60. br.Data = resp
  61. }
  62. // @Title 产业报告分类列表接口
  63. // @Description 获取产业报告分类列表接口
  64. // @Param ChartPermissionId query int true "分类ID"
  65. // @Param OrderColumn query int true "排序字段 ,NewTime最近更新 ,Recommend弘则推荐"
  66. // @Success 200 {object} models.IndustrialManagementList
  67. // @router /home/industryList [get]
  68. func (this *ReportController) IndustryList() {
  69. br := new(models.BaseResponse).Init()
  70. defer func() {
  71. this.Data["json"] = br
  72. this.ServeJSON()
  73. }()
  74. user := this.User
  75. if user == nil {
  76. br.Msg = "请重新登录"
  77. br.Ret = 408
  78. return
  79. }
  80. uid := user.UserId
  81. var orderSrt string
  82. ChartPermissionId, _ := this.GetInt("ChartPermissionId")
  83. orderColumn := this.GetString("OrderColumn")
  84. if orderColumn == " " {
  85. orderColumn = "NewTime"
  86. }
  87. if ChartPermissionId < 1 {
  88. br.Msg = "请输入分类ID"
  89. return
  90. }
  91. listTop, err := models.GetIndustrialManagementTopAll(ChartPermissionId, uid)
  92. if err != nil {
  93. br.Msg = "获取信息失败"
  94. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  95. return
  96. }
  97. fmt.Println(len(listTop))
  98. for k, _ := range listTop {
  99. listTop[k].IsTop = true
  100. }
  101. if orderColumn == "NewTime" {
  102. orderSrt = "art.publish_date DESC"
  103. } else {
  104. orderSrt = "man.recommended_index DESC"
  105. }
  106. list, err := models.GetIndustrialManagementAll(ChartPermissionId, uid, orderSrt)
  107. if err != nil {
  108. br.Msg = "获取信息失败"
  109. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  110. return
  111. }
  112. list = append(listTop, list...)
  113. for k, v := range list {
  114. var analystStr string
  115. analystList, err := models.GetIndustrialAnalystAll(v.IndustrialManagementId)
  116. if err != nil {
  117. br.Msg = "获取信息失败"
  118. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  119. return
  120. }
  121. industrialSubjectList, err := models.GetIndustrialSubjectAll(v.IndustrialManagementId)
  122. if err != nil {
  123. br.Msg = "获取信息失败"
  124. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  125. return
  126. }
  127. list[k].IndustrialSubjectList = industrialSubjectList
  128. if len(analystList) > 0 {
  129. for _, v2 := range analystList {
  130. analystStr += v2.AnalystName + "/"
  131. }
  132. analystStr = strings.TrimRight(analystStr, "/")
  133. }
  134. list[k].Analyst = analystStr
  135. list[k].LayoutTime = utils.TimeRemoveHms(v.LayoutTime)
  136. newArtinfo, err := models.GetIndustrialNewArticleDetail(v.IndustrialManagementId)
  137. if err != nil {
  138. br.Msg = "获取信息失败"
  139. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  140. return
  141. }
  142. list[k].UpdateTime = utils.TimeRemoveHms(newArtinfo.PublishDate)
  143. recordCount, err := models.GetUserToArticleCount(uid, newArtinfo.ArticleId)
  144. if err != nil && err.Error() != utils.ErrNoRow() {
  145. br.Msg = "获取信息失败"
  146. br.ErrMsg = "获取信息失败,Err:" + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(newArtinfo.ArticleId)
  147. return
  148. }
  149. if recordCount == 0 {
  150. list[k].IsRed = true
  151. }
  152. }
  153. resp := new(models.IndustrialManagementList)
  154. resp.List = list
  155. br.Ret = 200
  156. br.Success = true
  157. br.Msg = "获取成功"
  158. br.Data = resp
  159. }
  160. // @Title 产业下所关联的文章分类列表
  161. // @Description 产业下所关联的文章分类列表接口
  162. // @Param IndustrialManagementId query int true "产业ID"
  163. // @Success 200 {object} models.IndustrialToArticleCategoryListRep
  164. // @router /toArticleCategoryList [get]
  165. func (this *ReportController) ArticleCategoryList() {
  166. br := new(models.BaseResponse).Init()
  167. defer func() {
  168. this.Data["json"] = br
  169. this.ServeJSON()
  170. }()
  171. user := this.User
  172. if user == nil {
  173. br.Msg = "请重新登录"
  174. br.Ret = 408
  175. return
  176. }
  177. uid := user.UserId
  178. industrialManagementId, _ := this.GetInt("IndustrialManagementId")
  179. if industrialManagementId < 1 {
  180. br.Msg = "请输入分类ID"
  181. return
  182. }
  183. list, err := models.IndustrialToArticleCategory(industrialManagementId)
  184. if err != nil {
  185. br.Msg = "获取信息失败"
  186. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  187. return
  188. }
  189. for k, v := range list {
  190. recordCount, err := models.IndustrialUserRecordArticleCount(uid, industrialManagementId, v.CategoryId)
  191. if err != nil && err.Error() != utils.ErrNoRow() {
  192. br.Msg = "获取信息失败"
  193. br.ErrMsg = "判断是否已申请过试用失败,Err:" + err.Error()
  194. return
  195. }
  196. if recordCount == 0 {
  197. list[k].IsRed = true
  198. }
  199. }
  200. detail, err := models.GetIndustrialManagementDetail(industrialManagementId)
  201. if err != nil {
  202. br.Msg = "获取信息失败"
  203. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  204. return
  205. }
  206. resp := new(models.IndustrialToArticleCategoryListRep)
  207. resp.List = list
  208. resp.LayoutTime = utils.TimeRemoveHms(detail.LayoutTime)
  209. resp.IndustryName = detail.IndustryName
  210. resp.IndustrialManagementId = industrialManagementId
  211. br.Ret = 200
  212. br.Success = true
  213. br.Msg = "获取成功"
  214. br.Data = resp
  215. }
  216. // @Title 产业文章列表接口
  217. // @Description 获取产业文章列表接口
  218. // @Param PageSize query int true "每页数据条数"
  219. // @Param CurrentIndex query int true "当前页页码,从1开始"
  220. // @Param CategoryId query int true "分类ID"
  221. // @Param IndustrialManagementId query int true "产业ID"
  222. // @Success 200 {object} models.TacticsListResp
  223. // @router /industry/ArticleList [get]
  224. func (this *ReportController) List() {
  225. br := new(models.BaseResponse).Init()
  226. defer func() {
  227. this.Data["json"] = br
  228. this.ServeJSON()
  229. }()
  230. user := this.User
  231. if user == nil {
  232. br.Msg = "请重新登录"
  233. br.Ret = 408
  234. return
  235. }
  236. uid := user.UserId
  237. pageSize, _ := this.GetInt("PageSize")
  238. currentIndex, _ := this.GetInt("CurrentIndex")
  239. categoryId, _ := this.GetInt("CategoryId")
  240. industrialManagementId, _ := this.GetInt("IndustrialManagementId")
  241. var startSize int
  242. if pageSize <= 0 {
  243. pageSize = utils.PageSize20
  244. }
  245. if currentIndex <= 0 {
  246. currentIndex = 1
  247. }
  248. startSize = paging.StartIndex(currentIndex, pageSize)
  249. var pars []interface{}
  250. var total int
  251. resp := new(models.TacticsListResp)
  252. page := paging.GetPaging(currentIndex, pageSize, total)
  253. if categoryId < 1 {
  254. br.Msg = "请输入分类ID"
  255. return
  256. }
  257. if industrialManagementId < 1 {
  258. br.Msg = "请输入产业ID"
  259. return
  260. }
  261. total, err := models.GetReportIndustrialCount(categoryId, industrialManagementId)
  262. if err != nil {
  263. br.Msg = "获取信息失败"
  264. br.ErrMsg = "获取帖子总数失败,Err:" + err.Error()
  265. return
  266. }
  267. page = paging.GetPaging(currentIndex, pageSize, total)
  268. list, err := models.GetReportIndustrialList(pars, categoryId, industrialManagementId, uid, startSize, pageSize)
  269. if err != nil {
  270. br.Msg = "获取信息失败"
  271. br.ErrMsg = "获取帖子数据失败,Err:" + err.Error()
  272. return
  273. }
  274. lenList := len(list)
  275. for i := 0; i < lenList; i++ {
  276. item := list[i]
  277. list[i].Body, _ = services.GetReportContentTextSub(item.Body)
  278. //list[i].Abstract = html.UnescapeString(item.Abstract)
  279. list[i].Abstract, _ = services.GetReportContentTextSub(item.Abstract)
  280. }
  281. for k, v := range list {
  282. if v.Readnum == 0 {
  283. list[k].IsRed = true
  284. }
  285. }
  286. resp.List = list
  287. resp.Paging = page
  288. br.Ret = 200
  289. br.Success = true
  290. br.Msg = "获取成功"
  291. br.Data = resp
  292. }
  293. // @Title 置顶/取消置顶
  294. // @Description 置顶
  295. // @Param request body models.CygxIndustryTopRep true "type json string"
  296. // @Success 200
  297. // @router /top [post]
  298. func (this *ReportController) ArticleCollect() {
  299. br := new(models.BaseResponse).Init()
  300. defer func() {
  301. this.Data["json"] = br
  302. this.ServeJSON()
  303. }()
  304. user := this.User
  305. if user == nil {
  306. br.Msg = "请重新登录"
  307. br.Ret = 408
  308. return
  309. }
  310. uid := user.UserId
  311. var req models.CygxIndustryTopRep
  312. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  313. if err != nil {
  314. br.Msg = "参数解析异常!"
  315. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  316. return
  317. }
  318. industrialManagementId := req.IndustrialManagementId
  319. fmt.Println(industrialManagementId)
  320. countIndustrial, err := models.GetIndustrialManagementCount(industrialManagementId)
  321. if err != nil {
  322. br.Msg = "获取数据失败!"
  323. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  324. return
  325. }
  326. if countIndustrial == 0 {
  327. br.Msg = "产业不存在!"
  328. br.ErrMsg = "产业不存在"
  329. return
  330. }
  331. count, err := models.GetCygxIndustryTop(uid, industrialManagementId)
  332. if err != nil {
  333. br.Msg = "获取数据失败!"
  334. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  335. return
  336. }
  337. resp := new(models.ArticleCollectResp)
  338. if count <= 0 {
  339. item := new(models.CygxIndustryTop)
  340. item.IndustrialManagementId = req.IndustrialManagementId
  341. item.UserId = uid
  342. item.CreateTime = time.Now()
  343. _, err = models.AddCygxIndustryTop(item)
  344. if err != nil {
  345. br.Msg = "置顶失败"
  346. br.ErrMsg = "置顶失败,Err:" + err.Error()
  347. return
  348. }
  349. br.Msg = "置顶成功"
  350. resp.Status = 1
  351. } else {
  352. err = models.RemoveCygxIndustryTop(uid, industrialManagementId)
  353. if err != nil {
  354. br.Msg = "取消置顶失败"
  355. br.ErrMsg = "取消置顶失败,Err:" + err.Error()
  356. return
  357. }
  358. br.Msg = "已取消置顶"
  359. resp.Status = 2
  360. }
  361. br.Ret = 200
  362. br.Success = true
  363. br.Data = resp
  364. }