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
}

View File

@@ -7,7 +7,7 @@ import (
"epic/internal/model/dto"
"epic/internal/model/entity"
"epic/internal/service"
"epic/utility"
"epic/internal/util"
"github.com/gogf/gf/v2/encoding/gjson"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/util/gconv"
@@ -46,9 +46,9 @@ func (l *Logic) GetHeroByCode(ctx context.Context, code string) (*entity.EpicHer
// GetHeroList 查询所有英雄信息,并按创建时间倒序排列
func (l *Logic) GetHeroList(ctx context.Context) ([]*v1.EpicHeroVO, error) {
//utility.RedisCache.Set(ctx, "epic_artifact_map_key111", "122", 1000*time.Second)
//utility.RedisCache.Set(ctx, "epic_artifact_map_key222", "6565", 0)
//fmt.Println(utility.RedisCache.Get(ctx, "NAME"))
//util.RedisCache.Set(ctx, "epic_artifact_map_key111", "122", 1000*time.Second)
//util.RedisCache.Set(ctx, "epic_artifact_map_key222", "6565", 0)
//fmt.Println(util.RedisCache.Get(ctx, "NAME"))
var (
doList []*entity.EpicHeroInfo // 数据库原始结构
@@ -117,7 +117,7 @@ func (l *Logic) GetHeroDetailByCode(ctx context.Context, code string) (*v1.HeroD
// 优化:先查 RedisCache再查数据库
cacheKey := "epic_hero_set:" + code
jsonContent, err := utility.RedisCache.Get(ctx, cacheKey)
jsonContent, err := util.RedisCache.Get(ctx, cacheKey)
if err == nil && !jsonContent.IsEmpty() {
fribbleHeroSet = &entity.FribbleHeroSet{
HeroCode: code,
@@ -131,7 +131,7 @@ func (l *Logic) GetHeroDetailByCode(ctx context.Context, code string) (*v1.HeroD
return nil, err
}
// 写入 Redis 缓存1小时
utility.RedisCache.Set(ctx, cacheKey, fribbleHeroSet.JsonContent, 0)
util.RedisCache.Set(ctx, cacheKey, fribbleHeroSet.JsonContent, 0)
}
// 解析 JsonContent 字段