Files
server/app/services/menu_service.go
T
2026-01-16 15:49:34 +08:00

77 lines
2.0 KiB
Go

package services
import (
"github.com/goravel/framework/facades"
apperrors "goravel/app/errors"
"goravel/app/models"
)
type MenuService interface {
// GetByID 根据ID获取菜单
GetByID(id uint) (*models.Menu, error)
// Create 创建菜单
Create(parentID uint, title, slug, icon, path, component, permission string, menuType uint8, status uint8, sort int, isHidden uint8, linkType, openType uint8) (*models.Menu, error)
// Update 更新菜单
Update(menu *models.Menu) error
// Delete 删除菜单
Delete(menu *models.Menu) error
}
type MenuServiceImpl struct {
}
func NewMenuService() MenuService {
return &MenuServiceImpl{}
}
// GetByID 根据ID获取菜单
func (s *MenuServiceImpl) GetByID(id uint) (*models.Menu, error) {
var menu models.Menu
if err := facades.Orm().Query().Where("id", id).FirstOrFail(&menu); err != nil {
return nil, apperrors.ErrMenuNotFound.WithError(err)
}
return &menu, nil
}
// Create 创建菜单
func (s *MenuServiceImpl) Create(parentID uint, title, slug, icon, path, component, permission string, menuType uint8, status uint8, sort int, isHidden uint8, linkType, openType uint8) (*models.Menu, error) {
menu := &models.Menu{
ParentID: parentID,
Title: title,
Slug: slug,
Icon: icon,
Path: path,
Component: component,
Permission: permission,
Type: menuType,
Status: status,
Sort: sort,
IsHidden: isHidden,
LinkType: linkType,
OpenType: openType,
}
if err := facades.Orm().Query().Create(menu); err != nil {
return nil, apperrors.ErrCreateFailed.WithError(err)
}
return menu, nil
}
// Update 更新菜单
func (s *MenuServiceImpl) Update(menu *models.Menu) error {
if err := facades.Orm().Query().Save(menu); err != nil {
return apperrors.ErrUpdateFailed.WithError(err)
}
return nil
}
// Delete 删除菜单
func (s *MenuServiceImpl) Delete(menu *models.Menu) error {
if _, err := facades.Orm().Query().Delete(menu); err != nil {
return apperrors.ErrDeleteFailed.WithError(err)
}
return nil
}