1064 lines
28 KiB
Markdown
1064 lines
28 KiB
Markdown
# 电商商城系统完整需求文档
|
||
|
||
## 1. 项目概述
|
||
|
||
## 📋 文档内容概览
|
||
|
||
### 🎯 核心特性
|
||
- **6个客户端应用**: 消费者端、商家端、配送端、管理端、客服端、数据分析端
|
||
- **完整功能模块**: 用户管理、商品管理、订单系统、配送系统等
|
||
- **优惠券系统**: 8种券类型、多种发放机制、完整使用流程
|
||
- **智能配送**: 配送员管理、智能调度、实时追踪、费用计算
|
||
|
||
### 🗄️ 数据库设计
|
||
- **15+核心数据表**: 涵盖用户、商家、商品、订单、配送、支付等
|
||
- **完整SQL建表语句**: 每个表都包含详细字段定义
|
||
- **关系设计**: 合理的外键关系和数据完整性约束
|
||
|
||
### 🛠️ 技术栈
|
||
- **前端**: uni-app-x + Pinia + 自定义组件库
|
||
- **后端**: Node.js + Fastify + Kafka
|
||
- **数据库**: PostgreSQL (Supabase)
|
||
- **实时通信**: Supabase Realtime
|
||
- **支付**: 微信支付/支付宝集成
|
||
|
||
### 🚀 实施计划
|
||
- **4个阶段**: 总计6.5个月开发周期
|
||
- **详细时间线**: 从基础平台到完整上线
|
||
- **风险评估**: 技术、业务、合规风险应对策略
|
||
|
||
### 📈 扩展规划
|
||
- **功能扩展**: 直播带货、积分商城、会员体系
|
||
- **技术升级**: 微服务架构、AI推荐、大数据分析
|
||
|
||
|
||
### 1.1 项目背景
|
||
|
||
构建一个完整的电商商城平台,支持多端应用,包含商品销售、订单管理、配送服务、优惠券营销等完整电商功能。
|
||
|
||
### 1.2 系统架构
|
||
|
||
- **技术栈**: uni-app-x + Supabase + Node.js + Fastify + Kafka
|
||
- **数据库**: PostgreSQL (Supabase)
|
||
- **消息队列**: Apache Kafka
|
||
- **实时通信**: Supabase Realtime
|
||
|
||
## 2. 客户端应用规划
|
||
|
||
### 2.1 消费者端 (Consumer App)
|
||
|
||
**目标用户**: 普通消费者
|
||
|
||
**主要功能**:
|
||
|
||
- 用户注册/登录/个人中心
|
||
- 商品浏览、搜索、筛选
|
||
- 购物车管理
|
||
- 订单下单、支付、追踪
|
||
- 优惠券领取和使用
|
||
- 收货地址管理
|
||
- 评价和反馈
|
||
- 客服咨询
|
||
|
||
### 2.2 商家端 (Merchant App)
|
||
|
||
**目标用户**: 入驻商家
|
||
|
||
**主要功能**:
|
||
|
||
- 商家注册审核
|
||
- 店铺装修和管理
|
||
- 商品上架、编辑、库存管理
|
||
- 订单处理和发货
|
||
- 营销活动创建
|
||
- 数据统计分析
|
||
- 客服管理
|
||
- 财务结算
|
||
|
||
### 2.3 配送端 (Delivery App)
|
||
|
||
**目标用户**: 配送员
|
||
|
||
**主要功能**:
|
||
|
||
- 配送员注册和认证
|
||
- 接单和路线规划
|
||
- 实时位置追踪
|
||
- 订单状态更新
|
||
- 配送完成确认
|
||
- 收入统计
|
||
- 评价管理
|
||
|
||
### 2.4 后台管理端 (Admin Panel)
|
||
|
||
**目标用户**: 平台管理员
|
||
|
||
**主要功能**:
|
||
|
||
- 用户管理 (消费者/商家/配送员)
|
||
- 商品审核和分类管理
|
||
- 订单监控和处理
|
||
- 优惠券系统管理
|
||
- 配送网络管理
|
||
- 数据统计和报表
|
||
- 财务管理
|
||
- 系统配置
|
||
|
||
### 2.5 客服端 (Customer Service App)
|
||
|
||
**目标用户**: 客服人员
|
||
|
||
**主要功能**:
|
||
|
||
- 多渠道客服工作台
|
||
- 实时聊天和消息处理
|
||
- 订单问题处理
|
||
- 退换货处理
|
||
- 投诉和纠纷处理
|
||
- 客户信息查询
|
||
- 服务质量统计
|
||
|
||
### 2.6 数据分析端 (Analytics Dashboard)
|
||
|
||
**目标用户**: 运营和分析师
|
||
|
||
**主要功能**:
|
||
|
||
- 实时数据大屏
|
||
- 销售数据分析
|
||
- 用户行为分析
|
||
- 商家表现分析
|
||
- 配送效率分析
|
||
- 优惠券效果分析
|
||
- 预测分析和建议
|
||
|
||
## 3. 核心功能模块
|
||
|
||
### 3.1 用户管理系统
|
||
|
||
```sql
|
||
-- 用户基础表
|
||
CREATE TABLE users (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
phone VARCHAR(20) UNIQUE NOT NULL,
|
||
email VARCHAR(255) UNIQUE,
|
||
password_hash VARCHAR(255) NOT NULL,
|
||
nickname VARCHAR(100),
|
||
avatar_url TEXT,
|
||
gender INTEGER DEFAULT 0,
|
||
birthday DATE,
|
||
user_type INTEGER NOT NULL DEFAULT 1,
|
||
status INTEGER DEFAULT 1,
|
||
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||
updated_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
|
||
-- 用户地址表
|
||
CREATE TABLE user_addresses (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
user_id UUID REFERENCES users(id),
|
||
name VARCHAR(100) NOT NULL,
|
||
phone VARCHAR(20) NOT NULL,
|
||
province VARCHAR(50) NOT NULL,
|
||
city VARCHAR(50) NOT NULL,
|
||
district VARCHAR(50) NOT NULL,
|
||
detail_address TEXT NOT NULL,
|
||
is_default BOOLEAN DEFAULT FALSE,
|
||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
```
|
||
|
||
### 3.2 商家管理系统
|
||
|
||
```sql
|
||
-- 商家信息表
|
||
CREATE TABLE merchants (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
user_id UUID REFERENCES users(id),
|
||
shop_name VARCHAR(200) NOT NULL,
|
||
shop_logo TEXT,
|
||
shop_banner TEXT,
|
||
shop_description TEXT,
|
||
business_license VARCHAR(100),
|
||
contact_name VARCHAR(100),
|
||
contact_phone VARCHAR(20),
|
||
business_hours JSONB,
|
||
shop_status INTEGER DEFAULT 1,
|
||
rating DECIMAL(3,2) DEFAULT 5.0,
|
||
total_sales INTEGER DEFAULT 0,
|
||
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||
updated_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
```
|
||
|
||
### 3.3 商品管理系统
|
||
|
||
```sql
|
||
-- 商品分类表
|
||
CREATE TABLE categories (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
name VARCHAR(100) NOT NULL,
|
||
parent_id UUID REFERENCES categories(id),
|
||
icon_url TEXT,
|
||
sort_order INTEGER DEFAULT 0,
|
||
is_active BOOLEAN DEFAULT TRUE,
|
||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
|
||
-- 商品表
|
||
CREATE TABLE products (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
merchant_id UUID REFERENCES merchants(id),
|
||
category_id UUID REFERENCES categories(id),
|
||
name VARCHAR(200) NOT NULL,
|
||
description TEXT,
|
||
images JSONB,
|
||
price DECIMAL(10,2) NOT NULL,
|
||
original_price DECIMAL(10,2),
|
||
stock INTEGER DEFAULT 0,
|
||
sales INTEGER DEFAULT 0,
|
||
status INTEGER DEFAULT 1,
|
||
specifications JSONB,
|
||
attributes JSONB,
|
||
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||
updated_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
|
||
-- 商品SKU表
|
||
CREATE TABLE product_skus (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
product_id UUID REFERENCES products(id),
|
||
sku_code VARCHAR(100) UNIQUE NOT NULL,
|
||
specifications JSONB,
|
||
price DECIMAL(10,2) NOT NULL,
|
||
stock INTEGER DEFAULT 0,
|
||
image_url TEXT,
|
||
status INTEGER DEFAULT 1,
|
||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
```
|
||
|
||
### 3.4 购物车系统
|
||
|
||
```sql
|
||
-- 购物车表
|
||
CREATE TABLE shopping_cart (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
user_id UUID REFERENCES users(id),
|
||
product_id UUID REFERENCES products(id),
|
||
sku_id UUID REFERENCES product_skus(id),
|
||
quantity INTEGER NOT NULL DEFAULT 1,
|
||
selected BOOLEAN DEFAULT TRUE,
|
||
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
||
UNIQUE(user_id, sku_id)
|
||
);
|
||
```
|
||
|
||
## 4. 优惠券系统详细设计
|
||
|
||
### 4.1 优惠券类型
|
||
|
||
1. **满减券**: 满X元减Y元
|
||
2. **折扣券**: 享受X折优惠
|
||
3. **免运费券**: 免配送费
|
||
4. **新人券**: 新用户专享
|
||
5. **会员券**: 会员等级专享
|
||
6. **品类券**: 特定商品分类可用
|
||
7. **商家券**: 指定商家可用
|
||
8. **限时券**: 限定时间内使用
|
||
|
||
### 4.2 优惠券数据模型
|
||
|
||
```sql
|
||
-- 优惠券模板表
|
||
CREATE TABLE coupon_templates (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
name VARCHAR(200) NOT NULL,
|
||
description TEXT,
|
||
coupon_type INTEGER NOT NULL,
|
||
discount_type INTEGER NOT NULL,
|
||
discount_value DECIMAL(10,2) NOT NULL,
|
||
min_order_amount DECIMAL(10,2) DEFAULT 0,
|
||
max_discount_amount DECIMAL(10,2),
|
||
total_quantity INTEGER,
|
||
per_user_limit INTEGER DEFAULT 1,
|
||
usage_limit INTEGER DEFAULT 1,
|
||
merchant_id UUID REFERENCES merchants(id),
|
||
category_ids JSONB,
|
||
product_ids JSONB,
|
||
user_type_limit INTEGER,
|
||
start_time TIMESTAMPTZ NOT NULL,
|
||
end_time TIMESTAMPTZ NOT NULL,
|
||
status INTEGER DEFAULT 1,
|
||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
|
||
-- 用户优惠券表
|
||
CREATE TABLE user_coupons (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
user_id UUID REFERENCES users(id),
|
||
template_id UUID REFERENCES coupon_templates(id),
|
||
coupon_code VARCHAR(50) UNIQUE NOT NULL,
|
||
status INTEGER DEFAULT 1,
|
||
used_at TIMESTAMPTZ,
|
||
order_id UUID,
|
||
received_at TIMESTAMPTZ DEFAULT NOW(),
|
||
expire_at TIMESTAMPTZ NOT NULL
|
||
);
|
||
|
||
-- 优惠券使用记录表
|
||
CREATE TABLE coupon_usage_logs (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
user_coupon_id UUID REFERENCES user_coupons(id),
|
||
order_id UUID NOT NULL,
|
||
discount_amount DECIMAL(10,2) NOT NULL,
|
||
used_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
```
|
||
|
||
### 4.3 优惠券发放机制
|
||
|
||
1. **主动领取**: 用户在优惠券中心领取
|
||
2. **自动发放**: 注册、首单、生日等触发
|
||
3. **活动赠送**: 参与活动获得
|
||
4. **邀请奖励**: 邀请好友注册
|
||
5. **客服赠送**: 客服手动发放
|
||
6. **积分兑换**: 使用积分兑换
|
||
|
||
## 5. 订单管理系统
|
||
|
||
### 5.1 订单数据模型
|
||
|
||
```sql
|
||
-- 订单主表
|
||
CREATE TABLE orders (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
order_no VARCHAR(50) UNIQUE NOT NULL,
|
||
user_id UUID REFERENCES users(id),
|
||
merchant_id UUID REFERENCES merchants(id),
|
||
status INTEGER NOT NULL DEFAULT 1,
|
||
total_amount DECIMAL(10,2) NOT NULL,
|
||
discount_amount DECIMAL(10,2) DEFAULT 0,
|
||
delivery_fee DECIMAL(10,2) DEFAULT 0,
|
||
actual_amount DECIMAL(10,2) NOT NULL,
|
||
payment_method INTEGER,
|
||
payment_status INTEGER DEFAULT 1,
|
||
delivery_address JSONB NOT NULL,
|
||
delivery_time TIMESTAMPTZ,
|
||
remark TEXT,
|
||
paid_at TIMESTAMPTZ,
|
||
shipped_at TIMESTAMPTZ,
|
||
delivered_at TIMESTAMPTZ,
|
||
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||
updated_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
|
||
-- 订单商品表
|
||
CREATE TABLE order_items (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
order_id UUID REFERENCES orders(id),
|
||
product_id UUID REFERENCES products(id),
|
||
sku_id UUID REFERENCES product_skus(id),
|
||
product_name VARCHAR(200) NOT NULL,
|
||
sku_specifications JSONB,
|
||
price DECIMAL(10,2) NOT NULL,
|
||
quantity INTEGER NOT NULL,
|
||
total_amount DECIMAL(10,2) NOT NULL,
|
||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
|
||
-- 订单状态变更记录
|
||
CREATE TABLE order_status_logs (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
order_id UUID REFERENCES orders(id),
|
||
status INTEGER NOT NULL,
|
||
remark TEXT,
|
||
operator_id UUID,
|
||
operator_type INTEGER,
|
||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
```
|
||
|
||
## 6. 配送系统详细设计
|
||
|
||
### 6.1 配送员管理
|
||
|
||
```sql
|
||
-- 配送员信息表
|
||
CREATE TABLE delivery_drivers (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
user_id UUID REFERENCES users(id),
|
||
real_name VARCHAR(100) NOT NULL,
|
||
id_card VARCHAR(20) NOT NULL,
|
||
driver_license VARCHAR(50),
|
||
vehicle_type INTEGER NOT NULL,
|
||
vehicle_number VARCHAR(20),
|
||
work_status INTEGER DEFAULT 1,
|
||
current_location POINT,
|
||
service_areas JSONB,
|
||
rating DECIMAL(3,2) DEFAULT 5.0,
|
||
total_orders INTEGER DEFAULT 0,
|
||
auth_status INTEGER DEFAULT 1,
|
||
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||
updated_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
```
|
||
|
||
### 6.2 配送订单管理
|
||
|
||
```sql
|
||
-- 配送任务表
|
||
CREATE TABLE delivery_tasks (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
order_id UUID REFERENCES orders(id),
|
||
driver_id UUID REFERENCES delivery_drivers(id),
|
||
pickup_address JSONB NOT NULL,
|
||
delivery_address JSONB NOT NULL,
|
||
distance DECIMAL(8,2),
|
||
estimated_time INTEGER,
|
||
delivery_fee DECIMAL(10,2) NOT NULL,
|
||
status INTEGER DEFAULT 1,
|
||
pickup_time TIMESTAMPTZ,
|
||
delivered_time TIMESTAMPTZ,
|
||
delivery_code VARCHAR(6),
|
||
remark TEXT,
|
||
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||
updated_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
|
||
-- 配送轨迹表
|
||
CREATE TABLE delivery_tracks (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
task_id UUID REFERENCES delivery_tasks(id),
|
||
driver_id UUID REFERENCES delivery_drivers(id),
|
||
location POINT NOT NULL,
|
||
address_description TEXT,
|
||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
```
|
||
|
||
### 6.3 配送费计算规则
|
||
|
||
```sql
|
||
-- 配送费规则表
|
||
CREATE TABLE delivery_fee_rules (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
name VARCHAR(100) NOT NULL,
|
||
base_fee DECIMAL(10,2) NOT NULL,
|
||
base_distance DECIMAL(5,2) NOT NULL,
|
||
additional_fee_per_km DECIMAL(10,2) NOT NULL,
|
||
time_multiplier JSONB,
|
||
weather_multiplier DECIMAL(3,2) DEFAULT 1.0,
|
||
min_fee DECIMAL(10,2) NOT NULL,
|
||
max_fee DECIMAL(10,2),
|
||
service_areas JSONB,
|
||
is_active BOOLEAN DEFAULT TRUE,
|
||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
```
|
||
|
||
### 6.4 智能配送调度
|
||
|
||
**调度算法要素**:
|
||
|
||
1. **距离优先**: 就近分配配送员
|
||
2. **实时位置**: 基于GPS实时位置
|
||
3. **负载均衡**: 考虑配送员当前订单数
|
||
4. **时效要求**: 优先处理紧急订单
|
||
5. **用户评价**: 优先分配高评分配送员
|
||
6. **区域熟悉度**: 优先分配熟悉区域的配送员
|
||
|
||
## 7. 支付系统
|
||
|
||
### 7.1 支付方式
|
||
|
||
- 微信支付
|
||
- 支付宝
|
||
- 银联云闪付
|
||
- 平台余额支付
|
||
- 优惠券抵扣
|
||
|
||
### 7.2 支付数据模型
|
||
|
||
```sql
|
||
-- 支付记录表
|
||
CREATE TABLE payments (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
payment_no VARCHAR(50) UNIQUE NOT NULL,
|
||
order_id UUID REFERENCES orders(id),
|
||
user_id UUID REFERENCES users(id),
|
||
payment_method INTEGER NOT NULL,
|
||
amount DECIMAL(10,2) NOT NULL,
|
||
status INTEGER DEFAULT 1,
|
||
third_party_no VARCHAR(100),
|
||
paid_at TIMESTAMPTZ,
|
||
refunded_at TIMESTAMPTZ,
|
||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
|
||
-- 退款记录表
|
||
CREATE TABLE refunds (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
refund_no VARCHAR(50) UNIQUE NOT NULL,
|
||
payment_id UUID REFERENCES payments(id),
|
||
order_id UUID REFERENCES orders(id),
|
||
amount DECIMAL(10,2) NOT NULL,
|
||
reason TEXT,
|
||
status INTEGER DEFAULT 1,
|
||
operator_id UUID,
|
||
refunded_at TIMESTAMPTZ,
|
||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
```
|
||
|
||
## 8. 评价系统
|
||
|
||
### 8.1 评价数据模型
|
||
|
||
```sql
|
||
-- 评价表
|
||
CREATE TABLE reviews (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
order_id UUID REFERENCES orders(id),
|
||
user_id UUID REFERENCES users(id),
|
||
merchant_id UUID REFERENCES merchants(id),
|
||
product_id UUID REFERENCES products(id),
|
||
driver_id UUID REFERENCES delivery_drivers(id),
|
||
rating INTEGER NOT NULL CHECK (rating >= 1 AND rating <= 5),
|
||
content TEXT,
|
||
images JSONB,
|
||
reply_content TEXT,
|
||
reply_time TIMESTAMPTZ,
|
||
is_anonymous BOOLEAN DEFAULT FALSE,
|
||
status INTEGER DEFAULT 1,
|
||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
```
|
||
|
||
## 9. 消息通知系统
|
||
|
||
### 9.1 消息类型
|
||
|
||
- 订单状态变更通知
|
||
- 优惠券到期提醒
|
||
- 配送进度通知
|
||
- 营销活动推送
|
||
- 系统公告
|
||
|
||
### 9.2 消息数据模型
|
||
|
||
```sql
|
||
-- 消息模板表
|
||
CREATE TABLE message_templates (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
name VARCHAR(100) NOT NULL,
|
||
type INTEGER NOT NULL,
|
||
title VARCHAR(200) NOT NULL,
|
||
content TEXT NOT NULL,
|
||
push_channels JSONB,
|
||
is_active BOOLEAN DEFAULT TRUE,
|
||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
|
||
-- 用户消息表
|
||
CREATE TABLE user_messages (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
user_id UUID REFERENCES users(id),
|
||
template_id UUID REFERENCES message_templates(id),
|
||
title VARCHAR(200) NOT NULL,
|
||
content TEXT NOT NULL,
|
||
type INTEGER NOT NULL,
|
||
is_read BOOLEAN DEFAULT FALSE,
|
||
extra_data JSONB,
|
||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
```
|
||
|
||
## 10. 数据统计分析
|
||
|
||
### 10.1 统计指标
|
||
|
||
**运营指标**:
|
||
|
||
- GMV(成交总额)
|
||
- 订单量和转化率
|
||
- 用户活跃度
|
||
- 客单价
|
||
- 复购率
|
||
|
||
**商家指标**:
|
||
|
||
- 销售额和利润
|
||
- 商品销量排行
|
||
- 评价和服务质量
|
||
- 库存周转率
|
||
|
||
**配送指标**:
|
||
|
||
- 配送时效
|
||
- 配送费用
|
||
- 配送员效率
|
||
- 客户满意度
|
||
|
||
### 10.2 统计数据模型
|
||
|
||
```sql
|
||
-- 日常统计表
|
||
CREATE TABLE daily_statistics (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
stat_date DATE NOT NULL,
|
||
merchant_id UUID REFERENCES merchants(id),
|
||
total_orders INTEGER DEFAULT 0,
|
||
total_amount DECIMAL(12,2) DEFAULT 0,
|
||
total_users INTEGER DEFAULT 0,
|
||
new_users INTEGER DEFAULT 0,
|
||
total_products INTEGER DEFAULT 0,
|
||
avg_order_amount DECIMAL(10,2) DEFAULT 0,
|
||
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||
UNIQUE(stat_date, merchant_id)
|
||
);
|
||
```
|
||
|
||
## 11. API接口设计
|
||
|
||
### 11.1 RESTful API规范
|
||
|
||
```http
|
||
GET /api/v1/products # 获取商品列表
|
||
POST /api/v1/products # 创建商品
|
||
GET /api/v1/products/:id # 获取商品详情
|
||
PUT /api/v1/products/:id # 更新商品
|
||
DELETE /api/v1/products/:id # 删除商品
|
||
|
||
GET /api/v1/orders # 获取订单列表
|
||
POST /api/v1/orders # 创建订单
|
||
GET /api/v1/orders/:id # 获取订单详情
|
||
PUT /api/v1/orders/:id/status # 更新订单状态
|
||
|
||
GET /api/v1/coupons # 获取优惠券列表
|
||
POST /api/v1/coupons/receive # 领取优惠券
|
||
GET /api/v1/coupons/my # 我的优惠券
|
||
```
|
||
|
||
### 11.2 实时推送接口
|
||
|
||
```text
|
||
# Supabase Realtime Channels
|
||
orders:user_id={user_id} # 用户订单状态推送
|
||
delivery:task_id={task_id} # 配送进度推送
|
||
messages:user_id={user_id} # 消息通知推送
|
||
```
|
||
|
||
## 12. 技术实现要点
|
||
|
||
### 12.1 前端技术栈 (uni-app-x)
|
||
|
||
- **组件库**: 自定义UI组件库
|
||
- **状态管理**: Pinia
|
||
- **路由管理**: uni-app页面路由
|
||
- **网络请求**: 封装的请求库
|
||
- **实时通信**: Supabase Realtime
|
||
- **地图服务**: 高德地图/百度地图
|
||
- **支付集成**: 微信支付/支付宝SDK
|
||
|
||
### 12.2 后端技术栈
|
||
|
||
```javascript
|
||
// Fastify服务器配置
|
||
const fastify = require('fastify')({ logger: true });
|
||
|
||
// 注册插件
|
||
await fastify.register(require('@fastify/cors'));
|
||
await fastify.register(require('@fastify/jwt'));
|
||
await fastify.register(require('@fastify/rate-limit'));
|
||
|
||
// 数据库连接
|
||
const { createClient } = require('@supabase/supabase-js');
|
||
const supabase = createClient(process.env.SUPABASE_URL, process.env.SUPABASE_ANON_KEY);
|
||
|
||
// Kafka配置
|
||
const kafka = require('kafkajs').kafka({
|
||
clientId: 'mall-app',
|
||
brokers: [process.env.KAFKA_BROKER]
|
||
});
|
||
```
|
||
|
||
### 12.3 数据库优化
|
||
|
||
- 建立合适的索引
|
||
- 分区存储大表
|
||
- 读写分离
|
||
- 缓存热点数据
|
||
|
||
### 12.4 安全措施
|
||
|
||
- JWT身份认证
|
||
- API接口限流
|
||
- 数据加密传输
|
||
- 敏感信息脱敏
|
||
- 权限控制
|
||
|
||
## 13. 项目实施计划
|
||
|
||
### 13.1 第一阶段 (2个月) - 基础平台
|
||
|
||
- [ ] 用户系统 (注册/登录/权限)
|
||
- [ ] 商品管理系统
|
||
- [ ] 基础订单流程
|
||
- [ ] 支付系统集成
|
||
- [ ] 后台管理基础功能
|
||
|
||
### 13.2 第二阶段 (1.5个月) - 营销功能
|
||
|
||
- [ ] 优惠券系统完整实现
|
||
- [ ] 购物车优化
|
||
- [ ] 商家端完整功能
|
||
- [ ] 消息通知系统
|
||
- [ ] 评价系统
|
||
|
||
### 13.3 第三阶段 (2个月) - 配送系统
|
||
|
||
- [ ] 配送员管理
|
||
- [ ] 智能配送调度
|
||
- [ ] 实时位置追踪
|
||
- [ ] 配送费用计算
|
||
- [ ] 配送端App完整功能
|
||
|
||
### 13.4 第四阶段 (1个月) - 优化完善
|
||
|
||
- [ ] 数据统计分析
|
||
- [ ] 性能优化
|
||
- [ ] 压力测试
|
||
- [ ] 客服系统
|
||
- [ ] 上线部署
|
||
|
||
## 14. 风险评估与应对
|
||
|
||
### 14.1 技术风险
|
||
|
||
- **并发处理**: 使用Kafka消息队列处理高并发
|
||
- **数据一致性**: 采用事务和分布式锁
|
||
- **系统可用性**: 服务熔断和降级策略
|
||
|
||
### 14.2 业务风险
|
||
|
||
- **支付安全**: 严格的支付流程和风控
|
||
- **库存管理**: 实时库存同步机制
|
||
- **配送时效**: 智能调度和应急预案
|
||
|
||
### 14.3 合规风险
|
||
|
||
- **数据隐私**: 遵循数据保护法规
|
||
- **电商资质**: 确保平台运营资质
|
||
- **税务合规**: 完善的财务和税务系统
|
||
|
||
## 15. 后续扩展规划
|
||
|
||
### 15.1 功能扩展
|
||
|
||
- 直播带货功能
|
||
- 团购/秒杀活动
|
||
- 积分商城
|
||
- 会员体系
|
||
- 供应链管理
|
||
|
||
### 15.2 技术扩展
|
||
|
||
- 微服务架构升级
|
||
- 人工智能推荐
|
||
- 大数据分析平台
|
||
- 多租户支持
|
||
- 国际化支持
|
||
|
||
---
|
||
|
||
**文档版本**: v1.0
|
||
**更新时间**: 2025年6月8日
|
||
**负责人**: 开发团队
|
||
**审核人**: 产品经理
|
||
|
||
## 16. NFC校园应用扩展模块
|
||
|
||
### 16.1 项目整合架构
|
||
|
||
**统一用户系统**:
|
||
- 复用mall项目的users表作为基础用户表
|
||
- 扩展school_users表存储校园特有信息
|
||
- 统一认证和权限管理
|
||
|
||
**模块化设计**:
|
||
```
|
||
mall-project/
|
||
├── modules/
|
||
│ ├── ecommerce/ # 电商模块
|
||
│ ├── nfc-campus/ # NFC校园模块
|
||
│ └── shared/ # 共享模块
|
||
├── database/
|
||
│ ├── ecommerce.sql # 电商相关表
|
||
│ ├── nfc.sql # NFC相关表
|
||
│ └── shared.sql # 共享表(users等)
|
||
└── api/
|
||
├── ecommerce/ # 电商API
|
||
├── nfc/ # NFC API
|
||
└── auth/ # 统一认证API
|
||
```
|
||
|
||
### 16.2 统一用户数据模型
|
||
|
||
```sql
|
||
-- 扩展现有users表,支持多种用户类型
|
||
ALTER TABLE users ADD COLUMN user_types JSONB DEFAULT '[]'; -- 用户可以有多种类型
|
||
ALTER TABLE users ADD COLUMN school_info JSONB; -- 学校相关信息
|
||
ALTER TABLE users ADD COLUMN parent_id UUID REFERENCES users(id); -- 家长关联
|
||
|
||
-- 学校用户扩展表(复用users表)
|
||
CREATE TABLE school_user_profiles (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
user_id UUID REFERENCES users(id) UNIQUE,
|
||
student_number VARCHAR(20) UNIQUE, -- 学号/工号
|
||
department VARCHAR(100), -- 院系/部门
|
||
class_grade VARCHAR(50), -- 班级/年级
|
||
school_user_type INTEGER NOT NULL, -- 1:学生 2:教师 3:员工 4:家长
|
||
enrollment_date DATE, -- 入学/入职日期
|
||
graduation_date DATE, -- 毕业/离职日期
|
||
emergency_contact JSONB, -- 紧急联系人信息
|
||
medical_info JSONB, -- 健康信息(可选)
|
||
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||
updated_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
|
||
-- NFC卡片关联到统一用户系统
|
||
CREATE TABLE nfc_cards (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
card_number VARCHAR(32) UNIQUE NOT NULL,
|
||
user_id UUID REFERENCES users(id), -- 关联到统一用户表
|
||
card_type INTEGER NOT NULL DEFAULT 1,
|
||
balance DECIMAL(10,2) DEFAULT 0.00,
|
||
status INTEGER DEFAULT 1,
|
||
daily_limit DECIMAL(10,2) DEFAULT 100.00,
|
||
expire_date DATE,
|
||
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||
updated_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
```
|
||
|
||
### 16.3 业务场景整合
|
||
|
||
**电商+校园场景结合**:
|
||
|
||
1. **校园电商** - 学生可在校园商城购买学习用品、生活用品
|
||
2. **家长代付** - 家长为孩子的电商订单和NFC充值代付
|
||
3. **积分互通** - 电商积分可用于NFC消费,NFC消费获得电商积分
|
||
4. **统一钱包** - 电商余额和NFC余额统一管理
|
||
5. **数据分析** - 综合分析学生消费行为(线上+线下)
|
||
|
||
### 16.4 扩展应用架构
|
||
|
||
```javascript
|
||
// 统一的应用入口配置
|
||
const appModules = {
|
||
ecommerce: {
|
||
enabled: true,
|
||
routes: '/mall/*',
|
||
permissions: ['consumer', 'merchant', 'admin']
|
||
},
|
||
nfcCampus: {
|
||
enabled: true,
|
||
routes: '/campus/*',
|
||
permissions: ['student', 'teacher', 'parent', 'canteen', 'admin']
|
||
},
|
||
unified: {
|
||
enabled: true,
|
||
routes: '/user/*',
|
||
permissions: ['all']
|
||
}
|
||
}
|
||
|
||
// 统一权限管理
|
||
const permissions = {
|
||
// 电商权限
|
||
'ecommerce.consumer': '电商消费者',
|
||
'ecommerce.merchant': '电商商家',
|
||
'ecommerce.delivery': '电商配送员',
|
||
|
||
// 校园权限
|
||
'campus.student': '学生',
|
||
'campus.teacher': '教师',
|
||
'campus.parent': '家长',
|
||
'campus.canteen': '餐厅商户',
|
||
'campus.librarian': '图书管理员',
|
||
|
||
// 统一权限
|
||
'system.admin': '系统管理员',
|
||
'finance.manager': '财务管理员'
|
||
}
|
||
```
|
||
|
||
### 16.5 移动端应用架构
|
||
|
||
**统一App方案**:
|
||
```
|
||
Mall+ App (超级应用)
|
||
├── 首页 (根据用户类型显示不同内容)
|
||
├── 电商模块
|
||
│ ├── 商品浏览
|
||
│ ├── 购物车
|
||
│ └── 订单管理
|
||
├── 校园模块
|
||
│ ├── NFC钱包
|
||
│ ├── 门禁权限
|
||
│ ├── 消费记录
|
||
│ └── 图书借阅
|
||
├── 统一功能
|
||
│ ├── 用户中心
|
||
│ ├── 消息通知
|
||
│ ├── 客服支持
|
||
│ └── 设置
|
||
└── 家长专区 (仅家长可见)
|
||
├── 孩子监控
|
||
├── 代付充值
|
||
└── 消费分析
|
||
```
|
||
|
||
**多端应用策略**:
|
||
- **消费者端**: 电商功能 + 学生校园功能
|
||
- **商户端**: 电商商户 + 校园商户(餐厅/小卖部)
|
||
- **管理端**: 统一管理电商和校园业务
|
||
- **家长端**: 专门的家长监控和代付功能
|
||
|
||
### 16.6 技术栈统一
|
||
|
||
**前端技术栈**:
|
||
- **框架**: uni-app-x (支持多端)
|
||
- **状态管理**: Pinia (模块化状态管理)
|
||
- **UI组件**: 统一设计系统
|
||
- **路由**: 模块化路由配置
|
||
|
||
**后端技术栈**:
|
||
- **框架**: Node.js + Fastify (复用现有)
|
||
- **数据库**: PostgreSQL + Supabase (扩展表结构)
|
||
- **缓存**: Redis (共享缓存)
|
||
- **消息队列**: Kafka (处理电商+NFC交易)
|
||
|
||
### 16.7 数据库整合方案
|
||
|
||
```sql
|
||
-- 统一订单系统(支持电商订单和NFC消费)
|
||
CREATE TABLE unified_orders (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
order_no VARCHAR(50) UNIQUE NOT NULL,
|
||
order_type INTEGER NOT NULL, -- 1:电商订单 2:NFC消费 3:充值订单
|
||
user_id UUID REFERENCES users(id),
|
||
amount DECIMAL(10,2) NOT NULL,
|
||
status INTEGER NOT NULL,
|
||
payment_method INTEGER,
|
||
|
||
-- 电商订单特有字段
|
||
merchant_id UUID REFERENCES merchants(id),
|
||
delivery_address JSONB,
|
||
delivery_fee DECIMAL(10,2) DEFAULT 0,
|
||
|
||
-- NFC消费特有字段
|
||
terminal_id VARCHAR(50),
|
||
location VARCHAR(200),
|
||
card_id UUID REFERENCES nfc_cards(id),
|
||
|
||
-- 通用字段
|
||
extra_data JSONB, -- 存储特殊数据
|
||
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||
updated_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
|
||
-- 统一钱包系统
|
||
CREATE TABLE unified_wallets (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
user_id UUID REFERENCES users(id) UNIQUE,
|
||
ecommerce_balance DECIMAL(10,2) DEFAULT 0.00, -- 电商余额
|
||
nfc_balance DECIMAL(10,2) DEFAULT 0.00, -- NFC余额
|
||
points_balance INTEGER DEFAULT 0, -- 积分余额
|
||
frozen_amount DECIMAL(10,2) DEFAULT 0.00, -- 冻结金额
|
||
total_recharge DECIMAL(12,2) DEFAULT 0.00, -- 累计充值
|
||
total_consume DECIMAL(12,2) DEFAULT 0.00, -- 累计消费
|
||
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||
updated_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
|
||
-- 统一消息系统
|
||
CREATE TABLE unified_messages (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
user_id UUID REFERENCES users(id),
|
||
message_type INTEGER NOT NULL, -- 1:电商 2:校园 3:系统
|
||
business_type INTEGER NOT NULL, -- 具体业务类型
|
||
title VARCHAR(200) NOT NULL,
|
||
content TEXT NOT NULL,
|
||
is_read BOOLEAN DEFAULT FALSE,
|
||
extra_data JSONB,
|
||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
```
|
||
|
||
### 16.8 实施计划调整
|
||
|
||
**整合开发计划 (5个月)**:
|
||
|
||
**第一阶段 (1个月) - 用户系统整合**:
|
||
- [ ] 扩展现有users表支持多用户类型
|
||
- [ ] 创建school_user_profiles表
|
||
- [ ] 统一认证和权限系统
|
||
- [ ] 数据迁移和兼容性测试
|
||
|
||
**第二阶段 (1.5个月) - NFC核心功能**:
|
||
- [ ] NFC卡片管理系统
|
||
- [ ] 基础消费功能
|
||
- [ ] 充值系统整合
|
||
- [ ] 门禁管理基础功能
|
||
|
||
**第三阶段 (1.5个月) - 业务场景实现**:
|
||
- [ ] 饭堂消费系统
|
||
- [ ] 小卖部购物系统
|
||
- [ ] 完整门禁管理
|
||
- [ ] 图书借阅系统
|
||
|
||
**第四阶段 (1个月) - 整合优化**:
|
||
- [ ] 统一移动端App开发
|
||
- [ ] 电商+校园业务整合
|
||
- [ ] 数据分析和报表
|
||
- [ ] 性能优化和测试
|
||
|
||
### 16.9 成本效益分析
|
||
|
||
**整合方案 vs 独立项目**:
|
||
|
||
| 项目 | 整合方案 | 独立项目 |
|
||
|------|---------|----------|
|
||
| 开发成本 | 60% | 100% |
|
||
| 维护成本 | 40% | 100% |
|
||
| 用户体验 | 更好(统一) | 一般(分散) |
|
||
| 数据价值 | 更高(整合) | 较低(孤立) |
|
||
| 业务协同 | 强 | 弱 |
|
||
|
||
**节省成本**:
|
||
- 用户系统复用: 节省40万开发成本
|
||
- 基础设施共享: 节省每年50万运维成本
|
||
- 统一维护: 节省30%人力成本
|
||
- 业务协同: 预期增加20%业务收入
|
||
|
||
### 16.10 风险控制
|
||
|
||
**技术风险**:
|
||
- **模块耦合**: 采用微服务架构,模块间松耦合
|
||
- **性能影响**: 数据库分表分库,缓存优化
|
||
- **系统复杂度**: 完善的文档和测试覆盖
|
||
|
||
**业务风险**:
|
||
- **权限混乱**: 严格的权限隔离和审计
|
||
- **数据安全**: 按模块进行数据加密和访问控制
|
||
- **用户体验**: 模块化UI设计,按用户类型展示
|
||
|
||
## 🎯 结论
|
||
|
||
**强烈推荐采用整合方案**,将NFC校园应用作为Mall项目的一个核心模块来开发。这样不仅能最大化复用现有资源,还能创造出更强的业务协同效应,为未来的扩展奠定坚实基础。
|
||
|
||
整合后的项目将成为一个**校园+电商超级平台**,覆盖学生的学习、生活、消费全场景,具有更大的商业价值和发展潜力!
|