fix: remark get and set -- refactor task params #100

This commit is contained in:
duorameng
2026-05-12 16:36:57 +08:00
parent e37deac281
commit d187b1e1f3
2 changed files with 134 additions and 58 deletions
+53 -3
View File
@@ -117,17 +117,42 @@ func (tc *TaskController) CreateTask(c *gin.Context) {
} }
} }
param := tasks.TaskParam{
Name: req.Name,
Remark: req.Remark,
Command: req.Command,
PreCommand: req.PreCommand,
PostCommand: req.PostCommand,
Tags: req.Tags,
Type: req.Type,
Config: req.Config,
Schedule: req.Schedule,
Timeout: req.Timeout,
WorkDir: workDir,
CleanConfig: req.CleanConfig,
Envs: req.Envs,
Languages: req.Languages,
AgentID: req.AgentID,
TriggerType: req.TriggerType,
RetryCount: req.RetryCount,
RetryInterval: req.RetryInterval,
RandomRange: req.RandomRange,
SourceID: sourceID,
PinType: req.PinType,
Enabled: true,
}
var task *models.Task var task *models.Task
// 去重逻辑:如果已存在相同 SourceID 的仓库任务,则改为更新 // 去重逻辑:如果已存在相同 SourceID 的仓库任务,则改为更新
if sourceID != "" { if sourceID != "" {
task = tc.taskService.GetTaskBySourceID(sourceID) task = tc.taskService.GetTaskBySourceID(sourceID)
if task != nil { if task != nil {
task = tc.taskService.UpdateTask(task.ID, req.Name, req.Remark, req.Command, req.PreCommand, req.PostCommand, req.Schedule, req.Timeout, workDir, req.CleanConfig, req.Envs, true, req.Type, req.Config, req.AgentID, req.Languages, req.TriggerType, req.Tags, req.RetryCount, req.RetryInterval, req.RandomRange, sourceID, req.PinType) task = tc.taskService.UpdateTask(task.ID, &param)
} }
} }
if task == nil { if task == nil {
task = tc.taskService.CreateTask(req.Name, req.Remark, req.Command, req.PreCommand, req.PostCommand, req.Schedule, req.Timeout, workDir, req.CleanConfig, req.Envs, req.Type, req.Config, req.AgentID, req.Languages, req.TriggerType, req.Tags, req.RetryCount, req.RetryInterval, req.RandomRange, sourceID, req.PinType) task = tc.taskService.CreateTask(&param)
} }
// 如果是 Agent 任务,通知 Agent;否则添加到本地 cron // 如果是 Agent 任务,通知 Agent;否则添加到本地 cron
@@ -280,7 +305,32 @@ func (tc *TaskController) UpdateTask(c *gin.Context) {
sourceID = oldTask.SourceID sourceID = oldTask.SourceID
} }
task := tc.taskService.UpdateTask(id, req.Name, req.Remark, req.Command, req.PreCommand, req.PostCommand, req.Schedule, req.Timeout, workDir, req.CleanConfig, req.Envs, req.Enabled, req.Type, req.Config, req.AgentID, req.Languages, req.TriggerType, req.Tags, req.RetryCount, req.RetryInterval, req.RandomRange, sourceID, req.PinType) param := tasks.TaskParam{
Name: req.Name,
Remark: req.Remark,
Command: req.Command,
PreCommand: req.PreCommand,
PostCommand: req.PostCommand,
Tags: req.Tags,
Type: req.Type,
Config: req.Config,
Schedule: req.Schedule,
Timeout: req.Timeout,
WorkDir: workDir,
CleanConfig: req.CleanConfig,
Envs: req.Envs,
Languages: req.Languages,
AgentID: req.AgentID,
TriggerType: req.TriggerType,
RetryCount: req.RetryCount,
RetryInterval: req.RetryInterval,
RandomRange: req.RandomRange,
SourceID: sourceID,
PinType: req.PinType,
Enabled: req.Enabled,
}
task := tc.taskService.UpdateTask(id, &param)
if task == nil { if task == nil {
utils.NotFound(c, "任务不存在") utils.NotFound(c, "任务不存在")
return return
+81 -55
View File
@@ -8,6 +8,32 @@ import (
"strings" "strings"
) )
// TaskParam 任务创建与更新参数传输对象
type TaskParam struct {
Name string
Remark string
Command string
PreCommand string
PostCommand string
Tags string
Type string
Config string
Schedule string
Timeout int
WorkDir string
CleanConfig string
Envs string
Languages models.TaskLanguages
AgentID *string
TriggerType string
RetryCount int
RetryInterval int
RandomRange int
SourceID string
PinType string
Enabled bool
}
type TaskService struct { type TaskService struct {
} }
@@ -24,44 +50,44 @@ func (ts *TaskService) GetTaskBySourceID(sourceID string) *models.Task {
return &task return &task
} }
func (ts *TaskService) CreateTask(name, remark, command, preCommand, postCommand, schedule string, timeout int, workDir, cleanConfig, envs, taskType, config string, agentID *string, languages models.TaskLanguages, triggerType string, tags string, retryCount int, retryInterval int, randomRange int, sourceID string, pinType string) *models.Task { func (ts *TaskService) CreateTask(p *TaskParam) *models.Task {
if taskType == "" { if p.Type == "" {
taskType = "task" p.Type = "task"
} }
if triggerType == "" { if p.TriggerType == "" {
triggerType = constant.TriggerTypeCron p.TriggerType = constant.TriggerTypeCron
} }
if pinType == "" { if p.PinType == "" {
pinType = constant.PinTypeNone p.PinType = constant.PinTypeNone
} }
task := &models.Task{ task := &models.Task{
ID: utils.GenerateID(), ID: utils.GenerateID(),
Name: name, Name: p.Name,
Remark: remark, Remark: p.Remark,
Command: models.BigText(command), Command: models.BigText(p.Command),
PreCommand: models.BigText(preCommand), PreCommand: models.BigText(p.PreCommand),
PostCommand: models.BigText(postCommand), PostCommand: models.BigText(p.PostCommand),
PinType: pinType, PinType: p.PinType,
Tags: tags, Tags: p.Tags,
Type: taskType, Type: p.Type,
TriggerType: triggerType, TriggerType: p.TriggerType,
Config: models.BigText(config), Config: models.BigText(p.Config),
Schedule: schedule, Schedule: p.Schedule,
Timeout: timeout, Timeout: p.Timeout,
WorkDir: workDir, WorkDir: p.WorkDir,
CleanConfig: cleanConfig, CleanConfig: p.CleanConfig,
Envs: models.BigText(envs), Envs: models.BigText(p.Envs),
Languages: languages, Languages: p.Languages,
AgentID: agentID, AgentID: p.AgentID,
Enabled: utils.BoolPtr(true), Enabled: utils.BoolPtr(true),
RetryCount: retryCount, RetryCount: p.RetryCount,
RetryInterval: retryInterval, RetryInterval: p.RetryInterval,
RandomRange: randomRange, RandomRange: p.RandomRange,
SourceID: sourceID, SourceID: p.SourceID,
CreatedAt: models.Now(), CreatedAt: models.Now(),
UpdatedAt: models.Now(), UpdatedAt: models.Now(),
} }
if triggerType != constant.TriggerTypeCron { if p.TriggerType != constant.TriggerTypeCron {
task.NextRun = nil task.NextRun = nil
} }
database.DB.Select("*").Create(task) database.DB.Select("*").Create(task)
@@ -125,39 +151,39 @@ func (ts *TaskService) GetTaskByID(id string) *models.Task {
return &task return &task
} }
func (ts *TaskService) UpdateTask(id string, name, remark, command, preCommand, postCommand, schedule string, timeout int, workDir, cleanConfig, envs string, enabled bool, taskType, config string, agentID *string, languages models.TaskLanguages, triggerType string, tags string, retryCount int, retryInterval int, randomRange int, sourceID string, pinType string) *models.Task { func (ts *TaskService) UpdateTask(id string, p *TaskParam) *models.Task {
var task models.Task var task models.Task
res := database.DB.Where("id = ?", id).Limit(1).Find(&task) res := database.DB.Where("id = ?", id).Limit(1).Find(&task)
if res.Error != nil || res.RowsAffected == 0 { if res.Error != nil || res.RowsAffected == 0 {
return nil return nil
} }
task.Name = name task.Name = p.Name
task.Remark = remark task.Remark = p.Remark
task.Command = models.BigText(command) task.Command = models.BigText(p.Command)
task.PreCommand = models.BigText(preCommand) task.PreCommand = models.BigText(p.PreCommand)
task.PostCommand = models.BigText(postCommand) task.PostCommand = models.BigText(p.PostCommand)
task.PinType = pinType task.PinType = p.PinType
task.Tags = tags task.Tags = p.Tags
task.Schedule = schedule task.Schedule = p.Schedule
task.Timeout = timeout task.Timeout = p.Timeout
task.WorkDir = workDir task.WorkDir = p.WorkDir
task.CleanConfig = cleanConfig task.CleanConfig = p.CleanConfig
task.Envs = models.BigText(envs) task.Envs = models.BigText(p.Envs)
task.Enabled = &enabled task.Enabled = &p.Enabled
task.AgentID = agentID task.AgentID = p.AgentID
task.Languages = languages task.Languages = p.Languages
task.Config = models.BigText(config) task.Config = models.BigText(p.Config)
task.RetryCount = retryCount task.RetryCount = p.RetryCount
task.RetryInterval = retryInterval task.RetryInterval = p.RetryInterval
task.RandomRange = randomRange task.RandomRange = p.RandomRange
if taskType != "" { if p.Type != "" {
task.Type = taskType task.Type = p.Type
} }
if triggerType != "" { if p.TriggerType != "" {
task.TriggerType = triggerType task.TriggerType = p.TriggerType
} }
if sourceID != "" { if p.SourceID != "" {
task.SourceID = sourceID task.SourceID = p.SourceID
} }
database.DB.Model(&task).Select( database.DB.Model(&task).Select(