实现UpdateFeedingPlan
This commit is contained in:
@@ -21,6 +21,9 @@ type FeedPlanRepo interface {
|
|||||||
|
|
||||||
// DeleteFeedingPlan 删除饲料计划及其所有子计划和步骤
|
// DeleteFeedingPlan 删除饲料计划及其所有子计划和步骤
|
||||||
DeleteFeedingPlan(id uint) error
|
DeleteFeedingPlan(id uint) error
|
||||||
|
|
||||||
|
// UpdateFeedingPlan 更新饲料计划,采用先删除再重新创建的方式
|
||||||
|
UpdateFeedingPlan(feedingPlan *model.FeedingPlan) error
|
||||||
}
|
}
|
||||||
|
|
||||||
type feedPlanRepo struct {
|
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 删除饲料计划及其所有子计划和步骤
|
// DeleteFeedingPlan 删除饲料计划及其所有子计划和步骤
|
||||||
func (f *feedPlanRepo) DeleteFeedingPlan(id uint) error {
|
func (f *feedPlanRepo) DeleteFeedingPlan(id uint) error {
|
||||||
return f.db.Transaction(func(tx *gorm.DB) error {
|
return f.db.Transaction(func(tx *gorm.DB) error {
|
||||||
|
|||||||
Reference in New Issue
Block a user