2025-10-29 17:32:34 +08:00

78 lines
1.9 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() ([]map[string]interface{}, error) {
o := orm.NewOrm()
var menus []*Menu
_, err := o.QueryTable("yz_menus").Filter("Status", 1).All(&menus)
if err != nil {
return nil, err
}
result := make([]map[string]interface{}, 0, len(menus))
for _, m := range menus {
item := map[string]interface{}{
"id": m.Id,
"name": m.Name,
"path": m.Path,
"parentId": m.ParentId,
"icon": m.Icon,
"order": m.Order,
"componentPath": m.ComponentPath,
"isExternal": m.IsExternal,
"externalUrl": m.ExternalUrl,
}
result = append(result, item)
}
return result, 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
}