98 lines
2.4 KiB
Go
98 lines
2.4 KiB
Go
package models
|
||
|
||
import (
|
||
"time"
|
||
|
||
"github.com/beego/beego/v2/client/orm"
|
||
)
|
||
|
||
// Menu 菜单模型(增强版)
|
||
type Menu struct {
|
||
Id int `orm:"auto"`
|
||
Name string `orm:"size(100)"`
|
||
Path string `orm:"size(255)"`
|
||
ParentId int `orm:"default(0)"`
|
||
Icon string `orm:"size(100)"`
|
||
Order int `orm:"default(0)"`
|
||
Status int8 `orm:"default(1)"`
|
||
ComponentPath string `orm:"size(500);null"`
|
||
IsExternal int8 `orm:"default(0)"`
|
||
ExternalUrl string `orm:"size(1000);null"`
|
||
MenuType int8 `orm:"default(1)"`
|
||
Permission string `orm:"size(200);null"`
|
||
CreateTime time.Time `orm:"auto_now_add;type(datetime)"`
|
||
UpdateTime time.Time `orm:"auto_now;type(datetime)"`
|
||
}
|
||
|
||
// TableName 设置表名
|
||
func (m *Menu) TableName() string {
|
||
return "yz_menus"
|
||
}
|
||
|
||
// GetAllMenus 获取所有菜单
|
||
func GetAllMenus() ([]*Menu, error) {
|
||
o := orm.NewOrm()
|
||
var menus []*Menu
|
||
_, err := o.QueryTable("yz_menus").OrderBy("Order").All(&menus)
|
||
return menus, err
|
||
}
|
||
|
||
// GetTopLevelMenus
|
||
func GetTopLevelMenus() ([]*Menu, error) {
|
||
o := orm.NewOrm()
|
||
var menus []*Menu
|
||
_, err := o.QueryTable("yz_menus").Filter("parent_id", 0).OrderBy("Order").All(&menus)
|
||
return menus, err
|
||
}
|
||
|
||
// GetActiveMenus 获取启用的菜单(状态为1)
|
||
func GetActiveMenus() ([]*Menu, error) {
|
||
o := orm.NewOrm()
|
||
var menus []*Menu
|
||
_, err := o.QueryTable("yz_menus").Filter("status", 1).OrderBy("Order").All(&menus)
|
||
return menus, err
|
||
}
|
||
|
||
// GetMenusByParentId
|
||
func GetMenusByParentId(parentId int) ([]*Menu, error) {
|
||
o := orm.NewOrm()
|
||
var menus []*Menu
|
||
_, err := o.QueryTable("yz_menus").Filter("parent_id", parentId).OrderBy("Order").All(&menus)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
return menus, nil
|
||
}
|
||
|
||
// AddMenu 添加新菜单
|
||
func AddMenu(menu *Menu) (int64, error) {
|
||
o := orm.NewOrm()
|
||
id, err := o.Insert(menu)
|
||
return id, err
|
||
}
|
||
|
||
// UpdateMenu 更新菜单
|
||
func UpdateMenu(menu *Menu) error {
|
||
o := orm.NewOrm()
|
||
_, err := o.Update(menu)
|
||
return err
|
||
}
|
||
|
||
// DeleteMenu 删除菜单
|
||
func DeleteMenu(id int) error {
|
||
o := orm.NewOrm()
|
||
_, err := o.Delete(&Menu{Id: id})
|
||
return err
|
||
}
|
||
|
||
// GetMenuById 根据ID获取单个菜单
|
||
func GetMenuById(id int) (*Menu, error) {
|
||
o := orm.NewOrm()
|
||
var menu Menu
|
||
err := o.QueryTable("yz_menus").Filter("id", id).One(&menu)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
return &menu, nil
|
||
}
|