时间: 2025年06月20日 14:49
任务: 修复后台土地类型列表中神秘种子灾害产量显示错误的问题
用户反馈后台 /admin/farm-land-types 页面中,神秘种子的灾害产量显示为 200-300,但数据库配置的是 100-200,与期望不一致。
通过检查发现问题的根源:
问题出现在 MysterySeeLLogic::calculateAdjustedProbabilities() 方法中,该方法返回的数据结构缺少了 disaster_min_amount 和 disaster_max_amount 字段,导致后台代码使用 fallback 逻辑,错误地使用了正常产量作为灾害产量。
用户指出了一个重要的架构问题:后台编写了独立的产出逻辑计算,这是错误的,应该使用服务层/逻辑层的现有逻辑。
这违反了项目的架构设计原则:
修复 app/Module/Farm/Logics/MysterySeeLLogic.php 中的两个方法:
$adjustedOutputs[] = [
'item_id' => $output->item_id,
'min_amount' => $output->min_amount,
'max_amount' => $output->max_amount,
'disaster_min_amount' => $output->disaster_min_amount, // 新增
'disaster_max_amount' => $output->disaster_max_amount, // 新增
'original_probability' => $baseProbability,
'adjusted_probability' => $adjustedProbability,
'adjustment_type' => $adjustmentType,
'is_default' => $output->is_default
];
return [[
'item_id' => $seed->item_id,
'min_amount' => $seed->min_output,
'max_amount' => $seed->max_output,
'disaster_min_amount' => $seed->disaster_min_output, // 新增
'disaster_max_amount' => $seed->disaster_max_output, // 新增
'original_probability' => 100,
'adjusted_probability' => 100,
'adjustment_type' => 'default',
'is_default' => true
]];
更新 app/Module/Farm/AdminControllers/Helper/GridHelperTrait.php 中的注释,明确说明使用服务层逻辑:
/**
* 渲染神秘种子的产出详情
*
* 使用服务层逻辑计算神秘种子在该土地类型上的产出概率和产量
*
* @param \App\Module\Farm\Models\FarmLandType $landType
* @return string
*/
修复后通过浏览器访问后台土地类型列表页面,验证结果:
现在两者都与数据库配置一致。
git add app/Module/Farm/AdminControllers/Helper/GridHelperTrait.php app/Module/Farm/Logics/MysterySeeLLogic.php
git commit -m "修复农场模块:神秘种子灾害产量显示错误问题
- 修复MysterySeeLLogic::calculateAdjustedProbabilities()方法缺少disaster_min_amount和disaster_max_amount字段的问题
- 修复getDefaultOutputConfig()方法缺少灾害产量字段的问题
- 更新后台GridHelperTrait注释,明确使用服务层逻辑而非独立计算
- 现在神秘种子和普通种子的灾害产量都正确显示为100-200,与数据库配置一致
- 遵循架构设计原则:后台使用服务层逻辑,避免重复实现计算逻辑"
git push
这次修复解决了两个层面的问题:
通过修复逻辑层的数据结构,确保了后台显示与数据库配置的一致性,同时遵循了项目的架构设计原则。