sys_menu.go 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. package system
  2. import (
  3. "context"
  4. "hongze/hrms_api/global"
  5. "hongze/hrms_api/models/base"
  6. )
  7. // 菜单表
  8. type SysMenu struct {
  9. MenuId int64 `gorm:"primaryKey;column:menu_id;" json:"menu_id"`
  10. ParentId int64 `gorm:"column:parent_id" json:"parent_id"` //父级菜单ID
  11. RootId int64 `gorm:"column:root_id" json:"root_id"` //顶层菜单ID
  12. Name string `gorm:"column:name" json:"name"` //菜单名称或者按钮名称
  13. Sort int8 `gorm:"column:sort" json:"sort"` //排序序号
  14. Path string `gorm:"column:path" json:"path"` //路由地址
  15. PathName string `gorm:"column:path_name" json:"path_name"` //路由名称
  16. IconPath string `gorm:"column:icon_path" json:"icon_path"` //菜单图标地址
  17. Component string `gorm:"column:component" json:"component"` //组件路径
  18. Hidden int8 `gorm:"column:hidden" json:"hidden"` //是否隐藏:1-隐藏 0-显示
  19. HiddenLayout int8 `gorm:"column:hidden_layout" json:"hidden_layout"` //是否隐藏layout:1-隐藏 0-显示
  20. Level int8 `gorm:"column:level" json:"level"`
  21. MenuType int8 `gorm:"column:menu_type" json:"menu_type"` //菜单类型: 0-菜单, 1-按钮
  22. ButtonCode string `gorm:"column:button_code" json:"button_code"` //按钮唯一标识
  23. base.TimeBase
  24. }
  25. // TableName get sql table name.获取数据库表名
  26. func (m *SysMenu) TableName() string {
  27. return "sys_menu"
  28. }
  29. type SysMenuAddReq struct {
  30. ParentId int64 `json:"parent_id"` //父级菜单ID
  31. Name string `json:"name" binding:"required"` //菜单名称或者按钮名称
  32. Sort int8 `json:"sort"` //排序序号
  33. Path string `json:"path"` //路由地址
  34. PathName string `json:"path_name"` //路由名称
  35. IconPath string `json:"icon_path"` //菜单图标地址
  36. Component string `json:"component"` //组件路径
  37. Hidden int8 `json:"hidden" binding:"oneof=0 1"` //是否隐藏:1-隐藏 0-显示
  38. HiddenLayout int8 `json:"hidden_layout" binding:"oneof=0 1"` //是否隐藏layout:1-隐藏 0-显示
  39. MenuType int8 `json:"menu_type" binding:"oneof=0 1"` //菜单类型: 0-菜单, 1-按钮
  40. ButtonCode string `json:"button_code" binding:"required_if=menu_type 1"` //按钮唯一标识
  41. }
  42. type SysMenuEditReq struct {
  43. MenuId int64 `json:"menu_id" binding:"required,gte=1"`
  44. SysMenuAddReq
  45. }
  46. // 新增
  47. func (m *SysMenu) Add() (err error) {
  48. err = global.DEFAULT_MYSQL.Create(m).Error
  49. return
  50. }
  51. // 修改
  52. func (m *SysMenu) Update(updateCols []string) (err error) {
  53. err = global.DEFAULT_MYSQL.Model(m).Select(updateCols).Updates(m).Error
  54. return
  55. }
  56. func (m *SysMenu) SelectPage(page base.IPage, condition string, pars []interface{}) (count int64,results []*SysMenu, err error) {
  57. results = make([]*SysMenu, 0)
  58. query := global.DEFAULT_MYSQL.WithContext(context.TODO()).Model(m).
  59. Where(condition, pars...)
  60. query.Count(&count)
  61. if len(page.GetOrderItemsString()) > 0 {
  62. query = query.Order(page.GetOrderItemsString())
  63. }
  64. err = query.Limit(int(page.GetPageSize())).Offset(int(page.Offset())).Find(&results).Error
  65. return
  66. }
  67. type SysMenuButtonResp struct {
  68. MenuId int64 `json:"menu_id"` //菜单ID
  69. ParentId int64 `json:"parent_id"` //父级菜单ID
  70. Name string `json:"name" binding:"required"` //菜单名称或者按钮名称
  71. MenuType int8 `json:"menu_type" binding:"oneof=0 1"` //菜单类型: 0-菜单, 1-按钮
  72. ButtonCode string `json:"button_code" binding:"required_if=menu_type 1"` //按钮唯一标识
  73. }
  74. func (m *SysMenu) GetMenuListByCondition(condition string, pars []interface{}, orderStr string) (results []*SysMenu, err error) {
  75. results = make([]*SysMenu, 0)
  76. if orderStr == "" {
  77. orderStr = "sort asc, create_time desc"
  78. }
  79. err = global.DEFAULT_MYSQL.WithContext(context.TODO()).Model(m).
  80. Where(condition, pars...).Order(orderStr).Find(&results).Error
  81. return
  82. }
  83. type MenuShortListItem struct {
  84. MenuId int64 `json:"menu_id" form:"menu_id"` //菜单ID
  85. }
  86. type MenuListReq struct {
  87. base.PageReq
  88. Name string `json:"name" form:"name"` //菜单名称或者按钮名称
  89. HideLevel3 int8 `json:"hide_level3" form:"hide_level3"` //返回值是否需要隐藏三级的菜单和三级按钮(1-隐藏,0-不隐藏)
  90. HideButton int8 `json:"hide_button" form:"hide_button"` //返回值是否需要隐藏按钮(1-隐藏,0-不隐藏)
  91. }
  92. type MenuListItemResp struct {
  93. MenuId int64 `json:"menu_id"` //菜单ID
  94. ParentId int64 `json:"parent_id"` //父级菜单ID
  95. Name string `json:"name"` //菜单名称或者按钮名称
  96. Sort int8 `json:"sort"` //排序序号
  97. Path string `json:"path"` //页面地址或者Api请求地址
  98. PathName string `json:"path_name"` //路由名称
  99. IconPath string `json:"icon_path"` //菜单图标地址
  100. Component string `json:"component"` //组件路径
  101. Hidden int8 `json:"hidden"` //是否隐藏:1-隐藏 0-显示
  102. HiddenLayout int8 `json:"hidden_layout"` //是否隐藏layout:1-隐藏 0-显示
  103. Level int8 `json:"level"`
  104. MenuType int8 `json:"menu_type"` //菜单类型: 0-菜单, 1-按钮
  105. ButtonCode string `json:"button_code"` //按钮唯一标识
  106. HasBind bool `json:"has_bind"` //是否已绑定,true 已绑定,false 未绑定
  107. CreateTime string `json:"create_time"` //创建时间
  108. ModifyTime string `json:"modify_time"` //最后更新时间
  109. Children []*MenuListItemResp `json:"children"`
  110. }
  111. func (m *SysMenu) GetMenuByName(name string) (list []*SysMenu, err error) {
  112. err = global.DEFAULT_MYSQL.Model(m).Where("name like ?", name).Find(&list).Error
  113. return
  114. }
  115. func (m *SysMenu) GetMenuByMenuId(menuId int64) (item *SysMenu, err error) {
  116. err = global.DEFAULT_MYSQL.Model(m).Where("menu_id = ?", menuId).First(&item).Error
  117. return
  118. }
  119. // 删除
  120. func (m *SysMenu) DeleteByCondition(condition string, pars []interface{}) (err error) {
  121. err = global.DEFAULT_MYSQL.Where(condition, pars...).Delete(m).Error
  122. return
  123. }