baseMenu.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package dbModel
  2. import (
  3. "github.com/jinzhu/gorm"
  4. "github.com/pkg/errors"
  5. "main/controller/servers"
  6. "main/init/qmsql"
  7. "main/model/modelInterface"
  8. )
  9. type BaseMenu struct {
  10. gorm.Model
  11. MenuLevel uint `json:"-"`
  12. ParentId string `json:"parentId"`
  13. Path string `json:"path"`
  14. Name string `json:"name"`
  15. Hidden bool `json:"hidden"`
  16. Component string `json:"component"`
  17. Meta `json:"meta"`
  18. NickName string `json:"nickName"`
  19. Children []BaseMenu `json:"children"`
  20. }
  21. func (b *BaseMenu) AddBaseMenu() (err error) {
  22. findOne := qmsql.DEFAULTDB.Where("name = ?", b.Name).Find(&BaseMenu{}).Error
  23. if findOne != nil {
  24. b.NickName = b.Title
  25. err = qmsql.DEFAULTDB.Create(b).Error
  26. } else {
  27. err = errors.New("存在重复name,请修改name")
  28. }
  29. return err
  30. }
  31. func (b *BaseMenu) DeleteBaseMenu(id float64) (err error) {
  32. err = qmsql.DEFAULTDB.Where("parent_id = ?",id).First(&BaseMenu{}).Error
  33. if(err!=nil){
  34. err = qmsql.DEFAULTDB.Where("id = ?", id).Delete(&b).Error
  35. err = qmsql.DEFAULTDB.Where("menu_id = ?", id).Delete(&Menu{}).Error
  36. }else{
  37. return errors.New("此菜单存在子菜单不可删除")
  38. }
  39. return err
  40. }
  41. func (b *BaseMenu) UpdataBaseMenu(name string) (err error) {
  42. err = qmsql.DEFAULTDB.Where("name = ?", name).Update(&b).Update(&Menu{}).Error
  43. return err
  44. }
  45. func (b *BaseMenu) GetInfoList(info modelInterface.PageInfo) (err error, list interface{}, total int) {
  46. // 封装分页方法 调用即可 传入 当前的结构体和分页信息
  47. err, db, total := servers.PagingServer(b, info)
  48. if err != nil {
  49. return
  50. } else {
  51. var menuList []BaseMenu
  52. err = db.Find(&menuList).Error
  53. return err, menuList, total
  54. }
  55. }
  56. //获取基础路由树
  57. func (m *BaseMenu) GetBaseMenuTree() (err error, menus []BaseMenu) {
  58. err = qmsql.DEFAULTDB.Where(" parent_id = ?", 0).Find(&menus).Error
  59. for i := 0; i < len(menus); i++ {
  60. err = getBaseChildrenList(&menus[i])
  61. }
  62. return err, menus
  63. }
  64. func getBaseChildrenList(menu *BaseMenu) (err error) {
  65. err = qmsql.DEFAULTDB.Where("parent_id = ?", menu.ID).Find(&menu.Children).Error
  66. for i := 0; i < len(menu.Children); i++ {
  67. err = getBaseChildrenList(&menu.Children[i])
  68. }
  69. return err
  70. }