增加删除检查
This commit is contained in:
@@ -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
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user