56 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			2.4 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("猪栏未与该批次关联")
 | |
| 	ErrPenNotEmpty                      = errors.New("猪栏内仍有猪只")
 | |
| 	ErrInvalidOperation                 = 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
 | |
| 	case errors.Is(err, domain_pig.ErrPenNotEmpty):
 | |
| 		return ErrPenNotEmpty
 | |
| 	case errors.Is(err, domain_pig.ErrInvalidOperation):
 | |
| 		return ErrInvalidOperation
 | |
| 	// 可以添加更多领域错误到应用层错误的映射
 | |
| 	default:
 | |
| 		return err // 对于未知的领域错误,直接返回
 | |
| 	}
 | |
| }
 |