|
@@ -39,28 +39,17 @@ class CropGrowthStageChangedListener
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 创建土地状态变更事件数据
|
|
|
|
|
- $landStatusData = [
|
|
|
|
|
- 'land_id' => $land->id,
|
|
|
|
|
- 'position' => $land->position,
|
|
|
|
|
- 'land_type' => $land->land_type,
|
|
|
|
|
- 'old_status' => $land->status, // 使用当前状态作为旧状态
|
|
|
|
|
- 'new_status' => $land->status, // 使用当前状态作为新状态,因为我们只是想通知前端作物状态已更新
|
|
|
|
|
- 'crop_id' => $event->crop->id,
|
|
|
|
|
- 'updated_at' => time(),
|
|
|
|
|
- ];
|
|
|
|
|
-
|
|
|
|
|
- // 构建临时数据键,按用户ID进行存储
|
|
|
|
|
- $tempKey = LandTemp::TEMP_KEY_STATUS_PREFIX . $event->userId;
|
|
|
|
|
-
|
|
|
|
|
- // 获取当前用户的土地状态变更临时数据
|
|
|
|
|
- $userLandsStatusTemp = \UCore\Helper\Cache::get($tempKey, []);
|
|
|
|
|
-
|
|
|
|
|
- // 将新的土地状态变更数据添加到临时数据中
|
|
|
|
|
- $userLandsStatusTemp[$land->id] = \App\Module\Game\Dtos\LandStatusTempDto::fromArray($landStatusData);
|
|
|
|
|
|
|
+ // 使用LandTemp的统一存储方法来存储土地状态变更
|
|
|
|
|
+ // 创建LandStatusChangedEvent并让LandTemp处理
|
|
|
|
|
+ $landStatusChangedEvent = new \App\Module\Farm\Events\LandStatusChangedEvent(
|
|
|
|
|
+ $event->userId,
|
|
|
|
|
+ $land->id,
|
|
|
|
|
+ $land->status, // 旧状态
|
|
|
|
|
+ $land->status // 新状态(作物状态变更不改变土地状态,但需要通知前端)
|
|
|
|
|
+ );
|
|
|
|
|
|
|
|
- // 将更新后的临时数据存回缓存
|
|
|
|
|
- \UCore\Helper\Cache::put($tempKey, $userLandsStatusTemp, LandTemp::TEMP_TTL);
|
|
|
|
|
|
|
+ // 使用LandTemp的统一处理方法
|
|
|
|
|
+ LandTemp::handleLandStatusChanged($landStatusChangedEvent);
|
|
|
|
|
|
|
|
Log::info('作物生长阶段变更事件处理成功,土地状态变更数据已存储', [
|
|
Log::info('作物生长阶段变更事件处理成功,土地状态变更数据已存储', [
|
|
|
'user_id' => $event->userId,
|
|
'user_id' => $event->userId,
|