77 lines
2.0 KiB
Go
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
|
|
}
|