Documentation
¶
Index ¶
- Constants
- type AllMenuRequest
- type Menu
- type MenuClosure
- type Repo
- type UseCase
- func (u *UseCase) AddMenu(ctx kratosx.Context, in *Menu) (uint32, error)
- func (u *UseCase) DeleteMenu(ctx kratosx.Context, id uint32) error
- func (u *UseCase) MenuTree(ctx kratosx.Context, in *AllMenuRequest) ([]tree.Tree, error)
- func (u *UseCase) MenuTreeFromRole(ctx kratosx.Context) ([]tree.Tree, error)
- func (u *UseCase) UpdateMenu(ctx kratosx.Context, in *Menu) error
Constants ¶
View Source
const ( MenuRoot = "R" MenuApi = "A" MenuPage = "M" MenuGroup = "G" MenuBasic = "BA" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AllMenuRequest ¶
type Menu ¶
type Menu struct {
types.BaseModel
ParentId uint32 `json:"parent_id"`
Title string `json:"title"`
Type string `json:"type"`
Keyword *string `json:"keyword"`
Icon *string `json:"icon"`
Api *string `json:"api"`
Method *string `json:"method"`
Path *string `json:"path"`
Permission *string `json:"permission"`
CheckObject *bool `json:"check_object"`
CheckObjectRule *string `json:"check_object_rule"`
Component *string `json:"component"`
Redirect *string `json:"redirect"`
Weight *uint32 `json:"weight"`
IsHidden *bool `json:"is_hidden"`
IsCache *bool `json:"is_cache"`
IsHome *bool `json:"is_home"`
IsAffix *bool `json:"is_affix"`
Children []*Menu `json:"children" gorm:"-"`
}
type MenuClosure ¶ added in v1.0.13
type Repo ¶
type Repo interface {
InitBasicMenu(ctx kratosx.Context)
AllRoleKeyword(ctx kratosx.Context, id uint32) ([]string, error)
AllMenu(ctx kratosx.Context, in *AllMenuRequest) ([]*Menu, error)
GetMenu(ctx kratosx.Context, id uint32) (*Menu, error)
GetMenuByApi(ctx kratosx.Context, api, method string) (*Menu, error)
AddMenu(ctx kratosx.Context, in *Menu) (uint32, error)
UseHome(ctx kratosx.Context, app string, id uint32) error
UpdateMenu(ctx kratosx.Context, in *Menu) error
DeleteMenu(ctx kratosx.Context, ids []uint32) error
}
type UseCase ¶
type UseCase struct {
// contains filtered or unexported fields
}
func (*UseCase) MenuTreeFromRole ¶
// MenuTree 查询系统菜单树
func (u *UseCase) MenuTree(ctx kratosx.Context, in *AllMenuRequest) ([]tree.Tree, error) {
list, err := u.repo.AllMenu(ctx, in)
if err != nil {
return nil, errors.Database()
}
var (
group = make(map[string][]tree.Tree)
roots []tree.Tree
apps []*Menu
)
// 构建树枝,并选取根节点
for _, item := range list {
group[item.App] = append(group[item.App], item)
if item.ParentId == 0 {
apps = append(apps, item)
}
}
// 通过根节点构造树
for _, app := range apps {
root := tree.BuildTreeByID(group[app.App], app.ID())
roots = append(roots, root)
}
return roots, nil
}
Click to show internal directories.
Click to hide internal directories.