- 注释掉 OSS预签名 URL 缓存刷新任务的定时执行代码 - 在 hero/hero.go 中增加对 Redis缓存和英雄数据集的非空校验 - 修改 OSS预签名 URL 生成逻辑,自动替换为 CDN 域名
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
访问服务
- API服务: http://localhost:8283
- Swagger文档: http://localhost:8283/swagger
- API文档: http://localhost:8283/api.json
定时任务
项目集成了完整的定时任务管理功能,支持:
- 自动启动和停止
- 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 # 程序入口
开发指南
添加新的定时任务
- 在
internal/logic/cron/cron.go的registerDefaultJobs方法中添加任务 - 实现具体的任务逻辑
- 配置Cron表达式
- 重启服务
添加新的API接口
- 在
api/目录下定义接口结构 - 在
internal/controller/下实现控制器 - 在
internal/service/下定义服务接口 - 在
internal/logic/下实现业务逻辑 - 在
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
Languages
GO
100%