调整仓库方法归属
This commit is contained in:
@@ -31,19 +31,25 @@ type PigFarmService interface {
|
||||
}
|
||||
|
||||
type pigFarmService struct {
|
||||
logger *logs.Logger
|
||||
farmRepository repository.PigFarmRepository
|
||||
penRepository repository.PigPenRepository
|
||||
uow repository.UnitOfWork // 工作单元,用于事务管理
|
||||
logger *logs.Logger
|
||||
farmRepository repository.PigFarmRepository
|
||||
penRepository repository.PigPenRepository
|
||||
batchRepository repository.PigBatchRepository
|
||||
uow repository.UnitOfWork // 工作单元,用于事务管理
|
||||
}
|
||||
|
||||
// NewPigFarmService 创建一个新的 PigFarmService 实例
|
||||
func NewPigFarmService(farmRepository repository.PigFarmRepository, penRepository repository.PigPenRepository, uow repository.UnitOfWork, logger *logs.Logger) PigFarmService {
|
||||
func NewPigFarmService(farmRepository repository.PigFarmRepository,
|
||||
penRepository repository.PigPenRepository,
|
||||
batchRepository repository.PigBatchRepository,
|
||||
uow repository.UnitOfWork,
|
||||
logger *logs.Logger) PigFarmService {
|
||||
return &pigFarmService{
|
||||
logger: logger,
|
||||
farmRepository: farmRepository,
|
||||
penRepository: penRepository,
|
||||
uow: uow,
|
||||
logger: logger,
|
||||
farmRepository: farmRepository,
|
||||
penRepository: penRepository,
|
||||
batchRepository: batchRepository,
|
||||
uow: uow,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -175,7 +181,7 @@ func (s *pigFarmService) DeletePen(id uint) error {
|
||||
// 检查猪栏是否关联了活跃批次
|
||||
// 注意:pen.PigBatchID 是指针类型,需要检查是否为 nil
|
||||
if pen.PigBatchID != nil && *pen.PigBatchID != 0 {
|
||||
pigBatch, err := s.farmRepository.GetPigBatchByID(*pen.PigBatchID)
|
||||
pigBatch, err := s.batchRepository.GetPigBatchByID(*pen.PigBatchID)
|
||||
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@ func NewApplication(configPath string) (*Application, error) {
|
||||
pigBatchDomain := pig.NewPigBatchService(pigBatchRepo, unitOfWork, penTransferManager)
|
||||
|
||||
// --- 业务逻辑处理器初始化 ---
|
||||
pigFarmService := service.NewPigFarmService(pigFarmRepo, pigPenRepo, unitOfWork, logger)
|
||||
pigFarmService := service.NewPigFarmService(pigFarmRepo, pigPenRepo, pigBatchRepo, unitOfWork, logger)
|
||||
pigBatchService := service.NewPigBatchService(pigBatchDomain, logger)
|
||||
|
||||
// 初始化审计服务
|
||||
|
||||
@@ -37,11 +37,7 @@ func (r *gormPigBatchRepository) CreatePigBatch(batch *models.PigBatch) (*models
|
||||
|
||||
// GetPigBatchByID 根据ID获取单个猪批次
|
||||
func (r *gormPigBatchRepository) GetPigBatchByID(id uint) (*models.PigBatch, error) {
|
||||
var batch models.PigBatch
|
||||
if err := r.db.First(&batch, id).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &batch, nil
|
||||
return r.GetPigBatchByIDTx(r.db, id)
|
||||
}
|
||||
|
||||
// UpdatePigBatch 更新一个猪批次
|
||||
|
||||
@@ -16,12 +16,6 @@ type PigFarmRepository interface {
|
||||
// DeletePigHouse 根据ID删除一个猪舍,返回受影响的行数和错误
|
||||
DeletePigHouse(id uint) (int64, error)
|
||||
CountPensInHouse(houseID uint) (int64, error)
|
||||
|
||||
// PigBatch methods
|
||||
// GetPigBatchByID 根据ID获取单个猪批次 (非事务性)
|
||||
GetPigBatchByID(id uint) (*models.PigBatch, error)
|
||||
// GetPigBatchByIDTx 根据ID获取单个猪批次 (事务性)
|
||||
GetPigBatchByIDTx(tx *gorm.DB, id uint) (*models.PigBatch, error)
|
||||
}
|
||||
|
||||
// gormPigFarmRepository 是 PigFarmRepository 的 GORM 实现
|
||||
@@ -83,23 +77,3 @@ func (r *gormPigFarmRepository) CountPensInHouse(houseID uint) (int64, error) {
|
||||
err := r.db.Model(&models.Pen{}).Where("house_id = ?", houseID).Count(&count).Error
|
||||
return count, err
|
||||
}
|
||||
|
||||
// --- PigBatch Implementation ---
|
||||
|
||||
// GetPigBatchByID 根据ID获取单个猪批次 (非事务性)
|
||||
func (r *gormPigFarmRepository) GetPigBatchByID(id uint) (*models.PigBatch, error) {
|
||||
var batch models.PigBatch
|
||||
if err := r.db.First(&batch, id).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &batch, nil
|
||||
}
|
||||
|
||||
// GetPigBatchByIDTx 根据ID获取单个猪批次 (事务性)
|
||||
func (r *gormPigFarmRepository) GetPigBatchByIDTx(tx *gorm.DB, id uint) (*models.PigBatch, error) {
|
||||
var batch models.PigBatch
|
||||
if err := tx.First(&batch, id).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &batch, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user