|
|
@@ -0,0 +1,138 @@
|
|
|
+# 农场模块产出数量区间修改
|
|
|
+
|
|
|
+**时间**: 2025年06月20日 12:30
|
|
|
+**任务**: 将产出数量区间改为两个字段:有灾害时最大产出 + 有灾害时最小产出
|
|
|
+
|
|
|
+## 任务概述
|
|
|
+
|
|
|
+根据用户需求,将农场模块中的产出数量区间从单一范围修改为两个独立字段:
|
|
|
+- **有灾害时最大产出** (disaster_max_amount/disaster_max_output) - 保留现有字段
|
|
|
+- **有灾害时最小产出** (disaster_min_amount/disaster_min_output) - 新增字段
|
|
|
+
|
|
|
+这样在有灾害时,产出数量将在 `disaster_min_amount` 到 `disaster_max_amount` 之间随机生成。
|
|
|
+
|
|
|
+## 修改内容
|
|
|
+
|
|
|
+### 1. 数据库表结构修改
|
|
|
+
|
|
|
+#### FarmSeedOutput表
|
|
|
+```sql
|
|
|
+ALTER TABLE kku_farm_seed_outputs
|
|
|
+ADD COLUMN disaster_min_amount int unsigned NOT NULL DEFAULT 500
|
|
|
+COMMENT '有灾害时最小产出数量' AFTER disaster_max_amount;
|
|
|
+```
|
|
|
+
|
|
|
+#### FarmSeed表
|
|
|
+```sql
|
|
|
+ALTER TABLE kku_farm_seeds
|
|
|
+ADD COLUMN disaster_min_output int unsigned NOT NULL DEFAULT 500
|
|
|
+COMMENT '有灾害时最小产出' AFTER disaster_max_output;
|
|
|
+```
|
|
|
+
|
|
|
+### 2. 模型类更新
|
|
|
+
|
|
|
+#### FarmSeedOutput模型
|
|
|
+- 添加 `disaster_min_amount` 字段到 `$fillable` 数组
|
|
|
+- 更新模型注释添加新字段说明
|
|
|
+
|
|
|
+#### FarmSeed模型
|
|
|
+- 添加 `disaster_min_output` 字段到 `$fillable` 数组
|
|
|
+- 更新模型注释添加新字段说明
|
|
|
+
|
|
|
+### 3. 后台管理界面更新
|
|
|
+
|
|
|
+#### FarmSeedOutputController
|
|
|
+- 表格列表页面添加"灾害时最小产出"列
|
|
|
+- 详情页面添加字段显示
|
|
|
+- 编辑表单添加字段输入,默认值500,带帮助文本
|
|
|
+
|
|
|
+#### FarmSeedController
|
|
|
+- 表格列表页面添加"灾害时最小产出"列
|
|
|
+- 详情页面添加字段显示
|
|
|
+- 编辑表单添加字段输入,默认值500,带帮助文本
|
|
|
+
|
|
|
+### 4. 业务逻辑更新
|
|
|
+
|
|
|
+#### CropLogic.php 产量计算逻辑
|
|
|
+- `getOutputInfoByItemId()` 方法返回结果中添加 `disaster_min_amount` 字段
|
|
|
+- `calculateMatureOutput()` 方法中:
|
|
|
+ - 有灾害时使用 `disaster_min_amount` 到 `disaster_max_amount` 区间
|
|
|
+ - 无灾害时使用 `min_amount` 到 `max_amount` 区间
|
|
|
+ - 更新丰收之神加持时的最大产量计算逻辑
|
|
|
+ - 日志记录中添加 `min_base_amount` 字段
|
|
|
+
|
|
|
+### 5. 数据修正
|
|
|
+
|
|
|
+#### 现有数据处理
|
|
|
+```sql
|
|
|
+-- 修正FarmSeedOutput表数据
|
|
|
+UPDATE kku_farm_seed_outputs
|
|
|
+SET disaster_min_amount = GREATEST(1, FLOOR(min_amount * 0.5))
|
|
|
+WHERE disaster_min_amount = 500;
|
|
|
+
|
|
|
+-- 修正FarmSeed表数据
|
|
|
+UPDATE kku_farm_seeds
|
|
|
+SET
|
|
|
+ min_output = 100,
|
|
|
+ max_output = 500,
|
|
|
+ disaster_min_output = 50,
|
|
|
+ disaster_max_output = 300
|
|
|
+WHERE id IN (1,2,3,4,5,6,7);
|
|
|
+```
|
|
|
+
|
|
|
+### 6. 生成SQL文件更新
|
|
|
+
|
|
|
+更新了 `farm_seed_outputs.sql` 和 `farm_seeds.sql` 文件,添加新字段定义。
|
|
|
+
|
|
|
+## 测试验证
|
|
|
+
|
|
|
+### 后台管理界面测试
|
|
|
+1. ✅ FarmSeedOutput列表页面正确显示"灾害时最小产出"列
|
|
|
+2. ✅ FarmSeedOutput编辑页面正确显示新字段输入框
|
|
|
+3. ✅ FarmSeed列表页面正确显示"灾害时最小产出"列
|
|
|
+4. ✅ 数据显示正确(FarmSeedOutput: 5, FarmSeed: 50)
|
|
|
+
|
|
|
+### 数据库验证
|
|
|
+- ✅ 表结构修改成功
|
|
|
+- ✅ 现有数据已修正为合理值
|
|
|
+- ✅ 新字段默认值设置正确
|
|
|
+
|
|
|
+## 技术要点
|
|
|
+
|
|
|
+### 产量计算逻辑
|
|
|
+- **无灾害时**: 使用 `min_amount` 到 `max_amount` 区间
|
|
|
+- **有灾害时**: 使用 `disaster_min_amount` 到 `disaster_max_amount` 区间
|
|
|
+- **丰收之神加持**: 使用对应区间的最大值
|
|
|
+
|
|
|
+### 数据一致性
|
|
|
+- 确保 `disaster_min_amount <= disaster_max_amount`
|
|
|
+- 确保 `disaster_min_output <= disaster_max_output`
|
|
|
+- 灾害时的产出范围通常比正常时更低
|
|
|
+
|
|
|
+## 文件修改清单
|
|
|
+
|
|
|
+1. `app/Module/Farm/Models/FarmSeedOutput.php` - 模型更新
|
|
|
+2. `app/Module/Farm/Models/FarmSeed.php` - 模型更新
|
|
|
+3. `app/Module/Farm/AdminControllers/FarmSeedOutputController.php` - 后台管理
|
|
|
+4. `app/Module/Farm/AdminControllers/FarmSeedController.php` - 后台管理
|
|
|
+5. `app/Module/Farm/Logics/CropLogic.php` - 业务逻辑
|
|
|
+6. `app/Module/Farm/Databases/GenerateSql/farm_seed_outputs.sql` - 生成SQL
|
|
|
+7. `app/Module/Farm/Databases/GenerateSql/farm_seeds.sql` - 生成SQL
|
|
|
+
|
|
|
+## 提交信息
|
|
|
+
|
|
|
+```
|
|
|
+农场模块:修改产出数量区间为有灾害时最大产出+有灾害时最小产出
|
|
|
+
|
|
|
+- 为FarmSeedOutput表添加disaster_min_amount字段
|
|
|
+- 为FarmSeed表添加disaster_min_output字段
|
|
|
+- 更新模型类添加新字段到fillable和注释
|
|
|
+- 更新后台管理界面显示和编辑新字段
|
|
|
+- 更新CropLogic产量计算逻辑使用新的灾害时最小产出
|
|
|
+- 修正数据库现有数据设置合理的默认值
|
|
|
+- 更新生成的SQL文件反映新表结构
|
|
|
+```
|
|
|
+
|
|
|
+## 任务完成状态
|
|
|
+
|
|
|
+✅ **已完成** - 所有修改已实施并测试通过,代码已提交到远程仓库。
|