From a51f5d78343dd312759e48d1aa091954e263facc Mon Sep 17 00:00:00 2001 From: ziming Date: Wed, 2 Jul 2025 15:51:54 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E8=AD=A640?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/biz/vo/cache.go | 2 ++ internal/service/warning_budget.go | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/internal/biz/vo/cache.go b/internal/biz/vo/cache.go index 5029641..0650a04 100644 --- a/internal/biz/vo/cache.go +++ b/internal/biz/vo/cache.go @@ -30,6 +30,7 @@ const ( ) var ( + WarningBudgetCron CacheKey = "warning_budget_cron" WarningBudgetSendIncr CacheKey = "warning_budget_incr" ) @@ -49,6 +50,7 @@ var CacheKeyMap = map[CacheKey]time.Duration{ ProductQueryLockKey: 30 * time.Second, WarningBudgetSendIncr: 3 * time.Hour, + WarningBudgetCron: 5 * time.Minute, } type Cache struct { diff --git a/internal/service/warning_budget.go b/internal/service/warning_budget.go index fd28bc4..8482780 100644 --- a/internal/service/warning_budget.go +++ b/internal/service/warning_budget.go @@ -2,7 +2,11 @@ package service import ( "context" + "fmt" "github.com/go-kratos/kratos/v2/log" + "github.com/redis/go-redis/v9" + "time" + "voucher/internal/biz/vo" ) func (s *VoucherService) CronWarningBudget(ctx context.Context) error { @@ -24,6 +28,23 @@ func (s *VoucherService) CronWarningBudget(ctx context.Context) error { return nil } + cv := vo.WarningBudgetCron.BuildCache([]string{""}) + + cacheValue, err2 := s.rdb.Rdb.Get(ctx, cv.Key).Result() + + if err2 != nil && err2 != redis.Nil { + return fmt.Errorf(fmt.Sprintf("warningBudget定时任务,notice 获取redis缓存%s异常:%v", cv.Key, err2)) + } + + if len(cacheValue) > 0 { + log.Error("warningBudget定时任务,notice 获取redis缓存存在,本台服务不做执行") + return nil + } + + if err := s.rdb.Rdb.Set(ctx, cv.Key, time.Now().Format(time.DateTime), cv.TTL).Err(); err != nil { + return fmt.Errorf(fmt.Sprintf("warningBudget定时任务 设置redis缓存%s异常:%v", cv.Key, err)) + } + return s.cron.AddFunc(c.Command, func() { s.VoucherBiz.CronWarningBudget(ctx)