|
|
@@ -40,6 +40,7 @@ class FarmCropLog extends ModelCore
|
|
|
const EVENT_PESTICIDE_USED = 'pesticide_used'; // 使用杀虫剂
|
|
|
const EVENT_WEEDICIDE_USED = 'weedicide_used'; // 使用除草剂
|
|
|
const EVENT_WATERING = 'watering'; // 浇水
|
|
|
+ const EVENT_REMOVED = 'removed'; // 铲除作物
|
|
|
|
|
|
protected $fillable = [
|
|
|
'user_id',
|
|
|
@@ -105,6 +106,7 @@ class FarmCropLog extends ModelCore
|
|
|
self::EVENT_PESTICIDE_USED => '使用杀虫剂',
|
|
|
self::EVENT_WEEDICIDE_USED => '使用除草剂',
|
|
|
self::EVENT_WATERING => '浇水',
|
|
|
+ self::EVENT_REMOVED => '铲除作物',
|
|
|
default => '未知事件'
|
|
|
};
|
|
|
}
|
|
|
@@ -309,6 +311,7 @@ class FarmCropLog extends ModelCore
|
|
|
self::EVENT_PESTICIDE_USED => $this->parsePesticideUsedData($data),
|
|
|
self::EVENT_WEEDICIDE_USED => $this->parseWeedicideUsedData($data),
|
|
|
self::EVENT_WATERING => $this->parseWateringData($data),
|
|
|
+ self::EVENT_REMOVED => $this->parseRemovedData($data),
|
|
|
default => '未知事件类型'
|
|
|
};
|
|
|
}
|
|
|
@@ -657,6 +660,7 @@ class FarmCropLog extends ModelCore
|
|
|
self::EVENT_PESTICIDE_USED => self::parsePesticideUsedSummary($data),
|
|
|
self::EVENT_WEEDICIDE_USED => self::parseWeedicideUsedSummary($data),
|
|
|
self::EVENT_WATERING => self::parseWateringSummary($data),
|
|
|
+ self::EVENT_REMOVED => self::parseRemovedSummary($data),
|
|
|
default => '未知事件类型'
|
|
|
};
|
|
|
}
|
|
|
@@ -684,6 +688,7 @@ class FarmCropLog extends ModelCore
|
|
|
self::EVENT_PESTICIDE_USED => self::parsePesticideUsedDetail($data),
|
|
|
self::EVENT_WEEDICIDE_USED => self::parseWeedicideUsedDetail($data),
|
|
|
self::EVENT_WATERING => self::parseWateringDetail($data),
|
|
|
+ self::EVENT_REMOVED => self::parseRemovedDetail($data),
|
|
|
default => '<pre>' . json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . '</pre>'
|
|
|
};
|
|
|
}
|
|
|
@@ -766,6 +771,15 @@ class FarmCropLog extends ModelCore
|
|
|
return "浇水物品ID: {$itemId}, 成功率: {$successRate}%";
|
|
|
}
|
|
|
|
|
|
+ private static function parseRemovedSummary(array $data): string
|
|
|
+ {
|
|
|
+ $toolItemId = $data['tool_item_id'] ?? 0;
|
|
|
+ $removedAt = $data['removed_at'] ?? '未知时间';
|
|
|
+ $toolText = $toolItemId > 0 ? "使用工具ID: {$toolItemId}" : "手动铲除";
|
|
|
+
|
|
|
+ return "{$toolText}, 铲除时间: {$removedAt}";
|
|
|
+ }
|
|
|
+
|
|
|
// 静态解析方法 - 详情版本
|
|
|
private static function parseFruitConfirmedDetail(array $data): string
|
|
|
{
|
|
|
@@ -929,4 +943,50 @@ class FarmCropLog extends ModelCore
|
|
|
|
|
|
return implode('<br>', $details);
|
|
|
}
|
|
|
+
|
|
|
+ private static function parseRemovedDetail(array $data): string
|
|
|
+ {
|
|
|
+ $details = [];
|
|
|
+ $details[] = '<strong>铲除作物事件详情:</strong>';
|
|
|
+ $details[] = '• 生长阶段: ' . GROWTH_STAGE::getName($data['growth_stage'] ?? 0);
|
|
|
+ $details[] = '• 土地类型: ' . ($data['land_type'] ?? '未知');
|
|
|
+ $details[] = '• 使用工具ID: ' . ($data['tool_item_id'] ?? 0);
|
|
|
+ $details[] = '• 铲除时间: ' . ($data['removed_at'] ?? '未知');
|
|
|
+ $details[] = '• 是否软删除: ' . (($data['soft_deleted'] ?? true) ? '是' : '否');
|
|
|
+
|
|
|
+ if (isset($data['old_land_status']) && isset($data['new_land_status'])) {
|
|
|
+ $details[] = '• 土地状态变化: ' . $data['old_land_status'] . ' → ' . $data['new_land_status'];
|
|
|
+ }
|
|
|
+
|
|
|
+ if (isset($data['reason'])) {
|
|
|
+ $details[] = '• 铲除原因: ' . $data['reason'];
|
|
|
+ }
|
|
|
+
|
|
|
+ return implode('<br>', $details);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 解析铲除作物事件数据(摘要)
|
|
|
+ */
|
|
|
+ private function parseRemovedData(array $data): string
|
|
|
+ {
|
|
|
+ return self::parseRemovedSummary($data);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 静态方法:记录铲除作物事件
|
|
|
+ */
|
|
|
+ public static function logCropRemoved(int $userId, int $landId, int $cropId, int $seedId, array $eventData): self
|
|
|
+ {
|
|
|
+ return self::create([
|
|
|
+ 'user_id' => $userId,
|
|
|
+ 'land_id' => $landId,
|
|
|
+ 'crop_id' => $cropId,
|
|
|
+ 'seed_id' => $seedId,
|
|
|
+ 'event_type' => self::EVENT_REMOVED,
|
|
|
+ 'event_data' => $eventData,
|
|
|
+ 'growth_stage' => $eventData['growth_stage'] ?? GROWTH_STAGE::SPROUT->value,
|
|
|
+ 'land_type' => $eventData['land_type'] ?? 1,
|
|
|
+ ]);
|
|
|
+ }
|
|
|
}
|