i18n翻译

This commit is contained in:
hu xiaotong
2025-07-11 17:09:24 +08:00
parent 9293db3809
commit 4ac2072fce
9 changed files with 733 additions and 48 deletions

View File

@@ -2,14 +2,18 @@ package cron
import (
"context"
"encoding/json"
"epic/internal/consts"
"epic/internal/dao"
"epic/internal/model/dto"
"epic/utility"
"epic/internal/model/entity"
"epic/internal/util"
"fmt"
"github.com/gogf/gf/v2/encoding/gjson"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/gclient"
"github.com/gogf/gf/v2/os/gtime"
"strconv"
"time"
)
@@ -50,7 +54,7 @@ func (t *ThirdPartyDataSync) SyncHeroData(ctx context.Context) error {
func (t *ThirdPartyDataSync) SyncArtifactData(ctx context.Context) error {
g.Log().Info(ctx, "开始同步神器数据...")
utility.RedisCache.Set(ctx, "artifacts_all11", "asd", 0)
util.RedisCache.Set(ctx, "artifacts_all11", "asd", 0)
// 示例从第三方API获取神器数据
//artifactData, err := t.fetchArtifactDataFromAPI(ctx)
@@ -169,8 +173,6 @@ func (t *ThirdPartyDataSync) processAndSaveArtifactData(ctx context.Context, dat
return fmt.Errorf("解析神器数据到DTO失败: %v", err)
}
g.Log().Info(ctx, "解析到", len(artifacts), "个神器数据")
// 批量处理数据
for _, artifact := range artifacts {
if err := t.saveArtifactData(ctx, artifact); err != nil {
@@ -184,18 +186,71 @@ func (t *ThirdPartyDataSync) processAndSaveArtifactData(ctx context.Context, dat
// saveHeroData 保存单个英雄数据
func (t *ThirdPartyDataSync) saveHeroData(ctx context.Context, hero *dto.ThirdPartyHeroDTO) error {
// TODO: 实现具体的数据库保存逻辑
// 现在 hero 是一个强类型对象,可以直接使用 hero.Code, hero.Name 等
// 示例:记录同步日志
syncLog := map[string]interface{}{
"type": "hero_sync",
"hero_code": hero.Code,
"sync_time": gtime.Now(),
"status": "success",
// 查询是否存在
var dbHero *entity.EpicHeroInfo
err := dao.EpicHeroInfo.Ctx(ctx).
Where(dao.EpicHeroInfo.Columns().HeroCode, hero.Code).
Scan(&dbHero)
if err != nil {
return err
}
g.Log().Debug(ctx, "保存英雄数据:", syncLog)
// 获取原始 JSON 字符串
rawJsonBytes, err := json.Marshal(hero)
if err != nil {
return err
}
rawJson := string(rawJsonBytes)
if dbHero != nil && dbHero.HeroCode != "" {
// 查到记录
if dbHero.RawJson == "" {
// 只更新 rawJson 字段
_, err = dao.EpicHeroInfo.Ctx(ctx).
Where(dao.EpicHeroInfo.Columns().HeroCode, hero.Code).
Data(g.Map{
dao.EpicHeroInfo.Columns().RawJson: rawJson,
// 可选:更新时间
dao.EpicHeroInfo.Columns().UpdateTime: gtime.Now(),
}).
Update()
if err != nil {
return err
}
g.Log().Debug(ctx, "更新英雄rawJson:", hero.Code)
}
// 已有 rawJson不做处理
} else {
status60 := hero.CalculatedStatus["Lv60SixStarFullyAwakened"]
status60json, _ := gjson.EncodeString(status60)
heroJson, _ := gjson.EncodeString(hero)
newHero := &entity.EpicHeroInfo{
Id: 0,
HeroName: "",
HeroCode: hero.Code,
HeroAttrLv60: status60json,
Creator: "",
CreateTime: nil,
Updater: "",
UpdateTime: nil,
Deleted: false,
NickName: "",
Rarity: strconv.Itoa(hero.Rarity),
Role: hero.Role,
Zodiac: "",
HeadImgUrl: "",
Attribute: "",
Remark: "",
RawJson: heroJson,
}
// 没查到,插入新记录,字段按 DO 结构体补全
_, err = dao.EpicHeroInfo.Ctx(ctx).Data(newHero).Insert()
if err != nil {
return err
}
g.Log().Debug(ctx, "插入新英雄:", hero.Code)
}
return nil
}