report.go 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. package controllers
  2. import (
  3. "eta/eta_mini_bridge/models"
  4. "eta/eta_mini_bridge/models/response"
  5. "eta/eta_mini_bridge/utils"
  6. "html"
  7. "strconv"
  8. "github.com/rdlucklib/rdluck_tools/paging"
  9. )
  10. type ReportController struct {
  11. BaseAuthController
  12. }
  13. // @Title List
  14. // @Description create users
  15. // @Param ChartPermissionId query int true "品种ID"
  16. // @Param Level query int true "品种层级"
  17. // @Param PageSize query int true "每页数据条数"
  18. // @Param CurrentIndex query int true "当前页页码,从1开始"
  19. // @Param RangeType query string true "范围类型,1-一天内,2-一周内,3-半年内"
  20. // @Success 200 {int} models.User.Id
  21. // @Failure 403 body is empty
  22. // @router /list [get]
  23. func (this *ReportController) List() {
  24. br := new(models.BaseResponse).Init()
  25. defer func() {
  26. this.Data["json"] = br
  27. this.ServeJSON()
  28. }()
  29. pageSize, _ := this.GetInt("PageSize")
  30. currentIndex, _ := this.GetInt("CurrentIndex")
  31. chartPermissionId, _ := this.GetInt("ChartPermissionId")
  32. level, _ := this.GetInt("Level")
  33. rangeType, _ := this.GetInt("RangeType")
  34. if chartPermissionId <= 0 {
  35. br.Msg = "品种参数错误"
  36. return
  37. }
  38. var condition string
  39. switch rangeType {
  40. case 1:
  41. condition += ` AND DATE(a.modify_time)=DATE(NOW()) `
  42. case 2:
  43. condition += ` AND DATE(a.modify_time) BETWEEN DATE_SUB(NOW(),INTERVAL 1 WEEK) AND NOW() `
  44. case 3:
  45. condition += ` AND DATE(a.modify_time) BETWEEN DATE_SUB(NOW(),INTERVAL 6 MONTH) AND NOW() `
  46. }
  47. var startSize int
  48. if pageSize <= 0 {
  49. pageSize = utils.PageSize20
  50. }
  51. if currentIndex <= 0 {
  52. currentIndex = 1
  53. }
  54. startSize = utils.StartIndex(currentIndex, pageSize)
  55. var total int
  56. var reportList []*models.ReportList
  57. switch level {
  58. case 2:
  59. classifyIds, err := models.GetClassifyIdsListById(chartPermissionId)
  60. if err != nil {
  61. br.Msg = "获取报告列表失败"
  62. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  63. return
  64. }
  65. tmptotal, err := models.GetReportCountByClassifyIds(classifyIds, condition)
  66. if err != nil {
  67. br.Msg = "获取数据失败"
  68. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  69. return
  70. }
  71. total = tmptotal
  72. tmpReportList, err := models.GetReportListByClassifyIds(classifyIds, condition, startSize, pageSize)
  73. if err != nil {
  74. br.Msg = "获取报告列表失败"
  75. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  76. return
  77. }
  78. reportList = tmpReportList
  79. case 1:
  80. chartPermissionIds, err := models.GetChildChartPermissionIdsById(chartPermissionId)
  81. if err != nil {
  82. br.Msg = "获取报告列表失败"
  83. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  84. return
  85. }
  86. classifyIds, err := models.GetClassifyIdsListByIds(chartPermissionIds)
  87. if err != nil {
  88. br.Msg = "获取报告列表失败"
  89. br.ErrMsg = "获取报告列表失败,Err:" + err.Error()
  90. return
  91. }
  92. tmptotal, err := models.GetReportCountByClassifyIds(classifyIds, condition)
  93. if err != nil {
  94. br.Msg = "获取数据失败"
  95. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  96. return
  97. }
  98. total = tmptotal
  99. tmpReportList, err := models.GetReportListByClassifyIds(classifyIds, condition, startSize, pageSize)
  100. if err != nil {
  101. br.Msg = "获取报告列表失败"
  102. br.ErrMsg = "获取报告列表失败,Err:" + err.Error()
  103. return
  104. }
  105. reportList = tmpReportList
  106. default:
  107. br.Msg = "层级参数错误"
  108. return
  109. }
  110. page := paging.GetPaging(currentIndex, pageSize, total)
  111. resp := new(response.ReportListResp)
  112. resp.Paging = page
  113. resp.List = reportList
  114. br.Ret = 200
  115. br.Success = true
  116. br.Msg = "获取成功"
  117. br.Data = resp
  118. }
  119. // @Title 日评详情
  120. // @Description 日评详情接口
  121. // @Param ReportId query int true "报告id"
  122. // @Param UserId query int true "用户id"
  123. // @Success 200 {object} models.ReportDetailResp
  124. // @router /detail [get]
  125. func (this *ReportController) Detail() {
  126. br := new(models.BaseResponse).Init()
  127. defer func() {
  128. this.Data["json"] = br
  129. this.ServeJSON()
  130. }()
  131. reportId, err := this.GetInt("ReportId")
  132. userId, err := this.GetInt("UserId")
  133. if err != nil {
  134. br.Msg = "参数获取失败"
  135. br.ErrMsg = "参数获取失败,Err:" + err.Error()
  136. return
  137. }
  138. if reportId <= 0 {
  139. br.Msg = "参数错误"
  140. br.ErrMsg = "参数错误,报告id小于等于0"
  141. return
  142. }
  143. if userId <= 0 {
  144. br.Msg = "参数错误"
  145. br.ErrMsg = "参数错误,用户id小于等于0"
  146. return
  147. }
  148. report, err := models.GetReportById(reportId)
  149. if err != nil {
  150. br.Msg = "该报告已删除"
  151. br.ErrMsg = "获取报告详情失败,Err:" + err.Error()
  152. return
  153. }
  154. if report == nil {
  155. br.Msg = "报告不存在"
  156. return
  157. }
  158. reportChartPermissionIds, err := models.GetChartPermissionIdsListByClassifyId(report.ClassifyIdSecond)
  159. if err != nil {
  160. br.Msg = "获取研报权限失败"
  161. br.ErrMsg = "获取研报权限失败,Err:" + err.Error()
  162. return
  163. }
  164. chartPermissionList, err := models.GetChartPermissionIdsByIds(reportChartPermissionIds)
  165. if err != nil {
  166. br.Msg = "获取研报权限失败"
  167. br.ErrMsg = "获取研报权限失败,Err:" + err.Error()
  168. return
  169. }
  170. var IsHas bool
  171. var IsPublic bool
  172. for _, v := range chartPermissionList {
  173. if v.IsPublic == 1 {
  174. IsPublic = true
  175. break
  176. }
  177. }
  178. if !IsPublic {
  179. chartPermissionIds, err := models.GetChartPermissionIdByUserId(userId)
  180. if err != nil {
  181. br.Msg = "获取用户权限失败"
  182. br.ErrMsg = "获取用户权限失败,Err:" + err.Error()
  183. return
  184. }
  185. if len(chartPermissionIds) <= 0 {
  186. br.Msg = "用户权限不足"
  187. return
  188. }
  189. classifyIds, err := models.GetClassifyIdsListByIds(chartPermissionIds)
  190. if err != nil {
  191. br.Msg = "获取用户权限失败"
  192. br.ErrMsg = "获取用户分类权限失败,Err:" + err.Error()
  193. return
  194. }
  195. if len(classifyIds) <= 0 {
  196. br.Msg = "用户权限不足"
  197. return
  198. }
  199. reportClassifyIdStr := strconv.Itoa(report.ClassifyIdSecond)
  200. for _, v := range classifyIds {
  201. if v == reportClassifyIdStr {
  202. IsHas = true
  203. }
  204. }
  205. if !IsHas {
  206. br.Msg = "用户权限不足"
  207. return
  208. }
  209. }
  210. report.ContentSub = html.UnescapeString(report.ContentSub)
  211. report.Content = html.UnescapeString(report.Content)
  212. br.Data = report
  213. br.Ret = 200
  214. br.Success = true
  215. br.Msg = "获取成功"
  216. }
  217. // @Title List
  218. // @Description create users
  219. // @Param body body models.User true "body for user content"
  220. // @Success 200 {int} models.User.Id
  221. // @Failure 403 body is empty
  222. // @router /daily/list [get]
  223. func (this *ReportController) Today() {
  224. br := new(models.BaseResponse).Init()
  225. defer func() {
  226. this.Data["json"] = br
  227. this.ServeJSON()
  228. }()
  229. pageSize, _ := this.GetInt("PageSize")
  230. currentIndex, _ := this.GetInt("CurrentIndex")
  231. var startSize int
  232. if pageSize <= 0 {
  233. pageSize = utils.PageSize30
  234. }
  235. if currentIndex <= 0 {
  236. currentIndex = 1
  237. }
  238. startSize = utils.StartIndex(currentIndex, pageSize)
  239. total, err := models.GetReportDailyListCount()
  240. if err != nil {
  241. br.Msg = "获取数据失败"
  242. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  243. return
  244. }
  245. list, err := models.GetReportDailyList(startSize, pageSize)
  246. if err != nil {
  247. br.Msg = "获取失败"
  248. br.ErrMsg = "获取失败,Err:" + err.Error()
  249. return
  250. }
  251. page := paging.GetPaging(currentIndex, pageSize, total)
  252. resp := new(response.ReportListResp)
  253. resp.Paging = page
  254. resp.List = list
  255. br.Ret = 200
  256. br.Success = true
  257. br.Msg = "获取成功"
  258. br.Data = resp
  259. }