Files
game_server/docs/数据库修改总结.md

151 lines
4.5 KiB
Markdown
Raw 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.

# 数据库修改总结
## 修改概述
根据需求文档和用户要求,对游戏平台系统进行了以下主要修改:
## 1. LinkBatch表结构调整
### 修改前
- `quantity`: 代表批次大小
- `times`: 代表生成次数
- `batchSize`: 每次的奖励点数
- `deductPoints`: 扣除的点数
### 修改后
- `quantity`: 每次副本的奖励点数从配置表获取默认50
- `times`: 打副本的次数
- 移除了 `batchSize``deductPoints` 字段
### 字段含义
- `quantity`: 每次副本完成后获得的点数,从配置表 `link.default_quantity` 获取
- `times`: 一个批次中打副本的总次数
- `agent_id`: 代理商ID
- `operator_id`: 操作者ID
- `created_at`: 创建时间
### 参数说明
- **`times`**: 打多少次副本,决定总的目标值
- **`linkCount`**: 生成多少个链接决定链接任务的数量默认值1
- **总目标值计算**: `times` × 配置表中的默认奖励点数
## 2. 新增系统配置表
### 表名system_config
用于存储系统各种配置参数,支持动态配置和运行时修改。
#### 主要配置项
**链接生成相关:**
- `link.default_quantity`: 默认奖励点数50
- `link.refresh_interval`: 链接刷新间隔300秒
- `link.qr_expire_time`: 二维码过期时间600秒
- `link.max_times_per_batch`: 每批次最大刷奖励次数100
- `link.min_quantity`: 最小奖励点数10
- `link.max_quantity`: 最大奖励点数1000
**脚本服务器相关:**
- `script.server_url`: 脚本服务器地址
- `script.qr_path_template`: 二维码图片路径模板
## 3. 代码结构更新
### 新增文件
1. **实体类**
- `SystemConfig.java` - 系统配置实体
2. **Mapper接口**
- `SystemConfigMapper.java` - 系统配置数据访问接口
3. **XML映射文件**
- `SystemConfigMapper.xml` - MyBatis映射配置
4. **服务类**
- `SystemConfigService.java` - 系统配置业务逻辑服务
5. **控制器**
- `SystemConfigController.java` - 系统配置REST API接口
6. **DTO类**
- `SystemConfigRequest.java` - 配置创建/更新请求
- `SystemConfigResponse.java` - 配置查询响应
- `SystemConfigConverter.java` - 配置对象转换工具
### 修改文件
1. **LinkBatch.java** - 移除不需要的字段
2. **LinkBatchMapper.xml** - 更新SQL映射
3. **LinkGenerationService.java** - 使用配置服务,修复字段设置
## 4. API接口
### 系统配置管理接口
- `GET /api/admin/config/list` - 获取配置列表
- `GET /api/admin/config/key/{configKey}` - 根据键获取配置
- `GET /api/admin/config/type/{configType}` - 根据类型获取配置
- `POST /api/admin/config` - 创建配置
- `PUT /api/admin/config/{id}` - 更新配置
- `DELETE /api/admin/config/{id}` - 删除配置
- `GET /api/admin/config/link/defaults` - 获取链接默认配置
- `GET /api/admin/config/script/config` - 获取脚本配置
## 5. 配置使用方式
### 在服务中使用
```java
@Autowired
private SystemConfigService systemConfigService;
// 获取默认奖励点数
Integer defaultQuantity = systemConfigService.getDefaultQuantity();
// 获取刷新间隔
Integer refreshInterval = systemConfigService.getRefreshInterval();
```
### 动态修改配置
```java
// 更新配置
SystemConfig config = systemConfigService.getConfigByKey("link.default_quantity");
config.setConfigValue("100");
systemConfigService.updateConfig(config);
```
## 6. 数据库脚本
### 执行顺序
1. 执行 `docs/game.sql` 中的新表创建语句
2. 系统会自动插入默认配置数据
### 注意事项
- 新表使用 `utf8mb4` 字符集
- 配置键具有唯一性约束
- 系统配置标记为 `is_system=1`,不建议删除
## 7. 业务逻辑调整
### LinkGenerationService
- 使用配置服务获取过期时间等参数
- 修复了字段设置问题
- `quantity` 现在代表每次的奖励点数
- `times` 代表总次数
### 配置管理
- 支持运行时动态修改配置
- 提供完整的CRUD操作
- 支持配置类型验证
- 提供便捷的配置获取方法
## 8. 后续扩展建议
1. **缓存机制**: 对频繁访问的配置添加缓存
2. **配置验证**: 在更新配置时添加值格式验证
3. **配置变更日志**: 记录配置变更历史
4. **配置导入导出**: 支持配置文件导入导出
5. **权限控制**: 对敏感配置的修改权限控制
## 9. 测试建议
1. 测试配置的增删改查功能
2. 验证LinkBatch表的字段映射
3. 测试配置的动态修改是否生效
4. 验证默认配置值的正确性
5. 测试配置服务的异常处理