package queue import ( "context" "fmt" "tyc-server/app/user/cmd/api/internal/svc" "github.com/hibiken/asynq" ) const TASKTIME = "0 2 * * *" type CleanQueryDataHandler struct { svcCtx *svc.ServiceContext } func NewCleanQueryDataHandler(svcCtx *svc.ServiceContext) *CleanQueryDataHandler { return &CleanQueryDataHandler{ svcCtx: svcCtx, } } func (l *CleanQueryDataHandler) ProcessTask(ctx context.Context, t *asynq.Task) error { fmt.Println(TASKTIME) //// 计算 30 天前的时间 //threshold := time.Now().AddDate(0, 0, -30) // //// 1. 构造查询条件,查找创建时间小于 threshold 的记录 //// 假设表中“创建时间”字段为 create_time,且字段类型对应数据库里实际的列名 //rowBuilder := l.svcCtx.QueryModel.SelectBuilder(). // Where(squirrel.Lt{"create_time": threshold}) // //// 2. 调用 FindAll 获取所有符合条件的记录 //// orderBy 这里可传空字符串或你想要的排序字段 //records, err := l.svcCtx.QueryModel.FindAll(ctx, rowBuilder, "") //if err != nil { // return err //} // //// 3. 遍历记录,逐条删除 //// 假设你的 Delete 方法签名是:Delete(ctx context.Context, id int64) error //// 并且 records[i] 中有一个字段 ID 用于表示主键 //for _, record := range records { // if err := l.svcCtx.QueryModel.Delete(ctx, record.Id); err != nil { // return err // } //} return nil }