跳到主要内容

Service 层设计

Service 层负责业务逻辑处理。

设计原则

单一职责

每个 Service 只负责一个业务领域:

  • UserService: 用户管理
  • ClusterService: 集群管理
  • VMService: 虚拟机管理

依赖注入

使用依赖注入管理 Service 依赖:

type ClusterService struct {
repo repository.ClusterRepository
proxmox *proxmox.Client
}

接口抽象

定义接口便于测试和扩展:

type ClusterService interface {
CreateCluster(ctx context.Context, req *CreateClusterRequest) (*Cluster, error)
GetCluster(ctx context.Context, id int64) (*Cluster, error)
}

业务逻辑

数据验证

在 Service 层进行业务规则验证:

  • 参数校验
  • 业务规则检查
  • 权限验证

数据转换

将 Repository 返回的数据转换为业务对象:

  • DTO 转换
  • 数据聚合
  • 格式化处理

事务管理

在 Service 层管理事务:

  • 数据库事务
  • 分布式事务
  • 补偿机制