From 64c86de71e0ca4d27afb77d638c88ad64f603943 Mon Sep 17 00:00:00 2001 From: huang <1724659546@qq.com> Date: Wed, 10 Sep 2025 14:32:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0UpdateFeedingPlan?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/storage/repository/feed.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/internal/storage/repository/feed.go b/internal/storage/repository/feed.go index 35c7f55..eae3559 100644 --- a/internal/storage/repository/feed.go +++ b/internal/storage/repository/feed.go @@ -21,6 +21,9 @@ type FeedPlanRepo interface { // DeleteFeedingPlan 删除饲料计划及其所有子计划和步骤 DeleteFeedingPlan(id uint) error + + // UpdateFeedingPlan 更新饲料计划,采用先删除再重新创建的方式 + UpdateFeedingPlan(feedingPlan *model.FeedingPlan) error } type feedPlanRepo struct { @@ -62,6 +65,29 @@ func (f *feedPlanRepo) CreateFeedingPlan(feedingPlan *model.FeedingPlan) error { }) } +// UpdateFeedingPlan 更新饲料计划,采用先删除再重新创建的方式 +func (f *feedPlanRepo) UpdateFeedingPlan(feedingPlan *model.FeedingPlan) error { + // 检查计划是否存在 + _, err := f.FindFeedingPlanByID(feedingPlan.ID) + if err != nil { + return err + } + + return f.db.Transaction(func(tx *gorm.DB) error { + // 先删除原有的计划 + if err := f.deleteFeedingPlanWithTx(tx, feedingPlan.ID); err != nil { + return err + } + + // 再重新创建更新后的计划 + if err := f.createFeedingPlanWithTx(tx, feedingPlan); err != nil { + return err + } + + return nil + }) +} + // DeleteFeedingPlan 删除饲料计划及其所有子计划和步骤 func (f *feedPlanRepo) DeleteFeedingPlan(id uint) error { return f.db.Transaction(func(tx *gorm.DB) error {