猪群管理聚合服务 增加调栏管理

This commit is contained in:
2025-10-05 17:30:39 +08:00
parent 6d080d250d
commit 01327eb8d2
10 changed files with 350 additions and 33 deletions

View File

@@ -65,31 +65,31 @@ func (s *pigBatchService) CreatePigBatch(dto *dto.PigBatchCreateDTO) (*dto.PigBa
createdBatch, err := s.domainService.CreatePigBatch(batch)
if err != nil {
s.logger.Errorf("应用层: 创建猪批次失败: %v", err)
return nil, err // 将领域层的错误传递上去
return nil, mapDomainError(err)
}
// 3. 领域模型 -> DTO
return s.toPigBatchResponseDTO(createdBatch), nil
}
// GetPigBatch 从领域服务获取数据并转换为DTO。
// GetPigBatch 从领域服务获取数据并转换为DTO,同时处理错误转换
func (s *pigBatchService) GetPigBatch(id uint) (*dto.PigBatchResponseDTO, error) {
batch, err := s.domainService.GetPigBatch(id)
if err != nil {
s.logger.Warnf("应用层: 获取猪批次失败, ID: %d, 错误: %v", id, err)
return nil, err
return nil, mapDomainError(err)
}
return s.toPigBatchResponseDTO(batch), nil
}
// UpdatePigBatch 协调获取、更新和保存的流程。
// UpdatePigBatch 协调获取、更新和保存的流程,并处理错误转换
func (s *pigBatchService) UpdatePigBatch(id uint, dto *dto.PigBatchUpdateDTO) (*dto.PigBatchResponseDTO, error) {
// 1. 先获取最新的领域模型
existingBatch, err := s.domainService.GetPigBatch(id)
if err != nil {
s.logger.Warnf("应用层: 更新猪批次失败,获取原批次信息错误, ID: %d, 错误: %v", id, err)
return nil, err
return nil, mapDomainError(err)
}
// 2. 将DTO中的变更应用到模型上
@@ -116,19 +116,19 @@ func (s *pigBatchService) UpdatePigBatch(id uint, dto *dto.PigBatchUpdateDTO) (*
updatedBatch, err := s.domainService.UpdatePigBatch(existingBatch)
if err != nil {
s.logger.Errorf("应用层: 更新猪批次失败, ID: %d, 错误: %v", id, err)
return nil, err
return nil, mapDomainError(err)
}
// 4. 转换并返回结果
return s.toPigBatchResponseDTO(updatedBatch), nil
}
// DeletePigBatch 将删除操作委托给领域服务。
// DeletePigBatch 将删除操作委托给领域服务,并转换领域错误为应用层错误
func (s *pigBatchService) DeletePigBatch(id uint) error {
err := s.domainService.DeletePigBatch(id)
if err != nil {
s.logger.Errorf("应用层: 删除猪批次失败, ID: %d, 错误: %v", id, err)
return err
return mapDomainError(err)
}
return nil
}
@@ -138,7 +138,7 @@ func (s *pigBatchService) ListPigBatches(isActive *bool) ([]*dto.PigBatchRespons
batches, err := s.domainService.ListPigBatches(isActive)
if err != nil {
s.logger.Errorf("应用层: 批量查询猪批次失败: %v", err)
return nil, err
return nil, mapDomainError(err)
}
var responseDTOs []*dto.PigBatchResponseDTO
@@ -149,12 +149,12 @@ func (s *pigBatchService) ListPigBatches(isActive *bool) ([]*dto.PigBatchRespons
return responseDTOs, nil
}
// UpdatePigBatchPens 将关联猪栏的复杂操作委托给领域服务。
// UpdatePigBatchPens 将关联猪栏的复杂操作委托给领域服务,并处理错误转换
func (s *pigBatchService) UpdatePigBatchPens(batchID uint, desiredPenIDs []uint) error {
err := s.domainService.UpdatePigBatchPens(batchID, desiredPenIDs)
if err != nil {
s.logger.Errorf("应用层: 更新猪批次猪栏关联失败, 批次ID: %d, 错误: %v", batchID, err)
return err
return mapDomainError(err)
}
return nil
}