增加删除检查

This commit is contained in:
2025-10-03 22:23:31 +08:00
parent c50366f670
commit 645c92978b

View File

@@ -8,8 +8,9 @@ import (
)
var (
ErrHouseContainsPens = errors.New("cannot delete a pig house that still contains pens")
ErrHouseNotFound = errors.New("the specified pig house does not exist")
ErrHouseContainsPens = errors.New("请在移除所有猪圈后移除当前猪舍")
ErrHouseNotFound = errors.New("猪舍不存在")
ErrPenInUse = errors.New("猪栏正在被活跃批次使用,无法删除")
)
// PigFarmRepository 定义了与猪场资产(猪舍、猪栏)相关的数据库操作接口
@@ -146,7 +147,28 @@ func (r *gormPigFarmRepository) UpdatePen(pen *models.Pen) error {
}
func (r *gormPigFarmRepository) DeletePen(id uint) error {
result := r.db.Delete(&models.Pen{}, id)
return r.db.Transaction(func(tx *gorm.DB) error {
var pen models.Pen
if err := tx.First(&pen, id).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return gorm.ErrRecordNotFound
}
return err
}
// 检查猪栏是否被活跃批次使用
if pen.PigBatchID != 0 {
var pigBatch models.PigBatch
err := tx.First(&pigBatch, pen.PigBatchID).Error
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
return err
}
if pigBatch.IsActive() {
return ErrPenInUse
}
}
result := tx.Delete(&models.Pen{}, id)
if result.Error != nil {
return result.Error
}
@@ -154,4 +176,5 @@ func (r *gormPigFarmRepository) DeletePen(id uint) error {
return gorm.ErrRecordNotFound
}
return nil
})
}