40 lines
1.0 KiB
Go
40 lines
1.0 KiB
Go
package task
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/zeromicro/go-zero/core/logx"
|
|
"sundynix-micro-go/app/system/rpc/internal/svc"
|
|
)
|
|
|
|
// CleanOperLogJob 定义清理操作日志的定时任务
|
|
type CleanOperLogJob struct {
|
|
svcCtx *svc.ServiceContext
|
|
}
|
|
|
|
func NewCleanOperLogJob(svcCtx *svc.ServiceContext) *CleanOperLogJob {
|
|
return &CleanOperLogJob{
|
|
svcCtx: svcCtx,
|
|
}
|
|
}
|
|
|
|
func (j *CleanOperLogJob) Run() {
|
|
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Minute)
|
|
defer cancel()
|
|
|
|
logx.WithContext(ctx).Infof("[CRON] 开始执行定时清理操作日志任务")
|
|
|
|
// 删除 3 天前的日志
|
|
threeDaysAgo := time.Now().AddDate(0, 0, -3)
|
|
|
|
// 执行硬删除
|
|
res := j.svcCtx.DB.WithContext(ctx).Exec("DELETE FROM sundynix_operation_record WHERE created_at < ?", threeDaysAgo)
|
|
if res.Error != nil {
|
|
logx.WithContext(ctx).Errorf("[CRON] 清理操作日志失败: %v", res.Error)
|
|
return
|
|
}
|
|
|
|
logx.WithContext(ctx).Infof("[CRON] 定时清理操作日志完成,共删除了 %d 条数据", res.RowsAffected)
|
|
}
|