Przeglądaj źródła

添加施肥验证调试日志:排查验证逻辑问题

- 在FertilizerItemValidator中添加详细的调试日志
- 在FertilizerUsageValidator中添加作物检查的调试日志
- 用于排查为什么验证没有捕获'作物不存在'的问题
- 临时调试代码,问题解决后将移除
notfff 7 miesięcy temu
rodzic
commit
9297be1e55

+ 21 - 0
app/Module/Farm/Validators/FertilizerItemValidator.php

@@ -4,6 +4,7 @@ namespace App\Module\Farm\Validators;
 
 use App\Module\GameItems\Models\Item;
 use App\Module\GameItems\Services\ItemService;
+use Illuminate\Support\Facades\Log;
 use UCore\Validator;
 
 /**
@@ -23,9 +24,15 @@ class FertilizerItemValidator extends Validator
     public function validate(mixed $value, array $data): bool
     {
         try {
+            Log::info('FertilizerItemValidator开始验证', [
+                'item_id' => $value,
+                'data' => $data
+            ]);
+
             // 获取物品信息
             $item = Item::find($value);
             if (!$item) {
+                Log::warning('FertilizerItemValidator: 物品不存在', ['item_id' => $value]);
                 $this->addError('物品不存在');
                 return false;
             }
@@ -33,8 +40,17 @@ class FertilizerItemValidator extends Validator
             // 获取肥料的crop_growth_time属性
             $cropGrowthTime = ItemService::getItemNumericAttribute($value, 'crop_growth_time', 0);
 
+            Log::info('FertilizerItemValidator: 获取到crop_growth_time', [
+                'item_id' => $value,
+                'crop_growth_time' => $cropGrowthTime
+            ]);
+
             // 验证是否为有效的肥料(crop_growth_time > 0)
             if ($cropGrowthTime <= 0) {
+                Log::warning('FertilizerItemValidator: 物品不是有效的肥料', [
+                    'item_id' => $value,
+                    'crop_growth_time' => $cropGrowthTime
+                ]);
                 $this->addError('该物品不是有效的肥料');
                 return false;
             }
@@ -48,6 +64,11 @@ class FertilizerItemValidator extends Validator
                 $this->validation->{$this->args[1]} = $cropGrowthTime;
             }
 
+            Log::info('FertilizerItemValidator: 验证通过', [
+                'item_id' => $value,
+                'crop_growth_time' => $cropGrowthTime
+            ]);
+
             return true;
         } catch (\Exception $e) {
             $this->addError('验证肥料物品时发生错误:' . $e->getMessage());

+ 14 - 0
app/Module/Farm/Validators/FertilizerUsageValidator.php

@@ -5,6 +5,7 @@ namespace App\Module\Farm\Validators;
 use App\Module\Farm\Enums\LAND_STATUS;
 use App\Module\Farm\Enums\GROWTH_STAGE;
 use App\Module\Farm\Models\FarmCrop;
+use Illuminate\Support\Facades\Log;
 use UCore\Validator;
 
 /**
@@ -24,6 +25,11 @@ class FertilizerUsageValidator extends Validator
     public function validate(mixed $value, array $data): bool
     {
         try {
+            Log::info('FertilizerUsageValidator开始验证', [
+                'land_id' => $value,
+                'data' => $data
+            ]);
+
             // 获取土地对象
             $land = null;
             if (isset($this->args[0])) {
@@ -31,6 +37,7 @@ class FertilizerUsageValidator extends Validator
             }
 
             if (!$land) {
+                Log::warning('FertilizerUsageValidator: 土地信息不存在', ['land_id' => $value]);
                 $this->addError('土地信息不存在');
                 return false;
             }
@@ -43,7 +50,14 @@ class FertilizerUsageValidator extends Validator
 
             // 获取作物信息
             $crop = FarmCrop::where('land_id', $value)->first();
+            Log::info('FertilizerUsageValidator: 查询作物信息', [
+                'land_id' => $value,
+                'crop_found' => $crop ? true : false,
+                'crop_id' => $crop ? $crop->id : null
+            ]);
+
             if (!$crop) {
+                Log::warning('FertilizerUsageValidator: 土地上没有作物', ['land_id' => $value]);
                 $this->addError('土地上没有作物');
                 return false;
             }