时间: 2025年06月20日 11:54
任务: 增加作物日志表,记录作物生长过程中的关键事件
根据用户需求,增加了一个作物日志表来记录作物生长过程中的各种关键事件:
kku_farm_crop_logsCREATE TABLE `kku_farm_crop_logs` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`user_id` bigint unsigned NOT NULL COMMENT '用户ID',
`land_id` bigint unsigned NOT NULL COMMENT '土地ID',
`crop_id` bigint unsigned NOT NULL COMMENT '作物ID',
`seed_id` bigint unsigned NOT NULL COMMENT '种子ID',
`event_type` varchar(50) NOT NULL COMMENT '事件类型',
`event_data` json DEFAULT NULL COMMENT '事件详细数据',
`growth_stage` tinyint unsigned NOT NULL COMMENT '发生时的生长阶段',
`land_type` tinyint unsigned NOT NULL COMMENT '土地类型',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '事件发生时间',
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_crop_id` (`crop_id`),
KEY `idx_event_type` (`event_type`),
KEY `idx_created_at` (`created_at`),
KEY `idx_user_crop` (`user_id`, `crop_id`),
CONSTRAINT `farm_crop_logs_crop_id_foreign` FOREIGN KEY (`crop_id`) REFERENCES `kku_farm_crops` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='作物事件日志表';
| 事件类型 | 常量 | 描述 |
|---|---|---|
fruit_confirmed |
EVENT_FRUIT_CONFIRMED |
确认果实种类 |
output_calculated |
EVENT_OUTPUT_CALCULATED |
确认产出数量 |
disaster_occurred |
EVENT_DISASTER_OCCURRED |
灾害产生 |
disaster_cleared |
EVENT_DISASTER_CLEARED |
灾害清除 |
harvested |
EVENT_HARVESTED |
收获 |
FarmCropLog)文件: app/Module/Farm/Models/FarmCropLog.php
核心功能:
静态记录方法:
FarmCropLog::logFruitConfirmed($userId, $landId, $cropId, $seedId, $eventData);
FarmCropLog::logOutputCalculated($userId, $landId, $cropId, $seedId, $eventData);
FarmCropLog::logDisasterOccurred($userId, $landId, $cropId, $seedId, $eventData);
FarmCropLog::logDisasterCleared($userId, $landId, $cropId, $seedId, $eventData);
FarmCropLog::logHarvested($userId, $landId, $cropId, $seedId, $eventData);
控制器: app/Module/Farm/AdminControllers/FarmCropLogController.php
仓库: app/Module/Farm/Repositories/FarmCropLogRepository.php
功能特性:
集成位置:
CropLogic::updateGrowthStage() - 确认果实种类事件CropLogic::calculateMatureOutput() - 确认产出数量事件CropLogic::harvestCrop() - 收获事件CropLogic::clearDisaster() - 灾害清除事件DisasterLogic::applyDisastersToCrop() - 灾害产生事件{
"final_output_item_id": 2,
"growth_stage": 2,
"land_type": 1,
"is_mystery_seed": true,
"selected_output": {...},
"land_effect_applied": true
}
{
"base_amount": 50,
"final_amount": 75,
"land_bonus": 10,
"house_bonus": 15,
"has_disaster": false,
"disaster_max_amount": 2000,
"global_max_output": 3000,
"final_output_item_id": 2
}
{
"disaster_type": "drought",
"disaster_info": {
"type": "drought",
"severity": "medium",
"duration": 3600,
"generated_ts": 1750390798
},
"growth_stage": 3,
"land_type": 1,
"old_land_status": 1,
"new_land_status": 2
}
{
"disaster_type": "drought",
"disaster_info": {...},
"growth_stage": 3,
"land_type": 1,
"has_other_active_disasters": false,
"old_land_status": 2,
"new_land_status": 1,
"cleared_at": "2025-06-20 11:39:58"
}
{
"item_id": 2,
"amount": 75,
"harvest_log_id": 1,
"growth_stage": 4,
"land_type": 1,
"old_stage": 4,
"new_stage": 5,
"land_status_before": 1,
"land_status_after": 3
}
/admin/farm-crop-logsapp/Module/Farm/Models/FarmCropLog.php - 作物日志模型app/Module/Farm/AdminControllers/FarmCropLogController.php - 后台控制器app/Module/Farm/Repositories/FarmCropLogRepository.php - 数据仓库app/Module/Farm/Databases/GenerateSql/farm_crop_logs.sql - SQL文件app/Module/Farm/Logics/CropLogic.php - 集成日志记录app/Module/Farm/Logics/DisasterLogic.php - 集成灾害日志任务状态: ✅ 已完成
作物日志系统已成功实施,为农场游戏提供了完整的作物事件追踪能力,便于运营分析和问题排查。