package
import (
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
)
const (
DSN= "root:root@tcp(127.0.0.1:3306)/mall?charset=utf8mb4&parseTime=True&loc=Asia%2FShanghai"
DriverName = "mysql"
)
// 这是 ums_menu表 的实体类
type UmsMenu struct {
Id int64 `json:"id,omitempty"`
ParentId int64 `json:"parent_id"` // 父级ID
Title string `json:"title"` // 菜单名称
Level int32 `json:"level"` // 菜单级数
Sort int32 `json:"sort"` // 菜单排序
Name string `json:"name"` // 前端名称
Icon string `json:"icon"` // 前端图标
Hidden int32 `json:"hidden"` // 前端隐藏
CreateTime time.Time `json:"create_time"` // 创建时间
}
// 子级菜单
type UmsMenuNode struct {
Id int64 `json:"id,omitempty"`
ParentId int64 `json:"parent_id"` // 父级ID
Title string `json:"title"` // 菜单名称
Level int32 `json:"level"` // 菜单级数
Sort int32 `json:"sort"` // 菜单排序
Name string `json:"name"` // 前端名称
Icon string `json:"icon"` // 前端图标
Hidden int32 `json:"hidden"` // 前端隐藏
CreateTime time.Time `json:"create_time"` // 创建时间
Children []*UmsMenuNode `json:"children"`
}
//菜单列表
func (m *UmsMenu)MenuList()([]*UmsMenuNode,error){
return m.GetMenu(0)
}
//递归获取树形菜单
func (m *UmsMenu)GetMenu(parentId int64)([]*UmsMenuNode,error){
o := orm.NewOrm()
var list []UmsMenu
//menu, err := UmsMenuDao.SelectByParentId(parentId)
//获取parentId的所有子菜单
o.QueryTable("ums_menu").Filter("parent_id",parentId).OrderBy("sort").All(&list)
tree := make([]*UmsMenuNode,0)
for _,item := range list {
child ,_:= item.GetMenu(item.Id) //获取parentId每一个子菜单的子菜单
node := &UmsMenuNode{
Id: item.Id,
ParentId: item.ParentId,
Title: item.Title,
Level: item.Level,
Sort: item.Sort,
Name: item.Name,
Icon: item.Icon,
Hidden: item.Hidden,
CreateTime:item.CreateTime,
}
node.Children = child
tree = append(tree,node)
}
return tree,nil
}
func main(){
orm.RegisterDataBase("default",DriverName,DSN)
// 注册模型
orm.RegisterModel(new(UmsMenu))
var l UmsMenu
l.MenuList()
}
有疑问加站长微信联系(非本文作者)