ci(drone): 添加 Go 模块和构建缓存

- 在 restore cache 和 rebuild cache 步骤中添加了 go-mod-cache 和 go
This commit is contained in:
hxt
2025-07-17 20:25:50 +08:00
parent 9ef6ac9cdb
commit 0ad79c4f27
75 changed files with 1400 additions and 1745 deletions

View File

@@ -54,20 +54,18 @@ func (t *ThirdPartyDataSync) SyncHeroData(ctx context.Context) error {
func (t *ThirdPartyDataSync) SyncArtifactData(ctx context.Context) error {
g.Log().Info(ctx, "开始同步神器数据...")
util.RedisCache.Set(ctx, "artifacts_all11", "asd", 0)
//从第三方API获取神器数据
artifactData, err := t.fetchArtifactDataFromAPI(ctx)
if err != nil {
g.Log().Error(ctx, "获取神器数据失败:", err)
return err
}
// 示例从第三方API获取神器数据
//artifactData, err := t.fetchArtifactDataFromAPI(ctx)
//if err != nil {
// g.Log().Error(ctx, "获取神器数据失败:", err)
// return err
//}
//
//// 处理并保存数据
//if err := t.processAndSaveArtifactData(ctx, artifactData); err != nil {
// g.Log().Error(ctx, "处理神器数据失败:", err)
// return err
//}
// 处理并保存数据
if err := t.processAndSaveArtifactData(ctx, artifactData); err != nil {
g.Log().Error(ctx, "处理神器数据失败:", err)
return err
}
g.Log().Info(ctx, "神器数据同步完成")
return nil
@@ -113,12 +111,9 @@ func (t *ThirdPartyDataSync) FetchHeroBuildsFromAPI(ctx context.Context, heroNam
"Content-Type": "application/json",
}
// 直接将角色名作为body
//bodyBytes := []byte(heroName)
heroNameEN := i18n.Zh2En(heroName)
fmt.Println(heroNameEN)
resp, err := t.client.Header(headers).Post(ctx, apiURL, "Argent Waves Hwayoung")
resp, err := t.client.Header(headers).Post(ctx, apiURL, heroNameEN)
if err != nil {
return "", fmt.Errorf("API请求失败: %v", err)
}
@@ -424,3 +419,61 @@ func (t *ThirdPartyDataSync) SyncAllData(ctx context.Context) error {
g.Log().Info(ctx, "所有第三方数据同步完成")
return nil
}
// RefreshHeroSetContentByHeroInfo 刷新单个角色配装字段
func (t *ThirdPartyDataSync) RefreshHeroSetContentByHeroInfo(ctx context.Context, heroName, heroCode, jsonStr string) error {
g.Log().Infof(ctx, "刷新角色配装: %s", heroName)
if len(jsonStr) > 200 {
_, err := dao.EpicHeroInfo.Ctx(ctx).
Where(dao.EpicHeroInfo.Columns().HeroCode, heroCode).
Data(g.Map{
dao.EpicHeroInfo.Columns().SetContentJson: jsonStr,
dao.EpicHeroInfo.Columns().SetUpdateTime: gtime.Now(),
}).
Update()
if err != nil {
g.Log().Errorf(ctx, "更新数据库失败: %s, err: %v", heroName, err)
return err
}
g.Log().Infof(ctx, "已更新: %s", heroName)
return nil
} else {
g.Log().Error(ctx, "配装数据无效(长度<=200): %s", heroName)
return fmt.Errorf("配装数据无效(长度<=200)")
}
}
// RefreshAllHeroSetContent 刷新所有角色配装字段
func (t *ThirdPartyDataSync) RefreshAllHeroSetContent(ctx context.Context) error {
g.Log().Info(ctx, "开始批量刷新所有角色配装字段...")
// 1. 查询所有角色按set_update_time正序排列为空的在最前面
var heroList []*entity.EpicHeroInfo
err := dao.EpicHeroInfo.Ctx(ctx).
OrderAsc("set_update_time").
Scan(&heroList)
if err != nil {
g.Log().Error(ctx, "查询epic_hero_info失败:", err)
return err
}
for i, epicHeroInfo := range heroList {
g.Log().Infof(ctx, "[%d/%d] 处理角色: %s", i+1, len(heroList), epicHeroInfo.HeroName)
jsonStr, err := t.FetchHeroBuildsFromAPI(ctx, epicHeroInfo.HeroName)
if err != nil {
g.Log().Errorf(ctx, "获取配装数据失败: %s, err: %v", epicHeroInfo.HeroName, err)
} else {
err = t.RefreshHeroSetContentByHeroInfo(ctx, epicHeroInfo.HeroName, epicHeroInfo.HeroCode, jsonStr)
}
// 远程接口有频率限制停顿10分钟
if i < len(heroList)-1 {
g.Log().Info(ctx, "等待10分钟...")
time.Sleep(10 * time.Minute)
}
if err != nil {
continue
}
}
g.Log().Info(ctx, "所有角色配装字段刷新完成")
return nil
}