chart_permission.go 5.8 KB

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