sys_menu.go 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package models
  2. import (
  3. "fmt"
  4. "strings"
  5. "time"
  6. "github.com/beego/beego/v2/client/orm"
  7. )
  8. type SysMenu struct {
  9. SysMenuId int `orm:"pk" description:"菜单id"`
  10. ParentId int `description:"父级id"`
  11. Sort int `description:"排序id"`
  12. ButtonCode string `description:"按钮唯一编码"`
  13. Name string `description:"按钮名称"`
  14. Path string `description:"路径"`
  15. IconPath string `description:"图标路径"`
  16. Level int `description:"层级"`
  17. MenuType int `description:"菜单类型,1:菜单,2:按钮"`
  18. CreateTime time.Time `description:"创建时间"`
  19. ModifyTime time.Time `description:"修改时间"`
  20. }
  21. type SysRoleMenuMapping struct {
  22. SysRoleMenuMappingId int `orm:"pk" description:"id"`
  23. SysRoleId int `description:"角色id"`
  24. SysMenuId int `description:"菜单id"`
  25. Type int `description:"类型"`
  26. }
  27. // SysMenuItem 角色菜单
  28. type SysMenuItem struct {
  29. SysMenuId int
  30. ParentId int `description:"父级菜单ID"`
  31. Name string `description:"菜单名称或者按钮名称"`
  32. Level int `description:"层级"`
  33. Sort int `description:"排序"`
  34. Path string `description:"路由地址"`
  35. IconPath string `description:"菜单图标地址"`
  36. ButtonCode string `description:"按钮/菜单唯一标识"`
  37. Children []*SysMenuItem `description:"子菜单"`
  38. }
  39. // GetMenuButtonsByRoleId 获取角色按钮
  40. func GetMenuButtonsByRoleId(roleId int) (items []*SysMenu, err error) {
  41. sql := `SELECT
  42. r.*
  43. FROM
  44. sys_menu AS r
  45. JOIN sys_role_menu_mapping AS rm ON r.sys_menu_id = rm.sys_menu_id
  46. WHERE
  47. rm.sys_role_id = ?
  48. ORDER BY
  49. r.sort ASC,
  50. r.create_time DESC`
  51. o := orm.NewOrmUsingDB("master")
  52. _, err = o.Raw(sql, roleId).QueryRows(&items)
  53. return
  54. }
  55. // GetMenuListByRoleIds 根据管理员角色id查询菜单
  56. func GetMenuListByRoleIds(roleId int) (items []*SysMenuItem, err error) {
  57. o := orm.NewOrmUsingDB("master")
  58. sql := `SELECT a.*
  59. FROM sys_menu AS a
  60. LEFT JOIN sys_role_menu_mapping AS b ON a.sys_menu_id=b.sys_menu_id
  61. WHERE b.sys_role_id = ? AND a.menu_type = 1
  62. ORDER BY sort ASC `
  63. _, err = o.Raw(sql, roleId).QueryRows(&items)
  64. return
  65. }
  66. // GetSysMenuItemsByCondition 获取菜单列表
  67. func GetSysMenuItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*SysMenu, err error) {
  68. o := orm.NewOrmUsingDB("master")
  69. fields := strings.Join(fieldArr, ",")
  70. if len(fieldArr) == 0 {
  71. fields = `*`
  72. }
  73. order := `ORDER BY create_time DESC`
  74. if orderRule != "" {
  75. order = ` ORDER BY ` + orderRule
  76. }
  77. sql := fmt.Sprintf(`SELECT %s FROM sys_menu WHERE 1=1 %s %s`, fields, condition, order)
  78. _, err = o.Raw(sql, pars).QueryRows(&items)
  79. return
  80. }