|
|
@@ -20,6 +20,7 @@ use App\Module\Farm\Models\FarmSowLog;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
use Illuminate\Support\Facades\Log;
|
|
|
use UCore\Db\Helper;
|
|
|
+use UCore\DcatAdmin\Herlper;
|
|
|
use UCore\Dto\Res;
|
|
|
|
|
|
/**
|
|
|
@@ -181,11 +182,12 @@ class CropLogic
|
|
|
* @param int $landId
|
|
|
* @return HarvestResultDto|null
|
|
|
*/
|
|
|
- public function harvestCrop(int $userId, int $landId): ?HarvestResultDto
|
|
|
+ public function harvestCrop(int $userId, int $landId): Res
|
|
|
{
|
|
|
try {
|
|
|
- // 开启事务
|
|
|
- DB::beginTransaction();
|
|
|
+// 事务检查
|
|
|
+
|
|
|
+ Helper::check_tr();
|
|
|
|
|
|
// 获取土地信息
|
|
|
$land = FarmLand::where('id', $landId)
|
|
|
@@ -209,7 +211,7 @@ class CropLogic
|
|
|
}
|
|
|
|
|
|
// 检查作物生长阶段
|
|
|
- if ($crop->growth_stage !== GROWTH_STAGE::MATURE->value) {
|
|
|
+ if ($crop->growth_stage !== GROWTH_STAGE::MATURE) {
|
|
|
throw new \Exception('作物未成熟,不能收获');
|
|
|
}
|
|
|
|
|
|
@@ -244,7 +246,7 @@ class CropLogic
|
|
|
$land->save();
|
|
|
|
|
|
// 提交事务
|
|
|
- DB::commit();
|
|
|
+
|
|
|
|
|
|
// 触发作物收获事件
|
|
|
event(new CropHarvestedEvent($userId, $land, $crop, $harvestLog, $outputItemId, $outputAmount));
|
|
|
@@ -259,10 +261,11 @@ class CropLogic
|
|
|
'harvest_log_id' => $harvestLog->id
|
|
|
]);
|
|
|
|
|
|
- return HarvestResultDto::fromModel($harvestLog, $outputItemId);
|
|
|
+
|
|
|
+ return Res::success();
|
|
|
} catch (\Exception $e) {
|
|
|
// 回滚事务
|
|
|
- DB::rollBack();
|
|
|
+
|
|
|
|
|
|
Log::error('作物收获失败', [
|
|
|
'user_id' => $userId,
|
|
|
@@ -271,7 +274,7 @@ class CropLogic
|
|
|
'trace' => $e->getTraceAsString()
|
|
|
]);
|
|
|
|
|
|
- return null;
|
|
|
+ return Res::error('');
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -585,7 +588,7 @@ class CropLogic
|
|
|
$crop->save();
|
|
|
|
|
|
// 触发生长阶段变更事件
|
|
|
- event(new CropGrowthStageChangedEvent($crop->user_id, $crop, $oldStage->value, $newStage->value));
|
|
|
+ event(new CropGrowthStageChangedEvent($crop->user_id, $crop, $oldStage->value, $newStage));
|
|
|
|
|
|
Log::info('作物生长阶段更新成功', [
|
|
|
'crop_id' => $cropId,
|
|
|
@@ -633,8 +636,16 @@ class CropLogic
|
|
|
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;
|
|
|
}
|
|
|
|
|
|
/**
|