chart_permission.go 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. package controllers
  2. import (
  3. "eta/eta_mini_bridge/models"
  4. "eta/eta_mini_bridge/utils"
  5. "fmt"
  6. "html"
  7. "sort"
  8. "strconv"
  9. )
  10. type ChartPermissionController struct {
  11. BaseAuthController
  12. }
  13. // List
  14. // @Title 系统品种一级列表
  15. // @Description 系统品种一级列表
  16. // @Success 200 {object} models.LoginResp
  17. // @router /list [get]
  18. func (this *ChartPermissionController) List() {
  19. br := new(models.BaseResponse).Init()
  20. defer func() {
  21. this.Data["json"] = br
  22. this.ServeJSON()
  23. }()
  24. items, err := models.GetChildChartPermissionListById(0)
  25. if err != nil {
  26. br.Msg = "权限列表获取失败"
  27. br.ErrMsg = "权限列表获取失败,系统错误,Err:" + err.Error()
  28. return
  29. }
  30. br.Ret = 200
  31. br.Data = items
  32. br.Msg = "列表获取成功"
  33. br.Success = true
  34. }
  35. // SecondList
  36. // @Title 系统品种二级列表
  37. // @Description 系统品种二级列表
  38. // @Param chartPermissonId query int true "品种ID"
  39. // @Success 200 {object} []models.ChartPermission
  40. // @router /second/list [get]
  41. func (this *ChartPermissionController) SecondList() {
  42. br := new(models.BaseResponse).Init()
  43. defer func() {
  44. this.Data["json"] = br
  45. this.ServeJSON()
  46. }()
  47. id, _ := this.GetInt("chartPermissonId", 0)
  48. if id <= 0 {
  49. br.Msg = "品种id错误,获取失败"
  50. return
  51. }
  52. items, err := models.GetChildChartPermissionListById(id)
  53. if err != nil {
  54. br.Msg = "权限列表获取失败"
  55. br.ErrMsg = "权限列表获取失败,系统错误,Err:" + err.Error()
  56. return
  57. }
  58. br.Ret = 200
  59. br.Data = items
  60. br.Msg = "列表获取成功"
  61. br.Success = true
  62. }
  63. // AllList
  64. // @Title 系统所有品种列表
  65. // @Description 系统所有品种列表
  66. // @Success 200 {object} []models.ChartPermission
  67. // @router /allList [get]
  68. func (this *ChartPermissionController) AllList() {
  69. br := new(models.BaseResponse).Init()
  70. defer func() {
  71. this.Data["json"] = br
  72. this.ServeJSON()
  73. }()
  74. items, err := models.GetChartPermissionList()
  75. if err != nil {
  76. br.Msg = "权限列表获取失败"
  77. br.ErrMsg = "权限列表获取失败,系统错误,Err:" + err.Error()
  78. return
  79. }
  80. br.Ret = 200
  81. br.Data = items
  82. br.Msg = "列表获取成功"
  83. br.Success = true
  84. }
  85. // Public
  86. // @Title 获取公有共有权限列表
  87. // @Description 获取所有公有权限列表
  88. // @Success 200 {object} []models.ChartPermission
  89. // @router /public/list [get]
  90. func (this *ChartPermissionController) Public() {
  91. br := new(models.BaseResponse).Init()
  92. defer func() {
  93. if err := recover(); err != nil {
  94. fmt.Println(err)
  95. return
  96. }
  97. this.Data["json"] = br
  98. this.ServeJSON()
  99. }()
  100. items, err := models.GetChartPermissionList()
  101. if err != nil {
  102. br.Msg = "权限列表获取失败"
  103. br.ErrMsg = "权限列表获取失败,系统错误,Err:" + err.Error()
  104. return
  105. }
  106. rootMap := make(map[int]*models.ChartPermission)
  107. publicList := make([]*models.ChartPermission, 0)
  108. for _, item := range items {
  109. if item.ParentId == 0 {
  110. rootMap[item.ChartPermissionId] = item
  111. } else if item.IsPublic == 1 {
  112. publicList = append(publicList, item)
  113. }
  114. }
  115. // 公有权限
  116. publicView := getChartPermissionTree(rootMap, publicList)
  117. chartList := make([]*models.ChartPermissionView, 0)
  118. for _, v := range publicView {
  119. chartList = append(chartList, v)
  120. }
  121. sort.Sort(models.BySortChartPermissionView(chartList))
  122. br.Msg = "列表获取成功"
  123. br.Data = chartList
  124. br.Success = true
  125. br.Ret = 200
  126. }
  127. // Private
  128. // @Title 获取私有共有权限列表
  129. // @Description 获取所有私有权限列表
  130. // @Success 200 {object} []models.ChartPermission
  131. // @router /private/list [get]
  132. func (this *ChartPermissionController) Private() {
  133. br := new(models.BaseResponse).Init()
  134. defer func() {
  135. if err := recover(); err != nil {
  136. utils.ApiLog.Error("私有权限列表获取失败,系统错误,Err:%s", err)
  137. return
  138. }
  139. this.Data["json"] = br
  140. this.ServeJSON()
  141. }()
  142. items, err := models.GetChartPermissionList()
  143. if err != nil {
  144. br.Msg = "权限列表获取失败"
  145. br.ErrMsg = "权限列表获取失败,系统错误,Err:" + err.Error()
  146. return
  147. }
  148. rootMap := make(map[int]*models.ChartPermission)
  149. privateList := make([]*models.ChartPermission, 0)
  150. for _, item := range items {
  151. if item.ParentId == 0 {
  152. rootMap[item.ChartPermissionId] = item
  153. } else if item.IsPublic == 0 {
  154. privateList = append(privateList, item)
  155. }
  156. }
  157. // 私有权限
  158. privateView := getChartPermissionTree(rootMap, privateList)
  159. chartList := make([]*models.ChartPermissionView, 0)
  160. for _, v := range privateView {
  161. chartList = append(chartList, v)
  162. }
  163. sort.Sort(models.BySortChartPermissionView(chartList))
  164. br.Msg = "列表获取成功"
  165. br.Data = chartList
  166. br.Success = true
  167. br.Ret = 200
  168. }
  169. // Private
  170. // @Title 获取研报的品种权限列表
  171. // @Description 获取研报的品种权限列表
  172. // @Param ReportId query int true "研报id"
  173. // @Success 200 {object} []models.ChartPermission
  174. // @router /detail [get]
  175. func (this *ChartPermissionController) Detail() {
  176. br := new(models.BaseResponse).Init()
  177. defer func() {
  178. if err := recover(); err != nil {
  179. utils.ApiLog.Error("获取报告列表获取失败,系统错误,Err:%s", err)
  180. return
  181. }
  182. this.Data["json"] = br
  183. this.ServeJSON()
  184. }()
  185. reportId, _ := this.GetInt("ReportId")
  186. if reportId <= 0 {
  187. br.Msg = "参数错误"
  188. br.ErrMsg = "参数错误,报告id小于等于0"
  189. return
  190. }
  191. report, err := models.GetReportById(reportId)
  192. if err != nil {
  193. br.Msg = "该报告已删除"
  194. br.ErrMsg = "获取报告详情失败,Err:" + err.Error()
  195. return
  196. }
  197. report.ContentSub = html.UnescapeString(report.ContentSub)
  198. report.Content = html.UnescapeString(report.Content)
  199. if report == nil {
  200. br.Msg = "报告不存在"
  201. return
  202. }
  203. reportChartPermissionIds, err := models.GetChartPermissionIdsListByClassifyId(report.ClassifyIdSecond)
  204. if err != nil {
  205. br.Msg = "获取研报权限失败"
  206. br.ErrMsg = "获取研报权限失败,Err:" + err.Error()
  207. return
  208. }
  209. chartPermissionList, err := models.GetChartPermissionIdsByIds(reportChartPermissionIds)
  210. if err != nil {
  211. br.Msg = "获取研报权限失败"
  212. br.ErrMsg = "获取研报权限失败,Err:" + err.Error()
  213. return
  214. }
  215. br.Data = chartPermissionList
  216. br.Msg = "权限列表获取成功"
  217. br.Success = true
  218. br.Ret = 200
  219. }
  220. // getChartPermissionTree获得品种权限的树形结构
  221. func getChartPermissionTree(rootMap map[int]*models.ChartPermission, childChartPermissionList []*models.ChartPermission) map[int]*models.ChartPermissionView {
  222. resultMap := make(map[int]*models.ChartPermissionView)
  223. for _, v := range childChartPermissionList {
  224. if perm, ok := resultMap[v.ParentId]; ok {
  225. perm.Child = append(perm.Child, &models.ChartPermissionView{
  226. ChartPermissionId: v.ChartPermissionId,
  227. PermissionName: v.PermissionName,
  228. IsPublic: v.IsPublic,
  229. Sort: v.Sort,
  230. })
  231. } else {
  232. if root, ok := rootMap[v.ParentId]; ok {
  233. resultMap[v.ParentId] = &models.ChartPermissionView{
  234. ChartPermissionId: root.ChartPermissionId,
  235. PermissionName: root.PermissionName,
  236. IsPublic: 0,
  237. Sort: root.Sort,
  238. Child: make([]*models.ChartPermissionView, 0),
  239. }
  240. resultMap[v.ParentId].Child = append(resultMap[v.ParentId].Child, &models.ChartPermissionView{
  241. ChartPermissionId: v.ChartPermissionId,
  242. PermissionName: v.PermissionName,
  243. IsPublic: v.IsPublic,
  244. Sort: v.Sort,
  245. })
  246. } else {
  247. utils.ApiLog.Info("私有权限列表获取失败,未找到根节点,权限ID:" + strconv.Itoa(v.ChartPermissionId))
  248. }
  249. }
  250. }
  251. return resultMap
  252. }