78 lines
1.9 KiB
Go
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
|
|
}
|