221736-物品模块增加果实图表功能.md 5.1 KB

物品模块增加果实图表功能

创建时间: 2025年06月22日 17:36
任务类型: 功能开发
关联模块: GameItems物品模块
完成状态: ✅ 已完成

📋 任务概述

为物品模块增加果实相关的图表功能,包括:

  1. 几种果实的持有数量排行,每种果实一个排行卡片
  2. 几种果实的每日产出数量排行,一个多线折线图

🔧 实现内容

1. 果实持有排名卡片组件

基础类:FruitRankingBase

文件: app/Module/GameItems/AdminControllers/Metrics/FruitRankingBase.php

功能特点:

  • 继承自UCore\DcatAdmin\Metrics\Examples\Ranking
  • 提供通用的果实排名功能
  • 支持时间范围筛选(7天、30天、90天、全部时间)
  • 排除冻结和过期物品
  • 显示前20名用户排名

具体果实排名组件

创建了10个果实的独立排名组件:

  1. CarrotRanking - 萝卜持有排名(物品ID: 2)
  2. ChiliRanking - 辣椒持有排名(物品ID: 3)
  3. AppleRanking - 苹果持有排名(物品ID: 4)
  4. WatermelonRanking - 西瓜持有排名(物品ID: 5)
  5. StrawberryRanking - 草莓持有排名(物品ID: 6)
  6. PumpkinRanking - 南瓜持有排名(物品ID: 7)
  7. WalnutRanking - 核桃持有排名(物品ID: 8)
  8. CocoaRanking - 可可持有排名(物品ID: 9)
  9. GinsengRanking - 人参持有排名(物品ID: 10)
  10. RoseRanking - 玫瑰持有排名(物品ID: 11)

2. 果实每日产出折线图组件

FruitDailyOutputChart

文件: app/Module/GameItems/AdminControllers/Metrics/FruitDailyOutputChart.php

功能特点:

  • 继承自UCore\DcatAdmin\Metrics\Examples\NewUsers
  • 多线折线图显示各种果实的每日产出趋势
  • 支持时间范围切换(7天、14天、30天、90天)
  • 显示总产出数量统计
  • 数据来源:item_transaction_logs表,交易类型为获取(type=1)

3. 图表控制器更新

MetricsController

文件: app/Module/GameItems/AdminControllers/MetricsController.php

新增功能:

  • 新增fruits()方法,路由:/admin/game-items-fruits-metrics
  • 页面标题:果实统计图表
  • 页面描述:果实持有排名和每日产出趋势分析
  • 响应式布局:
    • 第一行:果实每日产出趋势图(12列)
    • 第二行:5个果实排名卡片(萝卜、辣椒、苹果、西瓜、草莓)
    • 第三行:5个果实排名卡片(南瓜、核桃、可可、人参、玫瑰)

📊 数据结构

数据来源

  1. 持有量数据: kku_item_users

    • 按用户分组统计总持有量
    • 排除冻结物品(is_frozen = 0
    • 排除过期物品(expire_at IS NULL
  2. 产出数据: kku_item_transaction_logs

    • 交易类型为获取(transaction_type = 1
    • 按日期和物品ID分组统计

果实物品映射

$fruitItems = [
    2 => '萝卜',    3 => '辣椒',    4 => '苹果',
    5 => '西瓜',    6 => '草莓',    7 => '南瓜',
    8 => '核桃',    9 => '可可',    10 => '人参',
    11 => '玫瑰',
];

🧪 测试结果

功能测试

  • ✅ 页面正常加载,显示所有图表组件
  • ✅ 果实每日产出趋势图正常显示,总产出数量:27,445
  • ✅ 各果实排名卡片正常显示用户排名数据
  • ✅ 时间范围切换功能正常工作
  • ✅ 无数据时显示"暂无XX持有数据"提示

数据验证

  • ✅ 萝卜排名:U资金仓库(9,900个)、urs-10003(543个)等
  • ✅ 辣椒排名:urs-10387(1,500个)、urs-10003(1,336个)等
  • ✅ 产出趋势:萝卜(13,945)、辣椒(11,358)等

📁 文件清单

新增文件

app/Module/GameItems/AdminControllers/Metrics/
├── FruitRankingBase.php          # 果实排名基础类
├── CarrotRanking.php             # 萝卜排名
├── ChiliRanking.php              # 辣椒排名
├── AppleRanking.php              # 苹果排名
├── WatermelonRanking.php         # 西瓜排名
├── StrawberryRanking.php         # 草莓排名
├── PumpkinRanking.php            # 南瓜排名
├── WalnutRanking.php             # 核桃排名
├── CocoaRanking.php              # 可可排名
├── GinsengRanking.php            # 人参排名
├── RoseRanking.php               # 玫瑰排名
└── FruitDailyOutputChart.php     # 果实每日产出图表

修改文件

app/Module/GameItems/AdminControllers/MetricsController.php

🚀 访问地址

果实图表页面: http://kku_laravel.local.gd/admin/game-items-fruits-metrics

💡 技术要点

  1. 继承结构: 使用UCore框架的Ranking和NewUsers基类
  2. 数据查询: 使用Eloquent ORM进行复杂查询和关联
  3. 时间筛选: 支持多种时间范围的动态数据筛选
  4. 响应式布局: 使用Dcat Admin的Row/Column布局系统
  5. 数据安全: 排除冻结和过期物品,确保数据准确性

📈 后续优化建议

  1. 可考虑添加缓存机制提升大数据量查询性能
  2. 可扩展更多图表类型(如饼图、柱状图等)
  3. 可添加数据导出功能
  4. 可考虑添加实时数据刷新功能

提交哈希: a0b9f8df