From e494b261ce51124a0fe0e794320371756cfd98e3 Mon Sep 17 00:00:00 2001 From: Doflatango Date: Mon, 20 Feb 2017 10:56:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BF=AE=E6=94=B9=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=88=86=E7=BB=84=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/job.go | 19 ++++++++++++++++++- web/ui/src/components/JobEdit.vue | 4 +++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/web/job.go b/web/job.go index 3a4752c..0659a32 100644 --- a/web/job.go +++ b/web/job.go @@ -78,7 +78,11 @@ func (j *Job) ChangeJobStatus(w http.ResponseWriter, r *http.Request) { } func (j *Job) UpdateJob(w http.ResponseWriter, r *http.Request) { - job := &models.Job{} + var job = &struct { + *models.Job + OldGroup string `json:"oldGroup"` + }{} + decoder := json.NewDecoder(r.Body) err := decoder.Decode(&job) if err != nil { @@ -92,10 +96,16 @@ func (j *Job) UpdateJob(w http.ResponseWriter, r *http.Request) { return } + var deleteOldKey string var successCode = http.StatusOK if len(job.ID) == 0 { successCode = http.StatusCreated job.ID = models.NextID() + } else { + job.OldGroup = strings.TrimSpace(job.OldGroup) + if job.OldGroup != job.Group { + deleteOldKey = models.JobKey(job.OldGroup, job.ID) + } } b, err := json.Marshal(job) @@ -110,6 +120,13 @@ func (j *Job) UpdateJob(w http.ResponseWriter, r *http.Request) { return } + // remove old key + if len(deleteOldKey) > 0 { + if _, err = models.DefalutClient.Delete(deleteOldKey); err != nil { + log.Errorf("failed to remove old job key[%s], err: %s.", deleteOldKey, err.Error()) + } + } + outJSONWithCode(w, successCode, nil) } diff --git a/web/ui/src/components/JobEdit.vue b/web/ui/src/components/JobEdit.vue index 93c2c86..d4389ff 100644 --- a/web/ui/src/components/JobEdit.vue +++ b/web/ui/src/components/JobEdit.vue @@ -59,7 +59,8 @@ export default { job: { id: '', name: '', - group: 'default', + oldGroup: '', + group: '', user: '', cmd: '', pause: false, @@ -121,6 +122,7 @@ export default { this.$rest.GET('job/'+this.$route.params.group+'-'+this.$route.params.id). onsucceed(200, (resp)=>{ vm.job = resp; + vm.job.oldGroup = resp.group; if (vm.job.rules) { for (var i in vm.job.rules) { if (vm.job.rules[i].id.length == 0) {