2025-10-27 23:13:08 +08:00

98 lines
2.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}