From fbaf8851ce78a1ca9fa0799c6f83a1d58cc403b0 Mon Sep 17 00:00:00 2001 From: samwaf Date: Thu, 3 Apr 2025 11:41:19 +0800 Subject: [PATCH] feat:task check exist logic --- service/waf_service/waf_task_service.go | 19 ++++++++++++++----- waftask/entrance.go | 6 +++++- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/service/waf_service/waf_task_service.go b/service/waf_service/waf_task_service.go index 6a30d1e..a73e454 100644 --- a/service/waf_service/waf_task_service.go +++ b/service/waf_service/waf_task_service.go @@ -81,7 +81,7 @@ func (receiver *WafTaskService) CheckIsExistApi(req request.WafTaskAddReq) int { return int(total) } -func (receiver *WafTaskService) CheckIsExist(taskName string) int { +func (receiver *WafTaskService) CheckIsExist(taskMethod string) int { var total int64 = 0 /*where条件*/ var whereField = "" @@ -89,17 +89,17 @@ func (receiver *WafTaskService) CheckIsExist(taskName string) int { //where字段 whereField = "" - if len(taskName) > 0 { + if len(taskMethod) > 0 { if len(whereField) > 0 { whereField = whereField + " and " } - whereField = whereField + " task_name=? " + whereField = whereField + " task_method=? " } //where字段赋值 - if len(taskName) > 0 { + if len(taskMethod) > 0 { if len(whereField) > 0 { - whereValues = append(whereValues, taskName) + whereValues = append(whereValues, taskMethod) } } @@ -188,3 +188,12 @@ func (receiver *WafTaskService) DelApi(req request.WafTaskDelReq) error { err = global.GWAF_LOCAL_DB.Where("id = ?", req.Id).Delete(model.Task{}).Error return err } +func (receiver *WafTaskService) DelByMethod(taskMethod string) error { + var bean model.Task + err := global.GWAF_LOCAL_DB.Where("task_method = ?", taskMethod).First(&bean).Error + if err != nil { + return err + } + err = global.GWAF_LOCAL_DB.Where("task_method = ?", taskMethod).Delete(model.Task{}).Error + return err +} diff --git a/waftask/entrance.go b/waftask/entrance.go index 4aab9ec..db98e49 100644 --- a/waftask/entrance.go +++ b/waftask/entrance.go @@ -128,8 +128,12 @@ func InitTaskDb() []model.Task { return list } func syncTaskToDb(task model.Task) { - cnt := wafTaskService.CheckIsExist(task.TaskName) + cnt := wafTaskService.CheckIsExist(task.TaskMethod) if cnt == 0 { wafTaskService.Add(task) + } else if cnt > 1 { + //如果重复添加多个method的情况 + wafTaskService.DelByMethod(task.TaskMethod) + wafTaskService.Add(task) } }