优化代码
This commit is contained in:
		| @@ -33,9 +33,9 @@ func (app *Application) initializeState() error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // initializeSystemPlans 确保预定义的系统计划在数据库中存在。 | ||||
| // initializeSystemPlans 确保预定义的系统计划在数据库中存在并保持最新。 | ||||
| func (app *Application) initializeSystemPlans() error { | ||||
| 	app.Logger.Info("开始检查并创建预定义的系统计划...") | ||||
| 	app.Logger.Info("开始检查并更新预定义的系统计划...") | ||||
|  | ||||
| 	// 动态构建预定义计划列表 | ||||
| 	predefinedSystemPlans := app.getPredefinedSystemPlans() | ||||
| @@ -43,24 +43,39 @@ func (app *Application) initializeSystemPlans() error { | ||||
| 	// 1. 获取所有已存在的系统计划 | ||||
| 	existingPlans, _, err := app.Infra.Repos.PlanRepo.ListPlans(repository.ListPlansOptions{ | ||||
| 		PlanType: repository.PlanTypeFilterSystem, | ||||
| 	}, 1, 999) // 使用一个较大的 pageSize 来获取所有系统计划 | ||||
| 	}, 1, 99999) // 使用一个较大的 pageSize 来获取所有系统计划 | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("获取现有系统计划失败: %w", err) | ||||
| 	} | ||||
|  | ||||
| 	// 2. 为了方便查找, 将现有计划名放入一个 map | ||||
| 	existingPlanNames := make(map[string]bool) | ||||
| 	for _, p := range existingPlans { | ||||
| 		existingPlanNames[p.Name] = true | ||||
| 	existingPlanMap := make(map[string]*models.Plan) | ||||
| 	for i := range existingPlans { | ||||
| 		existingPlanMap[existingPlans[i].Name] = &existingPlans[i] | ||||
| 	} | ||||
|  | ||||
| 	// 3. 遍历预定义的计划列表 | ||||
| 	for _, predefinedPlan := range predefinedSystemPlans { | ||||
| 		// 4. 如果计划不存在, 则创建 | ||||
| 		if !existingPlanNames[predefinedPlan.Name] { | ||||
| 	for i := range predefinedSystemPlans { | ||||
| 		predefinedPlan := &predefinedSystemPlans[i] // 获取可修改的指针 | ||||
|  | ||||
| 		if foundExistingPlan, ok := existingPlanMap[predefinedPlan.Name]; ok { | ||||
| 			// 如果计划存在,则进行无差别更新 | ||||
| 			app.Logger.Infof("预定义计划 '%s' 已存在,正在进行无差别更新...", predefinedPlan.Name) | ||||
|  | ||||
| 			// 将数据库中已存在的计划的ID和运行时状态字段赋值给预定义计划 | ||||
| 			predefinedPlan.ID = foundExistingPlan.ID | ||||
| 			predefinedPlan.ExecuteCount = foundExistingPlan.ExecuteCount | ||||
| 			predefinedPlan.Status = foundExistingPlan.Status | ||||
|  | ||||
| 			if err := app.Infra.Repos.PlanRepo.UpdatePlan(predefinedPlan); err != nil { | ||||
| 				return fmt.Errorf("更新预定义计划 '%s' 失败: %w", predefinedPlan.Name, err) | ||||
| 			} else { | ||||
| 				app.Logger.Infof("成功更新预定义计划 '%s'。", predefinedPlan.Name) | ||||
| 			} | ||||
| 		} else { | ||||
| 			// 如果计划不存在, 则创建 | ||||
| 			app.Logger.Infof("预定义计划 '%s' 不存在,正在创建...", predefinedPlan.Name) | ||||
| 			if err := app.Infra.Repos.PlanRepo.CreatePlan(&predefinedPlan); err != nil { | ||||
| 				// 错误现在是致命的 | ||||
| 			if err := app.Infra.Repos.PlanRepo.CreatePlan(predefinedPlan); err != nil { | ||||
| 				return fmt.Errorf("创建预定义计划 '%s' 失败: %w", predefinedPlan.Name, err) | ||||
| 			} else { | ||||
| 				app.Logger.Infof("成功创建预定义计划 '%s'。", predefinedPlan.Name) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user