|
|
@@ -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
|