在农场用户信息汇总的宠物生活技能情况中增加显示最近10次的技能使用记录
在之前的实现中,农场用户信息汇总页面已经展示了宠物生活技能的激活状态和配置信息。但是管理员还需要了解用户的技能使用历史,特别是:
技能使用记录存储在kku_pet_skill_logs表中,包含:
pet_id: 宠物IDskill_id: 技能IDused_at: 使用时间effect_result: 技能效果结果(JSON格式)PetSkillLog -> PetUser: 宠物信息PetSkillLog -> PetSkill: 技能配置信息// 获取最近10次技能使用记录
$recentLogs = PetSkillLog::with(['pet', 'skill'])
->whereIn('pet_id', $petIds)
->orderBy('used_at', 'desc')
->limit(10)
->get();
| 列名 | 说明 | 示例 |
|---|---|---|
| 使用时间 | 技能使用的具体时间 | 2024-12-30 18:25:30 |
| 宠物名称 | 使用技能的宠物名称 | 小白 |
| 技能名称 | 技能类型 | 自动收菜 |
| 体力消耗 | 消耗的体力值 | 10 |
| 技能效果 | 技能效果详情 | 类型: auto_harvest 持续: 2.0小时 结束: 20:25 |
| 状态 | 执行状态 | [成功] / [失败] / [异常] |
app/Module/Game/AdminControllers/FarmUserSummaryController.php
use App\Module\Pet\Models\PetSkillLog;
在现有内容后添加技能使用记录:
// 添加最近10次技能使用记录
$content .= $this->getRecentSkillUsageSection($petIds);
protected function getRecentSkillUsageSection(array $petIds): string
{
// 查询最近10次技能使用记录
$recentLogs = PetSkillLog::with(['pet', 'skill'])
->whereIn('pet_id', $petIds)
->orderBy('used_at', 'desc')
->limit(10)
->get();
// 处理数据并生成表格
// ...
}
// 解析技能效果结果
$effectData = json_decode($log->effect_result, true);
if (is_array($effectData)) {
$effectItems = [];
// 根据技能类型显示不同的效果信息
if (isset($effectData['skill_type'])) {
$effectItems[] = "类型: {$effectData['skill_type']}";
}
if (isset($effectData['duration'])) {
$hours = round($effectData['duration'] / 3600, 1);
$effectItems[] = "持续: {$hours}小时";
}
if (isset($effectData['end_time'])) {
$endTime = date('H:i', strtotime($effectData['end_time']));
$effectItems[] = "结束: {$endTime}";
}
$effectResult = implode('<br>', $effectItems);
}
// 检查是否有错误
if (isset($effectData['success']) && $effectData['success'] === false) {
$status = '<span class="badge badge-danger">失败</span>';
if (isset($effectData['message'])) {
$effectItems = [$effectData['message']];
}
} else {
$status = '<span class="badge badge-success">成功</span>';
}
try {
// 数据处理逻辑
} catch (\Exception $e) {
$effectResult = '数据解析错误';
$status = '<span class="badge badge-warning">异常</span>';
}
// 即使没有激活技能,也显示历史使用记录
if ($activeSkills->isEmpty()) {
$content = $statsHtml . '<div class="alert alert-info">该用户的宠物还没有使用过生活技能</div>';
$content .= $this->getRecentSkillUsageSection($petIds);
return new Card('宠物生活技能情况', $content);
}
最近技能使用记录 (最近10次)
| 使用时间 | 宠物名称 | 技能名称 | 体力消耗 | 技能效果 | 状态 |
|----------|----------|----------|----------|----------|------|
| 2024-12-30 18:25:30 | 小白 | 自动收菜 | 10 | 类型: auto_harvest<br>持续: 2.0小时<br>结束: 20:25 | [成功] |
| 2024-12-30 16:15:20 | 小黑 | 自动播种 | 15 | 类型: auto_plant<br>持续: 4.0小时<br>结束: 20:15 | [成功] |
| 2024-12-30 14:30:10 | 小白 | 灾害防护 | 20 | 宠物体力不足,无法使用技能 | [失败] |
最近技能使用记录
暂无技能使用记录
✅ 已完成
app/Module/Game/AdminControllers/FarmUserSummaryController.php - 主要修改文件app/Module/Pet/Models/PetSkillLog.php - 技能使用记录模型app/Module/Pet/Models/PetUser.php - 宠物模型app/Module/Pet/Models/PetSkill.php - 技能配置模型