# 物品模块增加果实图表功能 **创建时间**: 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分组统计 ### 果实物品映射 ```php $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