type MenuItem struct{
Pid int `json:"pid,omitempty"`
Id int `json:"id,omitempty"`
Title string `json:"title"`
Url string `json:"url"`
Children []*MenuItem `json:"children,omitempty"`
}
type RoleDetailResp struct {
RoleId int64 `json:"role_id"`
RoleName string `json:"role_name"`
RoleDesc string `json:"role_desc"`
MenuList []*types.MenuItem `json:"allocation"`
}
var MenuList = []*MenuItem{
{Id: 1, Pid: 0, Title: "会员管理", Url: ""},
{Id: 2, Pid: 1, Title: "用户列表", Url: ""},
{Id: 3, Pid: 1, Title: "会员充值列表", Url: ""},
{Id: 4, Pid: 0, Title: "运营列表", Url: ""},
{Id: 5, Pid: 4, Title: "分享海报配置", Url: ""},
{Id: 6, Pid: 4, Title: "会员配置", Url: ""},
{Id: 7, Pid: 4, Title: "金币配置", Url: ""},
{Id: 8, Pid: 4, Title: "礼物配置", Url: ""},
{Id: 9, Pid: 4, Title: "标签配置", Url: ""},
{Id: 10, Pid: 0, Title: "权限管理", Url: ""},
{Id: 11, Pid: 10, Title: "角色管理", Url: ""},
{Id: 12, Pid: 10, Title: "管理员列表", Url: ""},
}
func RoleMenuList(request *http.Request)(resp interface{},err error){
list := MenuList
node_map := make(map[int]MenuItem)
for _, node := range list {
node_map[node.Id] = node
}
var tree []*MenuItem
var menu_list RoleMenuListResp
for _, node := range list {
if node.Pid == 0 {
tree = append(tree, node)
} else {
if parent,ok := node_map[node.Pid];ok {
parent.Children = append(parent.Children,node)
}
}
}
menu_list.List = tree
resp = menu_list
return
}
我在将硬编码的菜单输出到json,但RoleMenuList组合的菜单有重复,重复内容:
{
"code": 0,
"msg": "success",
"data": {
"list": [{
"id": 1,
"title": "会员管理",
"url": "",
"children": [{
"pid": 1,
"id": 2,
"title": "用户列表",
"url": ""
}, {
"pid": 1,
"id": 3,
"title": "会员充值列表",
"url": ""
}, {
"pid": 1,
"id": 2,
"title": "用户列表",
"url": ""
}, {
"pid": 1,
"id": 3,
"title": "会员充值列表",
"url": ""
}]
}, {
"id": 4,
"title": "运营列表",
"url": "",
"children": [{
"pid": 4,
"id": 5,
"title": "分享海报配置",
"url": ""
}, {
"pid": 4,
"id": 6,
"title": "会员配置",
"url": ""
}, {
"pid": 4,
"id": 7,
"title": "金币配置",
"url": ""
}, {
"pid": 4,
"id": 8,
"title": "礼物配置",
"url": ""
}, {
"pid": 4,
"id": 9,
"title": "标签配置",
"url": ""
}, {
"pid": 4,
"id": 5,
"title": "分享海报配置",
"url": ""
}, {
"pid": 4,
"id": 6,
"title": "会员配置",
"url": ""
}, {
"pid": 4,
"id": 7,
"title": "金币配置",
"url": ""
}, {
"pid": 4,
"id": 8,
"title": "礼物配置",
"url": ""
}, {
"pid": 4,
"id": 9,
"title": "标签配置",
"url": ""
}]
}, {
"id": 10,
"title": "权限管理",
"url": "",
"children": [{
"pid": 10,
"id": 11,
"title": "角色管理",
"url": ""
}, {
"pid": 10,
"id": 12,
"title": "管理员列表",
"url": ""
}, {
"pid": 10,
"id": 11,
"title": "角色管理",
"url": ""
}, {
"pid": 10,
"id": 12,
"title": "管理员列表",
"url": ""
}]
}]
}
}