151 lines
4.5 KiB
Markdown
151 lines
4.5 KiB
Markdown
# 数据库修改总结
|
||
|
||
## 修改概述
|
||
根据需求文档和用户要求,对游戏平台系统进行了以下主要修改:
|
||
|
||
## 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. 测试配置服务的异常处理
|