30日1830-农场用户信息汇总增加技能使用记录.md 8.2 KB

农场用户信息汇总宠物生活技能情况增加最近10次使用记录

任务描述

在农场用户信息汇总的宠物生活技能情况中增加显示最近10次的技能使用记录

需求分析

背景

在之前的实现中,农场用户信息汇总页面已经展示了宠物生活技能的激活状态和配置信息。但是管理员还需要了解用户的技能使用历史,特别是:

  1. 使用频率:用户多久使用一次技能
  2. 使用效果:技能激活是否成功,持续时间等
  3. 问题排查:技能使用失败的原因和频率
  4. 用户行为:了解用户的游戏习惯和偏好

需要展示的信息

  1. 使用时间:技能使用的具体时间
  2. 宠物名称:使用技能的宠物
  3. 技能名称:使用的技能类型
  4. 体力消耗:技能消耗的体力值
  5. 技能效果:技能激活的效果和配置
  6. 状态:成功/失败/异常状态

实现方案

1. 数据源分析

PetSkillLog模型

技能使用记录存储在kku_pet_skill_logs表中,包含:

  • pet_id: 宠物ID
  • skill_id: 技能ID
  • used_at: 使用时间
  • effect_result: 技能效果结果(JSON格式)

关联关系

  • PetSkillLog -> PetUser: 宠物信息
  • PetSkillLog -> PetSkill: 技能配置信息

2. 功能设计

查询逻辑

// 获取最近10次技能使用记录
$recentLogs = PetSkillLog::with(['pet', 'skill'])
    ->whereIn('pet_id', $petIds)
    ->orderBy('used_at', 'desc')
    ->limit(10)
    ->get();

数据处理

  1. 基础信息提取:宠物名称、技能名称、使用时间
  2. 效果解析:解析JSON格式的技能效果数据
  3. 状态判断:根据效果数据判断成功/失败状态
  4. 异常处理:处理数据解析异常和缺失数据

3. 界面设计

表格结构

列名 说明 示例
使用时间 技能使用的具体时间 2024-12-30 18:25:30
宠物名称 使用技能的宠物名称 小白
技能名称 技能类型 自动收菜
体力消耗 消耗的体力值 10
技能效果 技能效果详情 类型: auto_harvest
持续: 2.0小时
结束: 20:25
状态 执行状态 [成功] / [失败] / [异常]

状态显示

  • 成功:绿色badge,技能正常激活
  • 失败:红色badge,技能激活失败
  • 异常:黄色badge,数据解析异常

修改内容

修改文件

app/Module/Game/AdminControllers/FarmUserSummaryController.php

具体修改

1. 添加模型导入

use App\Module\Pet\Models\PetSkillLog;

2. 修改petLifeSkillsCard方法

在现有内容后添加技能使用记录:

// 添加最近10次技能使用记录
$content .= $this->getRecentSkillUsageSection($petIds);

3. 实现getRecentSkillUsageSection方法

protected function getRecentSkillUsageSection(array $petIds): string
{
    // 查询最近10次技能使用记录
    $recentLogs = PetSkillLog::with(['pet', 'skill'])
        ->whereIn('pet_id', $petIds)
        ->orderBy('used_at', 'desc')
        ->limit(10)
        ->get();
    
    // 处理数据并生成表格
    // ...
}

关键功能实现

1. 效果数据解析

// 解析技能效果结果
$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);
}

2. 状态判断

// 检查是否有错误
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>';
}

3. 异常处理

try {
    // 数据处理逻辑
} catch (\Exception $e) {
    $effectResult = '数据解析错误';
    $status = '<span class="badge badge-warning">异常</span>';
}

4. 边界情况处理

// 即使没有激活技能,也显示历史使用记录
if ($activeSkills->isEmpty()) {
    $content = $statsHtml . '<div class="alert alert-info">该用户的宠物还没有使用过生活技能</div>';
    $content .= $this->getRecentSkillUsageSection($petIds);
    return new Card('宠物生活技能情况', $content);
}

功能特点

1. 全面的历史记录

  • 时间序列:按时间倒序显示最近10次使用记录
  • 详细信息:包含技能使用的完整上下文信息
  • 关联数据:通过关联查询获取宠物和技能的详细信息

2. 智能数据解析

  • JSON解析:智能解析技能效果的JSON数据
  • 类型识别:根据技能类型显示不同的效果信息
  • 时间格式化:友好的时间显示格式

3. 状态可视化

  • 颜色区分:使用不同颜色的badge区分状态
  • 状态分类:成功、失败、异常三种状态
  • 错误信息:显示具体的错误原因

4. 容错机制

  • 数据缺失处理:处理关联数据缺失的情况
  • 解析异常处理:处理JSON解析失败的情况
  • 显示降级:在异常情况下仍能显示基本信息

5. 用户体验优化

  • 分离展示:使用独立的区域展示历史记录
  • 清晰标题:明确标识为"最近技能使用记录"
  • 数量提示:显示"最近10次"的数量限制

展示效果

技能使用记录表格

最近技能使用记录 (最近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 | 宠物体力不足,无法使用技能 | [失败] |

无记录情况

最近技能使用记录
暂无技能使用记录

管理价值

1. 用户行为分析

  • 使用频率:了解用户对不同技能的使用频率
  • 使用时间:分析用户的活跃时间段
  • 技能偏好:了解用户最常使用的技能类型

2. 问题排查支持

  • 失败原因:快速定位技能使用失败的原因
  • 异常监控:发现系统异常和数据问题
  • 用户支持:为用户问题提供详细的历史数据

3. 系统监控

  • 功能使用率:监控各种技能的使用情况
  • 成功率统计:分析技能激活的成功率
  • 性能监控:发现可能的性能问题

4. 产品优化

  • 功能改进:基于使用数据优化技能设计
  • 用户体验:改进用户界面和交互流程
  • 平衡调整:调整技能的消耗和效果平衡

技术优势

1. 性能优化

  • 关联查询:使用Eloquent的with方法减少查询次数
  • 数量限制:只查询最近10次记录,控制数据量
  • 索引利用:利用时间索引提高查询效率

2. 数据安全

  • 异常处理:完善的异常处理机制
  • 数据验证:验证数据的完整性和有效性
  • 降级显示:在数据异常时仍能显示基本信息

3. 可维护性

  • 模块化设计:独立的方法便于维护和测试
  • 清晰逻辑:代码结构清晰,易于理解
  • 文档完善:详细的注释和文档

任务状态

✅ 已完成

相关文件

  • app/Module/Game/AdminControllers/FarmUserSummaryController.php - 主要修改文件
  • app/Module/Pet/Models/PetSkillLog.php - 技能使用记录模型
  • app/Module/Pet/Models/PetUser.php - 宠物模型
  • app/Module/Pet/Models/PetSkill.php - 技能配置模型