Browse Source

果实统计图表加入后台菜单

- 在游戏运营管理 -> 游戏物品管理下添加'果实统计图表'菜单项
- 菜单ID: 599,位于'物品统计图表'之后(order: 81)
- 菜单图标: fa-line-chart
- 菜单URI: game-items-fruits-metrics
- 自动调整其他菜单项的排序,避免冲突

菜单配置:
- 父菜单: 游戏物品管理 (ID: 423)
- 排序位置: 在物品统计图表(80)和宝箱开启记录(82)之间
- 功能: 提供果实持有排名和每日产出趋势分析

测试验证:
- ✅ 菜单在后台正确显示
- ✅ 点击菜单正常跳转到图表页面
- ✅ 图表功能完全正常工作
- ✅ 页面标题和URL正确
AI Assistant 6 months ago
parent
commit
fb549d72bf
1 changed files with 147 additions and 0 deletions
  1. 147 0
      AiWork/202506/221736-物品模块增加果实图表功能.md

+ 147 - 0
AiWork/202506/221736-物品模块增加果实图表功能.md

@@ -0,0 +1,147 @@
+# 物品模块增加果实图表功能
+
+**创建时间**: 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