hu xiaotong 1dd95f787a refactor(internal): 优化 OSS 预签名 URL 缓存刷新任务和英雄数据缓存逻辑
- 注释掉 OSS预签名 URL 缓存刷新任务的定时执行代码
- 在 hero/hero.go 中增加对 Redis缓存和英雄数据集的非空校验
- 修改 OSS预签名 URL 生成逻辑,自动替换为 CDN 域名
2025-10-27 17:16:35 +08:00
2025-06-20 17:17:02 +08:00
2025-06-20 17:17:02 +08:00
2025-06-20 17:17:02 +08:00
2025-07-14 17:31:48 +08:00
2025-07-14 17:31:48 +08:00

Epic Game Web Service

基于GoFrame框架开发的游戏数据管理Web服务提供英雄信息管理、数据同步等功能。

功能特性

  • 🎮 英雄信息管理
  • 🔄 定时任务调度
  • 🌐 第三方数据同步
  • 💾 数据缓存管理
  • 📊 健康检查监控
  • 🔧 RESTful API接口

技术栈

  • 框架: GoFrame v2.9.0
  • 数据库: MySQL + Redis
  • 定时任务: gcron
  • API文档: Swagger
  • 配置管理: YAML

快速开始

环境要求

  • Go 1.22+
  • MySQL 5.7+
  • Redis 6.0+

安装依赖

go mod tidy

配置数据库

编辑 manifest/config/config.yaml 文件,配置数据库连接信息:

database:
  default:
    link: "mysql:username:password@tcp(host:port)/database"
    debug: true

redis:
  default:
    address: "host:port"
    db: 1
    pass: "password"

启动服务

Windows

go run main.go

访问服务

定时任务

项目集成了完整的定时任务管理功能,支持:

  • 自动启动和停止
  • Cron表达式配置
  • 任务执行日志
  • RESTful API管理
  • 优雅关闭支持

默认任务

任务名称 执行频率 功能描述
data_sync_hourly 每小时 从第三方网站同步数据
data_cleanup_daily 每天凌晨2点 清理过期数据
health_check 每5分钟 系统健康检查
cache_refresh 每30分钟 刷新系统缓存
hero_sync_daily 每天凌晨3点 同步英雄数据
artifact_sync_daily 每天凌晨4点 同步神器数据

管理API

# 获取任务列表
GET /cron/jobs

# 添加新任务
POST /cron/jobs
{
  "name": "custom_job",
  "cron": "0 12 * * *"
}

# 移除任务
DELETE /cron/jobs/{name}

# 获取任务状态
GET /cron/jobs/{name}/status

详细文档请参考:定时任务使用指南

API接口

英雄管理

  • GET /getOne - 获取单个英雄信息
  • GET /app-api/epic/hero/list-all - 获取所有英雄列表
  • GET /app-api/epic/hero/hero-detail - 获取英雄详细信息

定时任务管理

  • GET /cron/jobs - 获取任务列表
  • POST /cron/jobs - 添加新任务
  • DELETE /cron/jobs/{name} - 移除任务
  • GET /cron/jobs/{name}/status - 获取任务状态

项目结构

epic/
├── api/                    # API接口定义
│   ├── hero/              # 英雄相关API
│   └── cron/              # 定时任务API
├── internal/              # 内部业务逻辑
│   ├── cmd/               # 命令行入口
│   ├── controller/        # 控制器层
│   ├── service/           # 服务接口层
│   ├── logic/             # 业务逻辑实现
│   ├── dao/               # 数据访问层
│   └── model/             # 数据模型层
├── manifest/              # 配置文件
│   └── config/            # 应用配置
├── utility/               # 工具类
├── scripts/               # 启动脚本
├── docs/                  # 文档
└── main.go               # 程序入口

开发指南

添加新的定时任务

  1. internal/logic/cron/cron.goregisterDefaultJobs 方法中添加任务
  2. 实现具体的任务逻辑
  3. 配置Cron表达式
  4. 重启服务

添加新的API接口

  1. api/ 目录下定义接口结构
  2. internal/controller/ 下实现控制器
  3. internal/service/ 下定义服务接口
  4. internal/logic/ 下实现业务逻辑
  5. internal/cmd/cmd.go 中注册路由

部署

Docker部署

# 构建镜像
docker build -t epic-game-service .

# 运行容器
docker run -d -p 8283:8283 epic-game-service

系统服务

创建systemd服务文件

[Unit]
Description=Epic Game Web Service
After=network.target

[Service]
Type=simple
User=epic
WorkingDirectory=/opt/epic
ExecStart=/opt/epic/main.exe
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

监控和日志

  • 应用日志:查看控制台输出或日志文件
  • 健康检查:访问 /health 接口
  • 任务状态通过API接口查询

贡献

欢迎提交Issue和Pull Request

许可证

MIT License

Description
No description provided
Readme 330 KiB
Languages
GO 100%