28 KiB
28 KiB
电商商城系统完整需求文档
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 用户管理系统
-- 用户基础表
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 商家管理系统
-- 商家信息表
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 商品管理系统
-- 商品分类表
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 购物车系统
-- 购物车表
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 优惠券类型
- 满减券: 满X元减Y元
- 折扣券: 享受X折优惠
- 免运费券: 免配送费
- 新人券: 新用户专享
- 会员券: 会员等级专享
- 品类券: 特定商品分类可用
- 商家券: 指定商家可用
- 限时券: 限定时间内使用
4.2 优惠券数据模型
-- 优惠券模板表
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 优惠券发放机制
- 主动领取: 用户在优惠券中心领取
- 自动发放: 注册、首单、生日等触发
- 活动赠送: 参与活动获得
- 邀请奖励: 邀请好友注册
- 客服赠送: 客服手动发放
- 积分兑换: 使用积分兑换
5. 订单管理系统
5.1 订单数据模型
-- 订单主表
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 配送员管理
-- 配送员信息表
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 配送订单管理
-- 配送任务表
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 配送费计算规则
-- 配送费规则表
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 智能配送调度
调度算法要素:
- 距离优先: 就近分配配送员
- 实时位置: 基于GPS实时位置
- 负载均衡: 考虑配送员当前订单数
- 时效要求: 优先处理紧急订单
- 用户评价: 优先分配高评分配送员
- 区域熟悉度: 优先分配熟悉区域的配送员
7. 支付系统
7.1 支付方式
- 微信支付
- 支付宝
- 银联云闪付
- 平台余额支付
- 优惠券抵扣
7.2 支付数据模型
-- 支付记录表
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 评价数据模型
-- 评价表
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 消息数据模型
-- 消息模板表
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 统计数据模型
-- 日常统计表
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规范
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 实时推送接口
# 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 后端技术栈
// 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 统一用户数据模型
-- 扩展现有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 业务场景整合
电商+校园场景结合:
- 校园电商 - 学生可在校园商城购买学习用品、生活用品
- 家长代付 - 家长为孩子的电商订单和NFC充值代付
- 积分互通 - 电商积分可用于NFC消费,NFC消费获得电商积分
- 统一钱包 - 电商余额和NFC余额统一管理
- 数据分析 - 综合分析学生消费行为(线上+线下)
16.4 扩展应用架构
// 统一的应用入口配置
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 数据库整合方案
-- 统一订单系统(支持电商订单和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项目的一个核心模块来开发。这样不仅能最大化复用现有资源,还能创造出更强的业务协同效应,为未来的扩展奠定坚实基础。
整合后的项目将成为一个校园+电商超级平台,覆盖学生的学习、生活、消费全场景,具有更大的商业价值和发展潜力!