refactor(internal): 优化 OSS 预签名 URL 缓存刷新任务和英雄数据缓存逻辑

- 注释掉 OSS预签名 URL 缓存刷新任务的定时执行代码
- 在 hero/hero.go 中增加对 Redis缓存和英雄数据集的非空校验
- 修改 OSS预签名 URL 生成逻辑,自动替换为 CDN 域名
This commit is contained in:
hu xiaotong
2025-07-17 17:37:13 +08:00
parent 8ab1379cae
commit 9ef6ac9cdb
3 changed files with 64 additions and 6 deletions

View File

@@ -4,10 +4,12 @@ import (
"context"
v1 "epic/api/hero/v1"
"epic/internal/dao"
"epic/internal/logic/cron"
"epic/internal/model/dto"
"epic/internal/model/entity"
"epic/internal/service"
"epic/internal/util"
"fmt"
"github.com/gogf/gf/v2/encoding/gjson"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/util/gconv"
@@ -115,6 +117,7 @@ func (l *Logic) GetHeroDetailByCode(ctx context.Context, code string) (*v1.HeroD
return nil, err
}
thirdPartySync := cron.NewThirdPartyDataSync()
// 优化:先查 RedisCache再查数据库
cacheKey := "epic_hero_set:" + code
jsonContent, err := util.RedisCache.Get(ctx, cacheKey)
@@ -134,10 +137,22 @@ func (l *Logic) GetHeroDetailByCode(ctx context.Context, code string) (*v1.HeroD
panic("util.RedisCache is nil")
}
if fribbleHeroSet == nil {
panic("fribbleHeroSet is nil")
// 新增:如果fribbleHeroSet为nil调用第三方接口获取配装json
//thirdPartySync := cron.NewThirdPartyDataSync()
jsonStr, err := thirdPartySync.FetchHeroBuildsFromAPI(ctx, epicHeroInfo.HeroName)
if err != nil {
return nil, err
}
fmt.Println(jsonStr)
fribbleHeroSet = &entity.FribbleHeroSet{
HeroCode: code,
JsonContent: jsonStr,
}
}
if fribbleHeroSet.JsonContent != "" {
// 写入 Redis 缓存,永久
util.RedisCache.Set(ctx, cacheKey, fribbleHeroSet.JsonContent, 0)
}
// 写入 Redis 缓存1小时
util.RedisCache.Set(ctx, cacheKey, fribbleHeroSet.JsonContent, 0)
}
// 解析 JsonContent 字段