实现UpdateFeedingPlan
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user