72 lines
1.7 KiB
Go
72 lines
1.7 KiB
Go
package menu
|
|
|
|
import (
|
|
"hyapp-admin-server/internal/model"
|
|
"hyapp-admin-server/internal/modules/shared"
|
|
"hyapp-admin-server/internal/repository"
|
|
)
|
|
|
|
type MenuService struct {
|
|
store *repository.Store
|
|
}
|
|
|
|
type MenuInput struct {
|
|
ParentID *uint
|
|
Label string
|
|
Code string
|
|
Path string
|
|
Icon string
|
|
PermissionCode string
|
|
Sort int
|
|
Visible bool
|
|
}
|
|
|
|
func NewService(store *repository.Store) *MenuService {
|
|
return &MenuService{store: store}
|
|
}
|
|
|
|
func (s *MenuService) NavigationMenus(actor shared.Actor) ([]model.Menu, error) {
|
|
return s.store.MenusForPermissions(actor.Permissions)
|
|
}
|
|
|
|
func (s *MenuService) ListSystemMenus() ([]model.Menu, error) {
|
|
return s.store.ListMenus()
|
|
}
|
|
|
|
func (s *MenuService) CreateMenu(input MenuInput) (*model.Menu, error) {
|
|
menu := menuFromInput(input)
|
|
if err := s.store.CreateMenu(&menu); err != nil {
|
|
return nil, err
|
|
}
|
|
return &menu, nil
|
|
}
|
|
|
|
func (s *MenuService) UpdateMenu(id uint, input MenuInput) (*model.Menu, error) {
|
|
return s.store.UpdateMenu(id, menuFromInput(input))
|
|
}
|
|
|
|
func (s *MenuService) DeleteMenu(id uint) error {
|
|
return s.store.DeleteMenu(id)
|
|
}
|
|
|
|
func (s *MenuService) UpdateMenuVisible(id uint, visible bool) (*model.Menu, error) {
|
|
return s.store.UpdateMenuVisible(id, visible)
|
|
}
|
|
|
|
func (s *MenuService) SortMenus(items []repository.MenuSortItem) error {
|
|
return s.store.SortMenus(items)
|
|
}
|
|
|
|
func menuFromInput(input MenuInput) model.Menu {
|
|
return model.Menu{
|
|
ParentID: input.ParentID,
|
|
Title: input.Label,
|
|
Code: input.Code,
|
|
Path: input.Path,
|
|
Icon: input.Icon,
|
|
PermissionCode: input.PermissionCode,
|
|
Sort: input.Sort,
|
|
Visible: input.Visible,
|
|
}
|
|
}
|