menu_authority.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. }