Files
pig-farm-controller/internal/app/service/pig_service.go

50 lines
2.1 KiB
Go

package service
import (
"errors"
domain_pig "git.huangwc.com/pig/pig-farm-controller/internal/domain/pig"
)
var (
ErrHouseContainsPens = errors.New("无法删除包含猪栏的猪舍")
ErrHouseNotFound = errors.New("指定的猪舍不存在")
ErrPenInUse = errors.New("猪栏正在被活跃批次使用,无法删除")
ErrPenNotFound = errors.New("指定的猪栏不存在")
ErrPenStatusInvalidForOccupiedPen = errors.New("猪栏已被批次使用,无法设置为非使用中状态")
ErrPenStatusInvalidForUnoccupiedPen = errors.New("猪栏未被批次使用,无法设置为使用中状态")
ErrPigBatchNotFound = errors.New("指定的猪批次不存在")
ErrPigBatchActive = errors.New("活跃的猪批次不能被删除")
ErrPigBatchNotActive = errors.New("猪批次不处于活跃状态,无法修改关联猪栏")
ErrPenOccupiedByOtherBatch = errors.New("猪栏已被其他批次使用")
ErrPenStatusInvalidForAllocation = errors.New("猪栏状态不允许分配")
ErrPenNotAssociatedWithBatch = errors.New("猪栏未与该批次关联")
)
// mapDomainError 将领域层的错误转换为应用服务层的公共错误。
func mapDomainError(err error) error {
if err == nil {
return nil
}
switch {
case errors.Is(err, domain_pig.ErrPigBatchNotFound):
return ErrPigBatchNotFound
case errors.Is(err, domain_pig.ErrPigBatchActive):
return ErrPigBatchActive
case errors.Is(err, domain_pig.ErrPigBatchNotActive):
return ErrPigBatchNotActive
case errors.Is(err, domain_pig.ErrPenOccupiedByOtherBatch):
return ErrPenOccupiedByOtherBatch
case errors.Is(err, domain_pig.ErrPenStatusInvalidForAllocation):
return ErrPenStatusInvalidForAllocation
case errors.Is(err, domain_pig.ErrPenNotAssociatedWithBatch):
return ErrPenNotAssociatedWithBatch
case errors.Is(err, domain_pig.ErrPenNotFound):
return ErrPenNotFound
// 可以添加更多领域错误到应用层错误的映射
default:
return err // 对于未知的领域错误,直接返回
}
}