Files
2026-05-23 13:55:05 +08:00

39 lines
1.1 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package task
import (
"context"
"time"
"github.com/zeromicro/go-zero/core/logx"
plantModel "sundynix-micro-go/app/plant/model"
"sundynix-micro-go/app/plant/rpc/internal/svc"
)
// ExpireCareTaskJob 每日检查过期养护任务(status=1 且 due_date < 今天 → 标记为 status=3
type ExpireCareTaskJob struct {
svcCtx *svc.ServiceContext
}
func NewExpireCareTaskJob(svcCtx *svc.ServiceContext) *ExpireCareTaskJob {
return &ExpireCareTaskJob{svcCtx: svcCtx}
}
func (j *ExpireCareTaskJob) Run() {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute)
defer cancel()
today := time.Now().Truncate(24 * time.Hour)
logx.WithContext(ctx).Infof("[CRON] 开始执行养护任务过期检查, 基准时间: %v", today)
res := j.svcCtx.DB.WithContext(ctx).
Model(&plantModel.CareTask{}).
Where("status = 1 AND due_date < ?", today).
Update("status", 3)
if res.Error != nil {
logx.WithContext(ctx).Errorf("[CRON] 养护任务过期检查失败: %v", res.Error)
return
}
logx.WithContext(ctx).Infof("[CRON] 养护任务过期检查完成,共标记 %d 条任务为过期", res.RowsAffected)
}