# 电商商城系统完整需求文档 ## 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项目的一个核心模块来开发。这样不仅能最大化复用现有资源,还能创造出更强的业务协同效应,为未来的扩展奠定坚实基础。 整合后的项目将成为一个**校园+电商超级平台**,覆盖学生的学习、生活、消费全场景,具有更大的商业价值和发展潜力!