|
|
@@ -4,6 +4,7 @@ namespace App\Module\Farm\Commands;
|
|
|
|
|
|
use App\Module\Farm\Enums\GROWTH_STAGE;
|
|
|
use App\Module\Farm\Events\CropGrowthStageChangedEvent;
|
|
|
+use App\Module\Farm\Logics\CropLogic;
|
|
|
use App\Module\Farm\Models\FarmCrop;
|
|
|
use Illuminate\Console\Command;
|
|
|
use Illuminate\Support\Facades\Log;
|
|
|
@@ -103,34 +104,8 @@ class UpdateCropGrowthCommand extends Command
|
|
|
*/
|
|
|
private function calculateNextStage(FarmCrop $crop): int
|
|
|
{
|
|
|
- $currentStage = $crop->growth_stage;
|
|
|
-
|
|
|
- // 如果当前是成熟期,且超过一定时间,则进入枯萎期
|
|
|
- if ($currentStage === GROWTH_STAGE::MATURE->value) {
|
|
|
- // 成熟期持续时间,默认为24小时
|
|
|
- $matureDuration = 24 * 60 * 60;
|
|
|
-
|
|
|
- // 如果成熟期已经超过指定时间,则进入枯萎期
|
|
|
- if ($crop->stage_end_time && $crop->stage_end_time instanceof \Carbon\Carbon) {
|
|
|
- $endTimeMinusDuration = $crop->stage_end_time->copy()->subSeconds($matureDuration);
|
|
|
- if (now()->diffInSeconds($endTimeMinusDuration) > $matureDuration) {
|
|
|
- return GROWTH_STAGE::WITHERED->value;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return GROWTH_STAGE::MATURE->value;
|
|
|
- }
|
|
|
-
|
|
|
- // 使用阶段映射确定下一个阶段
|
|
|
- $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;
|
|
|
+ $logic = new CropLogic();
|
|
|
+ return $logic->calculateNextStage($crop);
|
|
|
}
|
|
|
|
|
|
/**
|