64 lines
2.6 KiB
Go
64 lines
2.6 KiB
Go
package pig
|
|
|
|
import (
|
|
"git.huangwc.com/pig/pig-farm-controller/internal/infra/models"
|
|
"git.huangwc.com/pig/pig-farm-controller/internal/infra/repository"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// PenTransferManager 定义了与猪只位置转移相关的底层数据库操作。
|
|
// 它是一个内部服务,被主服务 PigBatchService 调用。
|
|
type PenTransferManager interface {
|
|
// LogTransfer 在数据库中创建一条猪只迁移日志。
|
|
LogTransfer(tx *gorm.DB, log *models.PigTransferLog) error
|
|
|
|
// GetPenByID 用于获取猪栏的详细信息,供上层服务进行业务校验。
|
|
// 注意: 此方法依赖于您在 PenRepository 中添加对应的 GetPenByIDTx 方法。
|
|
GetPenByID(tx *gorm.DB, penID uint) (*models.Pen, error)
|
|
|
|
// GetPensByBatchID 获取一个猪群当前关联的所有猪栏。
|
|
// 注意: 此方法依赖于您在 PenRepository 中添加对应的 GetPensByBatchIDTx 方法。
|
|
GetPensByBatchID(tx *gorm.DB, batchID uint) ([]*models.Pen, error)
|
|
|
|
// UpdatePenFields 更新一个猪栏的指定字段。
|
|
// 注意: 此方法依赖于您在 PenRepository 中添加对应的 UpdatePenFieldsTx 方法。
|
|
UpdatePenFields(tx *gorm.DB, penID uint, updates map[string]interface{}) error
|
|
}
|
|
|
|
// penTransferManager 是 PenTransferManager 接口的具体实现。
|
|
// 它作为调栏管理器,处理底层的数据库交互。
|
|
type penTransferManager struct {
|
|
penRepo repository.PenRepository
|
|
}
|
|
|
|
// NewPenTransferManager 是 penTransferManager 的构造函数。
|
|
func NewPenTransferManager(penRepo repository.PenRepository) PenTransferManager {
|
|
return &penTransferManager{
|
|
penRepo: penRepo,
|
|
}
|
|
}
|
|
|
|
// LogTransfer 实现了在数据库中创建迁移日志的逻辑。
|
|
func (s *penTransferManager) LogTransfer(tx *gorm.DB, log *models.PigTransferLog) error {
|
|
// 直接使用事务对象创建记录。
|
|
return tx.Create(log).Error
|
|
}
|
|
|
|
// GetPenByID 实现了获取猪栏信息的逻辑。
|
|
// 注意: 此处调用了一个假设存在的方法 GetPenByIDTx。
|
|
func (s *penTransferManager) GetPenByID(tx *gorm.DB, penID uint) (*models.Pen, error) {
|
|
return s.penRepo.GetPenByIDTx(tx, penID)
|
|
}
|
|
|
|
// GetPensByBatchID 实现了获取猪群关联猪栏列表的逻辑。
|
|
// 注意: 此处调用了一个假设存在的方法 GetPensByBatchIDTx。
|
|
func (s *penTransferManager) GetPensByBatchID(tx *gorm.DB, batchID uint) ([]*models.Pen, error) {
|
|
return s.penRepo.GetPensByBatchIDTx(tx, batchID)
|
|
}
|
|
|
|
// UpdatePenFields 实现了更新猪栏字段的逻辑。
|
|
// 注意: 此处调用了一个假设存在的方法 UpdatePenFieldsTx。
|
|
func (s *penTransferManager) UpdatePenFields(tx *gorm.DB, penID uint, updates map[string]interface{}) error {
|
|
return s.penRepo.UpdatePenFieldsTx(tx, penID, updates)
|
|
}
|