From 8ab1379cae18145cbe55065b1c099dad86e615ac Mon Sep 17 00:00:00 2001 From: hu xiaotong <416314413@163.com> Date: Thu, 17 Jul 2025 16:11:36 +0800 Subject: [PATCH] =?UTF-8?q?refactor(internal):=20=E4=BC=98=E5=8C=96=20OSS?= =?UTF-8?q?=20=E9=A2=84=E7=AD=BE=E5=90=8D=20URL=20=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E4=BB=BB=E5=8A=A1=E5=92=8C=E8=8B=B1=E9=9B=84?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=BC=93=E5=AD=98=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 注释掉 OSS预签名 URL 缓存刷新任务的定时执行代码 - 在 hero/hero.go 中增加对 Redis缓存和英雄数据集的非空校验 - 修改 OSS预签名 URL 生成逻辑,自动替换为 CDN 域名 --- README.MD | 13 ++----------- internal/logic/cron/cron.go | 10 +++++----- internal/logic/hero/hero.go | 6 ++++++ internal/util/oss.go | 10 ++++++---- 4 files changed, 19 insertions(+), 20 deletions(-) diff --git a/README.MD b/README.MD index 0c01f98..607676a 100644 --- a/README.MD +++ b/README.MD @@ -52,22 +52,13 @@ redis: ### 启动服务 -#### Linux/Mac -```bash -chmod +x scripts/start.sh -./scripts/start.sh -``` - #### Windows -```cmd -scripts\start.bat -``` - -#### 手动启动 ```bash go run main.go ``` + + ### 访问服务 - **API服务**: http://localhost:8283 diff --git a/internal/logic/cron/cron.go b/internal/logic/cron/cron.go index a523c86..0b8e76a 100644 --- a/internal/logic/cron/cron.go +++ b/internal/logic/cron/cron.go @@ -174,11 +174,11 @@ func (l *Logic) registerDefaultJobs(ctx context.Context) error { } // 每30分钟执行一次OSS预签名URL缓存刷新任务 - if err := l.AddJob(ctx, "oss_presignurl_refresh", "0 0/30 * * * *", func() { - l.refreshOssPresignUrlCacheJob(ctx) - }); err != nil { - return err - } + //if err := l.AddJob(ctx, "oss_presignurl_refresh", "0 0/30 * * * *", func() { + // l.refreshOssPresignUrlCacheJob(ctx) + //}); err != nil { + // return err + //} return nil } diff --git a/internal/logic/hero/hero.go b/internal/logic/hero/hero.go index 4fb4087..4545858 100644 --- a/internal/logic/hero/hero.go +++ b/internal/logic/hero/hero.go @@ -130,6 +130,12 @@ func (l *Logic) GetHeroDetailByCode(ctx context.Context, code string) (*v1.HeroD if err != nil { return nil, err } + if util.RedisCache == nil { + panic("util.RedisCache is nil") + } + if fribbleHeroSet == nil { + panic("fribbleHeroSet is nil") + } // 写入 Redis 缓存,1小时 util.RedisCache.Set(ctx, cacheKey, fribbleHeroSet.JsonContent, 0) } diff --git a/internal/util/oss.go b/internal/util/oss.go index a76e4f2..b3f7d6e 100644 --- a/internal/util/oss.go +++ b/internal/util/oss.go @@ -7,6 +7,7 @@ import ( "io" "net/http" "os" + "strings" "sync" "time" @@ -146,11 +147,12 @@ func RefreshOssPresignedUrlCache(ctx context.Context, keys []string, expire time } // 缓存到Redis,key可加前缀区分 cacheKey := "oss:presignurl:" + key - if err := RedisCache.Set(ctx, cacheKey, presignResult.URL, expire); err != nil { + // 自动生成CDN域名的预签名可访问地址 + cdnPresignedUrl := strings.Replace(presignResult.URL, "https://"+bucket+".s3.bitiful.net", "https://bfoss.htoop.cn", 1) + fmt.Printf("CDN预签名可访问地址: %s\n", cdnPresignedUrl) + // 写入Redis时也用CDN域名的预签名地址 + if err := RedisCache.Set(ctx, cacheKey, cdnPresignedUrl, expire); err != nil { Error(ctx, "写入Redis失败", cacheKey, err) - } else { - // 打印预签名可访问地址 - fmt.Printf("预签名可访问地址: %s\n", presignResult.URL) } } return nil