From 5e019ecf7325448c9171827921982ca306917cbc Mon Sep 17 00:00:00 2001 From: huang <1724659546@qq.com> Date: Thu, 25 Sep 2025 00:32:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E8=AE=A1=E5=88=92=E6=97=B6?= =?UTF-8?q?=E5=81=9C=E6=AD=A2=E8=BF=99=E4=B8=AA=E8=AE=A1=E5=88=92=E7=9A=84?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=20=E5=81=9C=E6=AD=A2=E8=AE=A1=E5=88=92?= =?UTF-8?q?=E5=89=8D=E5=88=A4=E6=96=AD=E4=B8=80=E4=B8=8B=E6=98=AF=E4=B8=8D?= =?UTF-8?q?=E6=98=AF=E6=9C=AA=E5=90=AF=E7=94=A8=E7=9A=84=E8=AE=A1=E5=88=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/controller/plan/plan_controller.go | 47 +++++++++++++++++-- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/internal/app/controller/plan/plan_controller.go b/internal/app/controller/plan/plan_controller.go index 72ccebb..746f0df 100644 --- a/internal/app/controller/plan/plan_controller.go +++ b/internal/app/controller/plan/plan_controller.go @@ -348,14 +348,35 @@ func (c *Controller) DeletePlan(ctx *gin.Context) { return } - // 2. 调用仓库层删除计划 + // 2. 检查计划是否存在 + plan, err := c.planRepo.GetBasicPlanByID(uint(id)) + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + controller.SendErrorResponse(ctx, controller.CodeNotFound, "计划不存在") + return + } + c.logger.Errorf("启动计划时获取计划信息失败: %v", err) + controller.SendErrorResponse(ctx, controller.CodeInternalError, "获取计划信息时发生内部错误") + return + } + + // 3. 停止这个计划 + if plan.Status == models.PlanStatusEnabled { + if err := c.planRepo.StopPlanTransactionally(uint(id)); err != nil { + c.logger.Errorf("停止计划 #%d 失败: %v", id, err) + controller.SendErrorResponse(ctx, controller.CodeInternalError, "停止计划时发生内部错误: "+err.Error()) + return + } + } + + // 4. 调用仓库层删除计划 if err := c.planRepo.DeletePlan(uint(id)); err != nil { c.logger.Errorf("删除计划失败: %v", err) controller.SendErrorResponse(ctx, controller.CodeInternalError, "删除计划时发生内部错误") return } - // 3. 发送成功响应 + // 5. 发送成功响应 controller.SendResponse(ctx, controller.CodeSuccess, "计划删除成功", nil) } @@ -450,13 +471,31 @@ func (c *Controller) StopPlan(ctx *gin.Context) { return } - // 2. 调用仓库层方法,该方法内部处理事务 + // 2. 检查计划是否存在 + plan, err := c.planRepo.GetBasicPlanByID(uint(id)) + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + controller.SendErrorResponse(ctx, controller.CodeNotFound, "计划不存在") + return + } + c.logger.Errorf("启动计划时获取计划信息失败: %v", err) + controller.SendErrorResponse(ctx, controller.CodeInternalError, "获取计划信息时发生内部错误") + return + } + + // 3. 检查计划当前状态 + if plan.Status != models.PlanStatusEnabled { + controller.SendErrorResponse(ctx, controller.CodeBadRequest, "计划当前不是启用状态") + return + } + + // 4. 调用仓库层方法,该方法内部处理事务 if err := c.planRepo.StopPlanTransactionally(uint(id)); err != nil { c.logger.Errorf("停止计划 #%d 失败: %v", id, err) controller.SendErrorResponse(ctx, controller.CodeInternalError, "停止计划时发生内部错误: "+err.Error()) return } - // 3. 发送成功响应 + // 5. 发送成功响应 controller.SendResponse(ctx, controller.CodeSuccess, "计划已成功停止", nil) }