# 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+ ### 安装依赖 ```bash go mod tidy ``` ### 配置数据库 编辑 `manifest/config/config.yaml` 文件,配置数据库连接信息: ```yaml database: default: link: "mysql:username:password@tcp(host:port)/database" debug: true redis: default: address: "host:port" db: 1 pass: "password" ``` ### 启动服务 #### Windows ```bash 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 ```bash # 获取任务列表 GET /cron/jobs # 添加新任务 POST /cron/jobs { "name": "custom_job", "cron": "0 12 * * *" } # 移除任务 DELETE /cron/jobs/{name} # 获取任务状态 GET /cron/jobs/{name}/status ``` 详细文档请参考:[定时任务使用指南](docs/cron.md) ## 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.go` 的 `registerDefaultJobs` 方法中添加任务 2. 实现具体的任务逻辑 3. 配置Cron表达式 4. 重启服务 ### 添加新的API接口 1. 在 `api/` 目录下定义接口结构 2. 在 `internal/controller/` 下实现控制器 3. 在 `internal/service/` 下定义服务接口 4. 在 `internal/logic/` 下实现业务逻辑 5. 在 `internal/cmd/cmd.go` 中注册路由 ## 部署 ### Docker部署 ```bash # 构建镜像 docker build -t epic-game-service . # 运行容器 docker run -d -p 8283:8283 epic-game-service ``` ### 系统服务 创建systemd服务文件: ```ini [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