- 注释掉 OSS预签名 URL 缓存刷新任务的定时执行代码 - 在 hero/hero.go 中增加对 Redis缓存和英雄数据集的非空校验 - 修改 OSS预签名 URL 生成逻辑,自动替换为 CDN 域名
210 lines
4.3 KiB
Go
210 lines
4.3 KiB
Go
# 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 |