diff --git a/docs/docs.go b/docs/docs.go index 68e498f..d06a31d 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -741,22 +741,26 @@ const docTemplate = `{ "enum": [ 0, 1, - 2 + 2, + 3 ], "x-enum-comments": { "PlanStatusDisabled": "禁用计划", "PlanStatusEnabled": "启用计划", + "PlanStatusFailed": "执行失败", "PlanStatusStopeed": "执行完毕" }, "x-enum-descriptions": [ - "启用计划", "禁用计划", - "执行完毕" + "启用计划", + "执行完毕", + "执行失败" ], "x-enum-varnames": [ - "PlanStatusEnabled", "PlanStatusDisabled", - "PlanStatusStopeed" + "PlanStatusEnabled", + "PlanStatusStopeed", + "PlanStatusFailed" ] }, "models.TaskType": { @@ -781,19 +785,10 @@ const docTemplate = `{ "plan.CreatePlanRequest": { "type": "object", "required": [ - "content_type", "execution_type", "name" ], "properties": { - "content_type": { - "allOf": [ - { - "$ref": "#/definitions/models.PlanContentType" - } - ], - "example": "tasks" - }, "cron_expression": { "type": "string", "example": "0 0 6 * * *" @@ -1005,14 +1000,6 @@ const docTemplate = `{ "plan.UpdatePlanRequest": { "type": "object", "properties": { - "content_type": { - "allOf": [ - { - "$ref": "#/definitions/models.PlanContentType" - } - ], - "example": "tasks" - }, "cron_expression": { "type": "string", "example": "0 0 6 * * *" diff --git a/docs/swagger.json b/docs/swagger.json index 4adabab..ba89445 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -730,22 +730,26 @@ "enum": [ 0, 1, - 2 + 2, + 3 ], "x-enum-comments": { "PlanStatusDisabled": "禁用计划", "PlanStatusEnabled": "启用计划", + "PlanStatusFailed": "执行失败", "PlanStatusStopeed": "执行完毕" }, "x-enum-descriptions": [ - "启用计划", "禁用计划", - "执行完毕" + "启用计划", + "执行完毕", + "执行失败" ], "x-enum-varnames": [ - "PlanStatusEnabled", "PlanStatusDisabled", - "PlanStatusStopeed" + "PlanStatusEnabled", + "PlanStatusStopeed", + "PlanStatusFailed" ] }, "models.TaskType": { @@ -770,19 +774,10 @@ "plan.CreatePlanRequest": { "type": "object", "required": [ - "content_type", "execution_type", "name" ], "properties": { - "content_type": { - "allOf": [ - { - "$ref": "#/definitions/models.PlanContentType" - } - ], - "example": "tasks" - }, "cron_expression": { "type": "string", "example": "0 0 6 * * *" @@ -994,14 +989,6 @@ "plan.UpdatePlanRequest": { "type": "object", "properties": { - "content_type": { - "allOf": [ - { - "$ref": "#/definitions/models.PlanContentType" - } - ], - "example": "tasks" - }, "cron_expression": { "type": "string", "example": "0 0 6 * * *" diff --git a/docs/swagger.yaml b/docs/swagger.yaml index dcb61c8..a759ecd 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -129,20 +129,24 @@ definitions: - 0 - 1 - 2 + - 3 format: int32 type: integer x-enum-comments: PlanStatusDisabled: 禁用计划 PlanStatusEnabled: 启用计划 + PlanStatusFailed: 执行失败 PlanStatusStopeed: 执行完毕 x-enum-descriptions: - - 启用计划 - 禁用计划 + - 启用计划 - 执行完毕 + - 执行失败 x-enum-varnames: - - PlanStatusEnabled - PlanStatusDisabled + - PlanStatusEnabled - PlanStatusStopeed + - PlanStatusFailed models.TaskType: enum: - plan_analysis @@ -159,10 +163,6 @@ definitions: - TaskTypeWaiting plan.CreatePlanRequest: properties: - content_type: - allOf: - - $ref: '#/definitions/models.PlanContentType' - example: tasks cron_expression: example: 0 0 6 * * * type: string @@ -188,7 +188,6 @@ definitions: $ref: '#/definitions/plan.TaskRequest' type: array required: - - content_type - execution_type - name type: object @@ -306,10 +305,6 @@ definitions: type: object plan.UpdatePlanRequest: properties: - content_type: - allOf: - - $ref: '#/definitions/models.PlanContentType' - example: tasks cron_expression: example: 0 0 6 * * * type: string diff --git a/internal/app/controller/plan/plan_controller.go b/internal/app/controller/plan/plan_controller.go index 0dec13f..c250477 100644 --- a/internal/app/controller/plan/plan_controller.go +++ b/internal/app/controller/plan/plan_controller.go @@ -22,7 +22,6 @@ type CreatePlanRequest struct { ExecutionType models.PlanExecutionType `json:"execution_type" binding:"required" example:"automatic"` ExecuteNum uint `json:"execute_num,omitempty" example:"10"` CronExpression string `json:"cron_expression" example:"0 0 6 * * *"` - ContentType models.PlanContentType `json:"content_type" binding:"required" example:"tasks"` SubPlanIDs []uint `json:"sub_plan_ids,omitempty"` Tasks []TaskRequest `json:"tasks,omitempty"` } @@ -55,7 +54,6 @@ type UpdatePlanRequest struct { ExecutionType models.PlanExecutionType `json:"execution_type" example:"automatic"` ExecuteNum uint `json:"execute_num,omitempty" example:"10"` CronExpression string `json:"cron_expression" example:"0 0 6 * * *"` - ContentType models.PlanContentType `json:"content_type" example:"tasks"` SubPlanIDs []uint `json:"sub_plan_ids,omitempty"` Tasks []TaskRequest `json:"tasks,omitempty"` } @@ -132,6 +130,14 @@ func (c *Controller) CreatePlan(ctx *gin.Context) { return } + // --- 自动判断 ContentType --- + if len(req.SubPlanIDs) > 0 { + planToCreate.ContentType = models.PlanContentTypeSubPlans + } else { + // 如果 SubPlanIDs 未提供,则默认为 Tasks 类型(即使 Tasks 字段也未提供) + planToCreate.ContentType = models.PlanContentTypeTasks + } + // 调用仓库方法创建计划 if err := c.planRepo.CreatePlan(planToCreate); err != nil { controller.SendErrorResponse(ctx, controller.CodeBadRequest, "创建计划失败: "+err.Error()) @@ -269,6 +275,14 @@ func (c *Controller) UpdatePlan(ctx *gin.Context) { } planToUpdate.ID = uint(id) // 确保ID被设置 + // --- 自动判断 ContentType --- + if len(req.SubPlanIDs) > 0 { + planToUpdate.ContentType = models.PlanContentTypeSubPlans + } else { + // 如果 SubPlanIDs 未提供,则默认为 Tasks 类型(即使 Tasks 字段也未提供) + planToUpdate.ContentType = models.PlanContentTypeTasks + } + // 4. 检查计划是否存在 _, err = c.planRepo.GetBasicPlanByID(uint(id)) if err != nil {