menu_authority.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package dbModel
  2. import (
  3. "fmt"
  4. "main/init/qmsql"
  5. )
  6. type Menu struct {
  7. BaseMenu
  8. MenuId string `json:"menuId"`
  9. AuthorityId string `json:"-"`
  10. Children []Menu `json:"children"`
  11. }
  12. type Meta struct {
  13. Title string `json:"title"`
  14. Icon string `json:"icon"`
  15. }
  16. // 为角色增加menu树
  17. func (m *Menu) AddMenuAuthority(menus []BaseMenu, authorityId string) (err error) {
  18. var menu Menu
  19. qmsql.DEFAULTDB.Where("authority_id = ? ", authorityId).Unscoped().Delete(&Menu{})
  20. for _, v := range menus {
  21. menu.BaseMenu = v
  22. menu.AuthorityId = authorityId
  23. menu.MenuId = fmt.Sprintf("%v", v.ID)
  24. menu.ID = 0
  25. err = qmsql.DEFAULTDB.Create(&menu).Error
  26. if err != nil {
  27. return err
  28. }
  29. }
  30. return nil
  31. }
  32. // 查看当前角色树
  33. func (m *Menu) GetMenuAuthority(authorityId string) (err error, menus []Menu) {
  34. err = qmsql.DEFAULTDB.Where("authority_id = ?", authorityId).Find(&menus).Error
  35. return err, menus
  36. }
  37. //获取动态路由树
  38. func (m *Menu) GetMenuTree(authorityId float64) (err error, menus []Menu) {
  39. err = qmsql.DEFAULTDB.Where("authority_id = ? AND parent_id = ?", authorityId, 0).Find(&menus).Error
  40. for i := 0; i < len(menus); i++ {
  41. err = getChildrenList(&menus[i])
  42. }
  43. return err, menus
  44. }
  45. func getChildrenList(menu *Menu) (err error) {
  46. err = qmsql.DEFAULTDB.Where("authority_id = ? AND parent_id = ?", menu.AuthorityId, menu.MenuId).Find(&menu.Children).Error
  47. for i := 0; i < len(menu.Children); i++ {
  48. err = getChildrenList(&menu.Children[i])
  49. }
  50. return err
  51. }
  52. //获取基础路由树
  53. func (m *BaseMenu) GetBaseMenuTree() (err error, menus []BaseMenu) {
  54. err = qmsql.DEFAULTDB.Where(" parent_id = ?", 0).Find(&menus).Error
  55. for i := 0; i < len(menus); i++ {
  56. err = getBaseChildrenList(&menus[i])
  57. }
  58. return err, menus
  59. }
  60. func getBaseChildrenList(menu *BaseMenu) (err error) {
  61. err = qmsql.DEFAULTDB.Where("parent_id = ?", menu.ID).Find(&menu.Children).Error
  62. for i := 0; i < len(menu.Children); i++ {
  63. err = getBaseChildrenList(&menu.Children[i])
  64. }
  65. return err
  66. }