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
|
|
|
|
|
}
|