From fa41b18cedb538b992df218439b8f19e415cf9c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Tue, 25 Jun 2024 02:51:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/services/plugin.go | 54 +++++++++++++++---------------------- 1 file changed, 21 insertions(+), 33 deletions(-) diff --git a/internal/services/plugin.go b/internal/services/plugin.go index 1e39e5c1..52b399ec 100644 --- a/internal/services/plugin.go +++ b/internal/services/plugin.go @@ -113,17 +113,8 @@ func (r *PluginImpl) Install(slug string) error { } } - var count int64 - if err = facades.Orm().Query(). - Model(&models.Task{}). - Where("log LIKE ?", "%"+plugin.Slug+"%"). - Where("status", models.TaskStatusWaiting). - OrWhere("status", models.TaskStatusRunning). - Count(&count); err != nil { - return errors.New("查询任务失败") - } - if count > 0 { - return errors.New("任务已添加,请勿重复添加") + if err = r.checkTaskExists(slug); err != nil { + return err } var task models.Task @@ -172,17 +163,8 @@ func (r *PluginImpl) Uninstall(slug string) error { } } - var count int64 - if err = facades.Orm().Query(). - Model(&models.Task{}). - Where("log LIKE ?", "%"+plugin.Slug+"%"). - Where("status", models.TaskStatusWaiting). - OrWhere("status", models.TaskStatusRunning). - Count(&count); err != nil { - return errors.New("查询任务失败") - } - if count > 0 { - return errors.New("任务已添加,请勿重复添加") + if err = r.checkTaskExists(slug); err != nil { + return err } var task models.Task @@ -231,17 +213,8 @@ func (r *PluginImpl) Update(slug string) error { } } - var count int64 - if err = facades.Orm().Query(). - Model(&models.Task{}). - Where("log LIKE ?", "%"+plugin.Slug+"%"). - Where("status", models.TaskStatusWaiting). - OrWhere("status", models.TaskStatusRunning). - Count(&count); err != nil { - return errors.New("查询任务失败") - } - if count > 0 { - return errors.New("任务已添加,请勿重复添加") + if err = r.checkTaskExists(slug); err != nil { + return err } var task models.Task @@ -256,3 +229,18 @@ func (r *PluginImpl) Update(slug string) error { _ = io.Remove(task.Log) return r.task.Process(task.ID) } + +func (r *PluginImpl) checkTaskExists(slug string) error { + var count int64 + if err := facades.Orm().Query(). + Model(&models.Task{}). + Where("log LIKE ? AND (status = ? OR status = ?)", "%"+slug+"%", models.TaskStatusWaiting, models.TaskStatusRunning). + Count(&count); err != nil { + return errors.New("查询任务失败") + } + if count > 0 { + return errors.New("任务已添加,请勿重复添加") + } + + return nil +}