Files
tyapi-server/internal/domains/admin/services/admin_service.go

57 lines
1.4 KiB
Go
Raw Normal View History

2025-07-11 21:05:58 +08:00
package services
import (
"context"
"encoding/json"
"go.uber.org/zap"
"tyapi-server/internal/domains/admin/entities"
"tyapi-server/internal/domains/admin/repositories"
)
2025-07-13 16:36:20 +08:00
// AdminService 管理员领域服务
2025-07-11 21:05:58 +08:00
type AdminService struct {
2025-07-13 16:36:20 +08:00
adminRepo repositories.AdminRepository
permissionRepo repositories.AdminPermissionRepository
logger *zap.Logger
2025-07-11 21:05:58 +08:00
}
2025-07-13 16:36:20 +08:00
// NewAdminService 创建管理员领域服务
2025-07-11 21:05:58 +08:00
func NewAdminService(
adminRepo repositories.AdminRepository,
permissionRepo repositories.AdminPermissionRepository,
logger *zap.Logger,
) *AdminService {
return &AdminService{
2025-07-13 16:36:20 +08:00
adminRepo: adminRepo,
permissionRepo: permissionRepo,
logger: logger,
2025-07-11 21:05:58 +08:00
}
}
2025-07-13 16:36:20 +08:00
// GetAdminPermissions 获取管理员权限
func (s *AdminService) GetAdminPermissions(ctx context.Context, admin *entities.Admin) ([]string, error) {
2025-07-11 21:05:58 +08:00
// 首先从角色获取权限
rolePermissions, err := s.adminRepo.GetPermissionsByRole(ctx, admin.Role)
if err != nil {
return nil, err
}
// 从角色权限中提取权限代码
permissions := make([]string, 0, len(rolePermissions))
for _, perm := range rolePermissions {
permissions = append(permissions, perm.Code)
}
// 如果有自定义权限,也添加进去
if admin.Permissions != "" {
var customPermissions []string
if err := json.Unmarshal([]byte(admin.Permissions), &customPermissions); err == nil {
permissions = append(permissions, customPermissions...)
}
}
return permissions, nil
}