为多租户电商平台后台开发数据概览统计面板,提供全面的销售数据监控和统计分析功能。面板支持时间筛选,展示总销售额、总订单数、微信支付与额度支付的分类统计,以及今日实时数据,帮助管理员快速了解业务状况。
当前后台系统缺乏集中的数据概览功能,管理员需要分别查看不同模块才能获取销售数据,无法快速了解整体业务状况。随着信用额度支付功能的引入,需要区分微信支付和额度支付的统计数据,以便更好地分析支付方式分布和业务健康度。
数据概览统计模块 (data-overview-module-mt)
数据概览UI模块 (data-overview-ui-mt)
数据集成和计算
作为 系统开发人员 我希望 实现数据概览统计服务 以便 为UI提供准确的统计数据
验收标准:
data_overview_service_mt服务类,提供统计查询方法作为 后台管理员 我希望 有一个直观的数据概览面板 以便 快速了解业务状况
验收标准:
作为 系统架构师 我希望 数据概览模块能正确统计订单数据 以便 确保统计数据的准确性
验收标准:
pay_type = 'WECHAT'的订单pay_type = 'CREDIT'的订单order_status为已支付状态)total_amount字段tenant_id筛选-- 总销售额和总订单数查询示例
SELECT
COUNT(*) as total_orders,
SUM(total_amount) as total_sales,
SUM(CASE WHEN pay_type = 'WECHAT' THEN total_amount ELSE 0 END) as wechat_sales,
SUM(CASE WHEN pay_type = 'CREDIT' THEN total_amount ELSE 0 END) as credit_sales,
COUNT(CASE WHEN pay_type = 'WECHAT' THEN 1 END) as wechat_orders,
COUNT(CASE WHEN pay_type = 'CREDIT' THEN 1 END) as credit_orders
FROM orders_mt
WHERE tenant_id = :tenantId
AND order_status IN ('PAID', 'COMPLETED') -- 已支付或已完成状态
AND created_at BETWEEN :startDate AND :endDate
AND deleted_at IS NULL;
packages/
├── @d8d/data-overview-module-mt/ # 数据概览统计模块
│ ├── src/
│ │ ├── services/ # 服务层
│ │ │ ├── data-overview.service.ts
│ │ │ └── index.ts
│ │ ├── schemas/ # 数据验证
│ │ │ ├── time-filter.schema.ts
│ │ │ └── index.ts
│ │ ├── routes/ # API路由
│ │ │ └── index.ts
│ │ ├── types/ # 类型定义
│ │ │ ├── data-overview.types.ts
│ │ │ └── index.ts
│ │ └── index.ts # 主入口文件
│ ├── tests/ # 测试文件
│ ├── tsconfig.json # TypeScript配置
│ ├── vitest.config.ts # 测试配置
│ └── package.json
└── @d8d/data-overview-ui-mt/ # 数据概览UI模块
├── src/
│ ├── api/ # API客户端
│ │ ├── index.ts
│ │ └── dataOverviewClient.ts
│ ├── components/ # 组件
│ │ ├── DataOverviewPanel.tsx
│ │ ├── TimeFilter.tsx
│ │ ├── StatCard.tsx
│ │ └── index.ts
│ ├── hooks/ # React hooks
│ │ ├── useDataOverview.ts
│ │ └── index.ts
│ ├── types/ # 类型定义
│ │ ├── index.ts
│ │ └── dataOverview.ts
│ └── index.ts # 主入口文件
├── tests/ # 测试文件
├── eslint.config.js # ESLint配置
├── tsconfig.json # TypeScript配置
├── vitest.config.ts # 测试配置
└── package.json
GET /api/data-overview/summary - 获取数据概览统计
startDate, endDate (ISO格式日期字符串)返回数据:
{
totalSales: number, // 总销售额
totalOrders: number, // 总订单数
wechatSales: number, // 微信支付总金额
wechatOrders: number, // 微信支付订单数
creditSales: number, // 额度支付总金额
creditOrders: number, // 额度支付订单数
todaySales: number, // 今日销售额
todayOrders: number, // 今日订单数
}
GET /api/data-overview/today - 获取今日实时数据(快速查询)
今日:当天00:00:00到23:59:59昨日:前一天00:00:00到23:59:59最近7天:当前时间往前推7天最近30天:当前时间往前推30天自定义时间范围:用户选择的任意时间范围total_amount总和order_status IN ('PAID', 'COMPLETED')order_status != 'CANCELLED'deleted_at IS NULLorders_mt表获取订单统计数据tenant_id实现数据隔离pay_type字段统计不同支付方式orders_mt表添加复合索引
(tenant_id, created_at) 用于时间范围查询(tenant_id, pay_type, created_at) 用于支付方式统计tenant_id条件功能指标:
性能指标:
业务指标:
创建时间:2025-12-26 负责人:产品经理 状态:待开始 优先级:中
-mt后缀和租户ID隔离