221626-URS推广模块图表控制器创建完成.md 5.9 KB

URS推广模块图表控制器创建完成

创建时间: 2025年06月22日 16:26
任务类型: 功能开发
关联模块: URS推广模块
完成状态: ✅ 已完成

📋 任务概述

为URS推广模块新增图表控制器,参考app/Module/Admin/AdminControllers/MetricsController.php的实现方式,提供以下图表功能:

  1. 新用户折线图 - 显示每日新用户数量趋势
  2. 活跃用户数字卡片 - 显示当前活跃用户数量
  3. 推广用户排名 - 显示直推、间推、三推、团队推广用户数量排名

🔧 实现内容

1. 主控制器创建

UrsPromotionMetricsController

文件: app/Module/UrsPromotion/AdminControllers/UrsPromotionMetricsController.php

功能特点:

  • 继承自UCore\DcatAdmin\AdminController
  • 使用路由注解#[Get('urs-promotion/metrics')]
  • 采用6:6分栏布局,左侧显示趋势图表,右侧显示排名数据
  • 页面标题:URS推广数据统计
  • 页面描述:URS推广模块数据统计图表

2. 图表组件创建

2.1 新用户折线图组件

文件: app/Module/UrsPromotion/AdminControllers/Metrics/UrsNewUsersChart.php

功能特点:

  • 继承自Dcat\Admin\Widgets\Metrics\Line
  • 支持多时间段查询:7天、14天、28天、90天
  • 统计URS用户映射表中的新用户数据
  • 显示每日新用户数量趋势
  • 卡片内容显示总用户数,图表显示每日数量

数据来源:

  • 表:urs_promotion_user_mappings
  • 条件:status = 1(有效状态)
  • 统计字段:created_at按日期分组统计

2.2 活跃用户数字卡片组件

文件: app/Module/UrsPromotion/AdminControllers/Metrics/UrsActiveUsersCard.php

功能特点:

  • 继承自Dcat\Admin\Widgets\Metrics\Card
  • 显示当前活跃用户总数
  • 简洁的数字卡片样式
  • 包含说明文字"当前活跃用户数"

数据来源:

  • 表:urs_promotion_user_mappings
  • 条件:status = 1 AND is_active = 1

2.3 推广用户排名组件

文件: app/Module/UrsPromotion/AdminControllers/Metrics/UrsPromotionRankingCard.php

功能特点:

  • 继承自Dcat\Admin\Widgets\Metrics\Card
  • 四个排行榜:直推、间推、三推、团队总数
  • 每个排行榜显示前10名用户
  • 2x2网格布局显示四个排行榜
  • 排名使用徽章样式,前3名使用金色徽章

数据来源:

  • 表:urs_promotion_user_mappings LEFT JOIN users
  • 排序字段:direct_countindirect_countthird_countpromotion_count
  • 显示信息:排名、用户昵称、推广数量

3. 后台菜单配置

菜单添加

  • 菜单名称:URS推广数据统计
  • 菜单图标:fa-chart-line
  • 菜单路由:urs-promotion/metrics
  • 父菜单:URS推广管理(ID: 569)
  • 菜单顺序:193

SQL执行:

INSERT INTO kku_admin_menu (parent_id, `order`, title, icon, uri, `show`, created_at, updated_at) 
VALUES (569, 193, 'URS推广数据统计', 'fa-chart-line', 'urs-promotion/metrics', 1, NOW(), NOW());

🔍 技术细节

路由配置问题解决

问题: 初始路由注解使用admin/urs-promotion/metrics导致最终路由变成admin/admin/urs-promotion/metrics

原因: 配置文件中已设置admin前缀,路由注解中不应再包含admin

解决: 修改路由注解为urs-promotion/metrics

图表框架使用

  • 基于UCore图表框架和Dcat Admin Widgets
  • 折线图:Dcat\Admin\Widgets\Metrics\Line
  • 数字卡片:Dcat\Admin\Widgets\Metrics\Card
  • 支持时间范围选择的下拉菜单
  • 响应式布局和美观的样式

数据查询优化

  • 使用LEFT JOIN关联用户表获取昵称
  • 添加适当的WHERE条件过滤有效数据
  • 使用ORDER BY和LIMIT优化排名查询
  • 日期范围查询使用Carbon处理时间

✅ 功能验证

1. 页面访问测试

  • ✅ 路由正确注册:admin/urs-promotion/metrics
  • ✅ 页面正常访问,无404错误
  • ✅ 菜单导航正常工作
  • ✅ 面包屑导航正确显示

2. 图表显示测试

  • ✅ 新用户折线图正常显示,支持时间范围切换
  • ✅ 活跃用户数字卡片正常显示数量
  • ✅ 推广排名四个排行榜正常显示
  • ✅ 页面布局美观,响应式设计

3. 数据准确性测试

  • ✅ 新用户统计数据与数据库一致
  • ✅ 活跃用户数量统计正确
  • ✅ 推广排名数据准确,排序正确

📁 文件清单

新增文件

  • app/Module/UrsPromotion/AdminControllers/UrsPromotionMetricsController.php - 主控制器
  • app/Module/UrsPromotion/AdminControllers/Metrics/UrsNewUsersChart.php - 新用户折线图
  • app/Module/UrsPromotion/AdminControllers/Metrics/UrsActiveUsersCard.php - 活跃用户卡片
  • app/Module/UrsPromotion/AdminControllers/Metrics/UrsPromotionRankingCard.php - 推广排名卡片

数据库修改

  • kku_admin_menu表中添加新菜单项

🎯 使用说明

1. 访问路径

  • 后台菜单: URS推广管理 → URS推广数据统计
  • 直接访问: /admin/urs-promotion/metrics

2. 功能操作

  • 时间范围选择: 点击新用户折线图的下拉菜单选择不同时间范围
  • 数据刷新: 页面会自动加载最新数据
  • 排名查看: 查看四个维度的推广用户排行榜

3. 数据说明

  • 新用户: 基于URS用户映射表的创建时间统计
  • 活跃用户: 状态为有效且活跃标记为是的用户
  • 推广排名: 基于直推、间推、三推、团队总数的排名

🚀 后续优化建议

  1. 缓存优化: 对统计数据添加缓存机制,提高页面加载速度
  2. 实时更新: 考虑添加定时刷新功能
  3. 导出功能: 添加数据导出为Excel的功能
  4. 更多维度: 增加更多统计维度,如收益统计、地区分布等
  5. 图表交互: 添加图表点击事件,支持钻取查看详细数据

备注: 本功能基于UCore图表框架实现,与现有后台管理系统完美集成,为URS推广模块提供了完整的数据统计和可视化功能。