From 55d32dad5f8cd730205ca0d6a86dc35e7cf05ac1 Mon Sep 17 00:00:00 2001 From: huang <1724659546@qq.com> Date: Sun, 14 Sep 2025 15:56:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0CreatePlan=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/controller/plan/plan_controller.go | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/internal/app/controller/plan/plan_controller.go b/internal/app/controller/plan/plan_controller.go index 8ad767b..c5275d9 100644 --- a/internal/app/controller/plan/plan_controller.go +++ b/internal/app/controller/plan/plan_controller.go @@ -107,10 +107,31 @@ func NewController(logger *logs.Logger, planRepo repository.PlanRepository) *Con // @Success 200 {object} controller.Response{data=plan.PlanResponse} "业务码为201代表创建成功" // @Failure 200 {object} controller.Response "业务失败,具体错误码和信息见响应体(例如400, 500)" // @Router /plans [post] -func (pc *Controller) CreatePlan(c *gin.Context) { - // 占位符:此处应调用服务层或仓库层来创建计划 - pc.logger.Infof("收到创建计划请求 (占位符)") - controller.SendResponse(c, controller.CodeCreated, "创建计划接口占位符", PlanResponse{ID: 0, Name: "占位计划"}) +func (c *Controller) CreatePlan(ctx *gin.Context) { + var req CreatePlanRequest + if err := ctx.ShouldBindJSON(&req); err != nil { + controller.SendErrorResponse(ctx, controller.CodeBadRequest, "无效的请求体: "+err.Error()) + return + } + + // 使用已有的转换函数,它已经包含了验证和重排逻辑 + planToCreate, err := PlanFromCreateRequest(&req) + if err != nil { + controller.SendErrorResponse(ctx, controller.CodeBadRequest, "计划数据校验失败: "+err.Error()) + return + } + + // 调用仓库方法创建计划 + if err := c.planRepo.CreatePlan(planToCreate); err != nil { + controller.SendErrorResponse(ctx, controller.CodeBadRequest, "创建计划失败: "+err.Error()) + return + } + + // 使用已有的转换函数将创建后的模型转换为响应对象 + resp := PlanToResponse(planToCreate) + + // 使用统一的成功响应函数 + controller.SendResponse(ctx, controller.CodeCreated, "计划创建成功", resp) } // GetPlan godoc