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 } // UpdateMenuStatus 更新菜单状态 func UpdateMenuStatus(id int, status int8) error { o := orm.NewOrm() menu := Menu{Id: id} if err := o.Read(&menu); err != nil { return err } menu.Status = status _, err := o.Update(&menu, "Status") return err } // DeleteMenu 删除菜单 func DeleteMenu(id int) error { o := orm.NewOrm() _, err := o.Delete(&Menu{Id: id}) return err }