ci(drone): 添加 Go 模块和构建缓存
- 在 restore cache 和 rebuild cache 步骤中添加了 go-mod-cache 和 go
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user