| 1234567891011121314151617181920212223242526272829303132333435 |
- package tasks
- import (
- "app/commons/core"
- "app/commons/services"
- "app/telegram"
- "github.com/robfig/cron/v3"
- )
- // StartRedPacketExpireTask 在 API 进程中启动红包过期检查定时任务
- func StartRedPacketExpireTask() {
- c := cron.New(cron.WithSeconds())
- // 每30秒检查一次过期红包
- _, err := c.AddFunc("*/30 * * * * *", checkExpiredRedPackets)
- if err != nil {
- core.Log.Errorf("注册红包过期检查任务失败: %v", err)
- return
- }
- c.Start()
- core.Log.Info("红包过期检查定时任务已启动 (每30秒)")
- }
- func checkExpiredRedPackets() {
- svc := &services.RedPacketService{}
- // 结算过期红包(数据库操作),返回需要编辑的 Telegram 消息列表
- editList := svc.ProcessExpiredPackets()
- // 在 tasks 层调用 telegram 包编辑消息(避免 services -> telegram 循环依赖)
- for _, info := range editList {
- telegram.EditExpiredMessage(info.ChatID, info.MessageID, info.Text)
- }
- }
|