95 lines
2.4 KiB
Go
95 lines
2.4 KiB
Go
package service
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"dd_fiber_api/internal/admin_auth"
|
|
"dd_fiber_api/internal/admin_auth/dao"
|
|
"dd_fiber_api/pkg/snowflake"
|
|
)
|
|
|
|
// PermissionService 权限服务
|
|
type PermissionService struct {
|
|
permissionDAO *dao.PermissionDAO
|
|
}
|
|
|
|
// NewPermissionService 创建权限服务
|
|
func NewPermissionService(permissionDAO *dao.PermissionDAO) *PermissionService {
|
|
return &PermissionService{
|
|
permissionDAO: permissionDAO,
|
|
}
|
|
}
|
|
|
|
// ListPermissions 列出权限
|
|
func (s *PermissionService) ListPermissions(keyword, resource string, page, pageSize int) ([]*admin_auth.AdminPermission, int, error) {
|
|
if page < 1 {
|
|
page = 1
|
|
}
|
|
if pageSize < 1 {
|
|
pageSize = 10
|
|
}
|
|
if pageSize > 100 {
|
|
pageSize = 100
|
|
}
|
|
|
|
return s.permissionDAO.List(keyword, resource, page, pageSize)
|
|
}
|
|
|
|
// GetPermission 获取权限详情
|
|
func (s *PermissionService) GetPermission(id string) (*admin_auth.AdminPermission, error) {
|
|
return s.permissionDAO.GetByID(id)
|
|
}
|
|
|
|
// CreatePermission 创建权限
|
|
func (s *PermissionService) CreatePermission(permission *admin_auth.AdminPermission) error {
|
|
// 检查代码是否已存在
|
|
existing, err := s.permissionDAO.GetByCode(permission.Code)
|
|
if err != nil {
|
|
return fmt.Errorf("检查权限代码失败: %v", err)
|
|
}
|
|
if existing != nil {
|
|
return fmt.Errorf("权限代码已存在: %s", permission.Code)
|
|
}
|
|
|
|
// 生成ID
|
|
permission.ID = snowflake.GenerateID()
|
|
|
|
return s.permissionDAO.Create(permission)
|
|
}
|
|
|
|
// UpdatePermission 更新权限
|
|
func (s *PermissionService) UpdatePermission(permission *admin_auth.AdminPermission) error {
|
|
// 检查权限是否存在
|
|
existing, err := s.permissionDAO.GetByID(permission.ID)
|
|
if err != nil {
|
|
return fmt.Errorf("查询权限失败: %v", err)
|
|
}
|
|
if existing == nil {
|
|
return fmt.Errorf("权限不存在")
|
|
}
|
|
|
|
// 如果修改了代码,检查新代码是否已存在
|
|
if permission.Code != existing.Code {
|
|
codeExists, err := s.permissionDAO.GetByCode(permission.Code)
|
|
if err != nil {
|
|
return fmt.Errorf("检查权限代码失败: %v", err)
|
|
}
|
|
if codeExists != nil {
|
|
return fmt.Errorf("权限代码已存在: %s", permission.Code)
|
|
}
|
|
}
|
|
|
|
return s.permissionDAO.Update(permission)
|
|
}
|
|
|
|
// DeletePermission 删除权限
|
|
func (s *PermissionService) DeletePermission(id string) error {
|
|
return s.permissionDAO.Delete(id)
|
|
}
|
|
|
|
// GetResources 获取所有资源列表
|
|
func (s *PermissionService) GetResources() ([]string, error) {
|
|
return s.permissionDAO.GetResources()
|
|
}
|
|
|