修复更新计划时会用原计划ID创建新计划的问题
This commit is contained in:
		| @@ -79,6 +79,9 @@ func (f *feedPlanRepo) UpdateFeedingPlan(feedingPlan *model.FeedingPlan) error { | |||||||
| 			return err | 			return err | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | 		// 清空所有ID,包括子计划和步骤的ID | ||||||
|  | 		f.clearAllIDs(feedingPlan) | ||||||
|  |  | ||||||
| 		// 再重新创建更新后的计划 | 		// 再重新创建更新后的计划 | ||||||
| 		if err := f.createFeedingPlanWithTx(tx, feedingPlan); err != nil { | 		if err := f.createFeedingPlanWithTx(tx, feedingPlan); err != nil { | ||||||
| 			return err | 			return err | ||||||
| @@ -178,3 +181,22 @@ func (f *feedPlanRepo) createFeedingPlanWithTx(tx *gorm.DB, feedingPlan *model.F | |||||||
|  |  | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // clearAllIDs 清空计划及其子计划和步骤的所有ID | ||||||
|  | func (f *feedPlanRepo) clearAllIDs(plan *model.FeedingPlan) { | ||||||
|  | 	// 清空计划ID | ||||||
|  | 	plan.ID = 0 | ||||||
|  |  | ||||||
|  | 	// 清空所有步骤的ID和关联的计划ID | ||||||
|  | 	for i := range plan.Steps { | ||||||
|  | 		plan.Steps[i].ID = 0 | ||||||
|  | 		plan.Steps[i].PlanID = 0 | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	// 清空所有子计划的ID和关联的父计划ID,并递归清空子计划的ID | ||||||
|  | 	for i := range plan.SubPlans { | ||||||
|  | 		plan.SubPlans[i].ID = 0 | ||||||
|  | 		plan.SubPlans[i].ParentID = nil | ||||||
|  | 		f.clearAllIDs(&plan.SubPlans[i]) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user