# 电商商城系统完整需求文档

## 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项目的一个核心模块来开发。这样不仅能最大化复用现有资源，还能创造出更强的业务协同效应，为未来的扩展奠定坚实基础。

整合后的项目将成为一个**校园+电商超级平台**，覆盖学生的学习、生活、消费全场景，具有更大的商业价值和发展潜力！
