Files
epic-go/README.MD
hu xiaotong 8ab1379cae refactor(internal): 优化 OSS 预签名 URL 缓存刷新任务和英雄数据缓存逻辑
- 注释掉 OSS预签名 URL 缓存刷新任务的定时执行代码
- 在 hero/hero.go 中增加对 Redis缓存和英雄数据集的非空校验
- 修改 OSS预签名 URL 生成逻辑,自动替换为 CDN 域名
2025-07-17 16:11:36 +08:00

210 lines
4.3 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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