Ver Fonte

refactor(farm): 优化作物生长阶段更新逻辑

- 修改生长阶段变更事件,使用数值代替枚举对象
- 优化下一阶段计算逻辑,使用阶段映射替代简单递增
- 更新阶段结束时间计算方法,使用枚举的值进行比较
- 修复农场用户汇总页面的路由和参数
notfff há 7 meses atrás
pai
commit
49d0db3974

+ 16 - 8
app/Module/Farm/Commands/UpdateCropGrowthCommand.php

@@ -68,7 +68,7 @@ class UpdateCropGrowthCommand extends Command
                 $crop->save();
 
                 // 触发生长阶段变更事件
-                event(new CropGrowthStageChangedEvent($userId, $crop, $oldStage, $newStage));
+                event(new CropGrowthStageChangedEvent($userId, $crop, $oldStage->value, $newStage));
 
                 $updatedCount++;
 
@@ -121,8 +121,16 @@ class UpdateCropGrowthCommand extends Command
             return GROWTH_STAGE::MATURE->value;
         }
 
-        // 正常阶段递增
-        return $currentStage + 1;
+        // 使用阶段映射确定下一个阶段
+        $stageMap = [
+            GROWTH_STAGE::SEED->value => GROWTH_STAGE::SPROUT->value,
+            GROWTH_STAGE::SPROUT->value => GROWTH_STAGE::GROWTH->value,
+            GROWTH_STAGE::GROWTH->value => GROWTH_STAGE::MATURE->value,
+            GROWTH_STAGE::MATURE->value => GROWTH_STAGE::WITHERED->value,
+            GROWTH_STAGE::WITHERED->value => GROWTH_STAGE::WITHERED->value, // 枯萎期保持不变
+        ];
+
+        return $stageMap[$currentStage->value] ?? GROWTH_STAGE::WITHERED->value;
     }
 
     /**
@@ -143,20 +151,20 @@ class UpdateCropGrowthCommand extends Command
         $now = now();
 
         switch ($stage) {
-            case GROWTH_STAGE::SEED:
+            case GROWTH_STAGE::SEED->valueInt():
                 return $now->addSeconds($seed->seed_time);
 
-            case GROWTH_STAGE::SPROUT:
+            case GROWTH_STAGE::SPROUT->valueInt():
                 return $now->addSeconds($seed->sprout_time);
 
-            case GROWTH_STAGE::GROWTH:
+            case GROWTH_STAGE::GROWTH->valueInt():
                 return $now->addSeconds($seed->growth_time);
 
-            case GROWTH_STAGE::MATURE:
+            case GROWTH_STAGE::MATURE->valueInt():
                 // 成熟期持续24小时后进入枯萎期
                 return $now->addHours(24);
 
-            case GROWTH_STAGE::WITHERED:
+            case GROWTH_STAGE::WITHERED->valueInt():
                 // 枯萎期没有结束时间
                 return null;
 

+ 1 - 1
app/Module/Farm/Logics/CropLogic.php

@@ -580,7 +580,7 @@ class CropLogic
             $crop->save();
 
             // 触发生长阶段变更事件
-            event(new CropGrowthStageChangedEvent($crop->user_id, $crop, $oldStage, $newStage));
+            event(new CropGrowthStageChangedEvent($crop->user_id, $crop, $oldStage->value, $newStage->value));
 
             Log::info('作物生长阶段更新成功', [
                 'crop_id' => $cropId,

+ 1 - 1
app/Module/Farm/Models/FarmCrop.php

@@ -52,7 +52,7 @@ class FarmCrop extends Model
         'fertilized',
     ];
 
-    
+
     /**
      * 应该被转换为原生类型的属性
      *

+ 1 - 1
app/Module/Game/AdminControllers/FarmUserSummaryController.php

@@ -68,7 +68,7 @@ class FarmUserSummaryController extends AdminController
         if (!$user) {
             admin_error('错误', '用户不存在');
 
-            return redirect()->route('dcat.admin.farm-user-summary');
+            return redirect()->route('dcat.admin.farm-user-summarys');
         }
 
         return $content

+ 1 - 1
app/Module/User/AdminControllers/Actions/UserRelatedPagesAction.php

@@ -54,7 +54,7 @@ class UserRelatedPagesAction extends RowAction
                 'title' => '暂存区'
             ],
             [
-                'url' => admin_url("farm-user-summary?user_id={$userId}"),
+                'url' => admin_url("farm-user-summary?id={$userId}"),
                 'icon' => 'fa-leaf',
                 'title' => '用户农场信息汇总'
             ],