From d9b1852a3b5d7e5b6b7bf1c3d80806b3554d42b5 Mon Sep 17 00:00:00 2001 From: simonzhangsz Date: Tue, 24 Oct 2023 20:19:50 +0800 Subject: [PATCH] Add: delete expired record for crontask --- .../deleteExpiredRecord.go | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 src/modules/crontask/deleteExpiredRecord/deleteExpiredRecord.go diff --git a/src/modules/crontask/deleteExpiredRecord/deleteExpiredRecord.go b/src/modules/crontask/deleteExpiredRecord/deleteExpiredRecord.go new file mode 100644 index 00000000..3739e992 --- /dev/null +++ b/src/modules/crontask/deleteExpiredRecord/deleteExpiredRecord.go @@ -0,0 +1,81 @@ +package delExpiredNeBackup + +import ( + "encoding/json" + "fmt" + + "ems.agt/lib/dborm" + "ems.agt/lib/log" + "ems.agt/src/framework/cron" +) + +var NewProcessor = &BarProcessor{ + progress: 0, + count: 0, +} + +// bar 队列任务处理 +type BarProcessor struct { + // 任务进度 + progress int + // 执行次数 + count int +} + +type BarParams struct { + Duration int `json:"duration"` + ColName string `json:"colName"` + TableName string `json:"tableName"` +} + +func (s *BarProcessor) Execute(data any) (any, error) { + log.Infof("执行 %d 次,上次进度: %d ", s.count, s.progress) + s.count++ + + options := data.(cron.JobData) + sysJob := options.SysJob + var params BarParams + duration := 60 + + err := json.Unmarshal([]byte(sysJob.TargetParams), ¶ms) + if err != nil { + return nil, err + } + + //duration = params.Duration + log.Infof("重复 %v 任务ID %s", options.Repeat, sysJob.JobID) + + // // 实现任务处理逻辑 + // i := 0 + // s.progress = i + // for i < 5 { + // // 获取任务进度 + // progress := s.progress + // log.Infof("jonId: %s => 任务进度:%d", sysJob.JobID, progress) + // // 延迟响应 + // time.Sleep(time.Second * 2) + // // 程序中途执行错误 + // if i == 3 { + // // arr := [1]int{1} + // // arr[i] = 3 + // // fmt.Println(arr) + // // return "i = 3" + // panic("程序中途执行错误") + // } + // i++ + // // 改变任务进度 + // s.progress = i + // } + where := fmt.Sprintf("NOW()>ADDDATE(`%s`,interval %d day)", params.ColName, params.Duration) + affected, err := dborm.XormDeleteDataByWhere(where, params.TableName) + if err != nil { + // panic(fmt.Sprintf("Failed to XormDeleteDataByWhere:%v", err)) + return nil, err + } + + // 返回结果,用于记录执行结果 + return map[string]any{ + "msg": "sucess", + "affected": affected, + }, nil +}