|
|
@@ -115,40 +115,70 @@ class AppGameProtobufResponseListener
|
|
|
// 宠物详细数据 end
|
|
|
|
|
|
// 土地变更数据 start
|
|
|
- $landChanges = LandTemp::getUserLandChanges($user_id);
|
|
|
- $landStatusChanges = LandTemp::getUserLandStatusChanges($user_id);
|
|
|
-
|
|
|
- // 合并两种土地变更数据
|
|
|
- $allLandChanges = array_merge($landChanges, $landStatusChanges);
|
|
|
-
|
|
|
- $landLs = [];
|
|
|
- foreach ($allLandChanges as $land) {
|
|
|
- $l = new \Uraus\Kku\Common\DataLand();
|
|
|
- $l->setId($land->landId);
|
|
|
- $l->setIndex($land->position);
|
|
|
-
|
|
|
- // 设置土地类型/等级
|
|
|
- if (isset($land->newType)) {
|
|
|
- $l->setLevel($land->newType); // 使用土地类型作为等级
|
|
|
- } elseif (isset($land->landType)) {
|
|
|
- $l->setLevel($land->landType);
|
|
|
- }
|
|
|
-
|
|
|
- // 设置土地状态
|
|
|
- if (isset($land->newStatus)) {
|
|
|
- $l->setStatus($land->newStatus);
|
|
|
- }
|
|
|
-
|
|
|
- // 如果有种子ID,设置种子ID
|
|
|
- if (isset($land->seedId) && $land->seedId) {
|
|
|
- $l->setSeedId($land->seedId);
|
|
|
+ try {
|
|
|
+ $landChanges = LandTemp::getUserLandChanges($user_id);
|
|
|
+ $landStatusChanges = LandTemp::getUserLandStatusChanges($user_id);
|
|
|
+
|
|
|
+ // 合并两种土地变更数据,获取所有变更的土地ID
|
|
|
+ $allLandChanges = array_merge($landChanges, $landStatusChanges);
|
|
|
+ $changedLandIds = array_keys($allLandChanges);
|
|
|
+
|
|
|
+ if (!empty($changedLandIds)) {
|
|
|
+ Log::info('处理土地变更数据', [
|
|
|
+ 'user_id' => $user_id,
|
|
|
+ 'changed_land_ids' => $changedLandIds,
|
|
|
+ 'land_changes_count' => count($landChanges),
|
|
|
+ 'status_changes_count' => count($landStatusChanges)
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $landLs = [];
|
|
|
+ foreach ($changedLandIds as $landId) {
|
|
|
+ try {
|
|
|
+ // 通过土地ID获取最新的土地信息(包含完整的作物信息)
|
|
|
+ $landInfoDto = \App\Module\Farm\Services\LandService::getUserLand($user_id, $landId);
|
|
|
+
|
|
|
+ if ($landInfoDto) {
|
|
|
+ // 使用Farm模块的转换方法将LandInfoDto转换为DataLand
|
|
|
+ $dataLand = \App\Module\AppGame\Proto\LandInfoDto::toDataLand($landInfoDto);
|
|
|
+ $landLs[] = $dataLand;
|
|
|
+
|
|
|
+ Log::debug('土地数据转换成功', [
|
|
|
+ 'user_id' => $user_id,
|
|
|
+ 'land_id' => $landId,
|
|
|
+ 'position' => $landInfoDto->position,
|
|
|
+ 'land_type' => $landInfoDto->landType,
|
|
|
+ 'status' => $landInfoDto->status,
|
|
|
+ 'has_crop' => !is_null($landInfoDto->crop)
|
|
|
+ ]);
|
|
|
+ } else {
|
|
|
+ Log::warning('获取土地信息失败', [
|
|
|
+ 'user_id' => $user_id,
|
|
|
+ 'land_id' => $landId
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ Log::error('处理单个土地数据失败', [
|
|
|
+ 'user_id' => $user_id,
|
|
|
+ 'land_id' => $landId,
|
|
|
+ 'error' => $e->getMessage()
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($landLs) {
|
|
|
+ $lastData->setLands($landLs);
|
|
|
+ Log::info('土地变更数据设置完成', [
|
|
|
+ 'user_id' => $user_id,
|
|
|
+ 'lands_count' => count($landLs)
|
|
|
+ ]);
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
- $landLs[] = $l;
|
|
|
- }
|
|
|
-
|
|
|
- if ($landLs) {
|
|
|
- $lastData->setLands($landLs);
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ Log::error('处理土地变更数据失败', [
|
|
|
+ 'user_id' => $user_id,
|
|
|
+ 'error' => $e->getMessage(),
|
|
|
+ 'trace' => $e->getTraceAsString()
|
|
|
+ ]);
|
|
|
}
|
|
|
// 土地变更数据 end
|
|
|
|