mall数据库文件

This commit is contained in:
comlibmb
2026-01-30 16:11:23 +08:00
parent b53d2376ff
commit cfec4a16c0
71 changed files with 11786 additions and 1009 deletions

354
mall_sql/README.md Normal file
View File

@@ -0,0 +1,354 @@
# Mall SQL 数据库脚本集合
> **电商商城系统** - PostgreSQL + Supabase 数据库脚本总目录
---
## 📁 目录结构
```
mall_sql/
├── schemas/ # 数据库表结构定义
├── migrations/ # 数据库迁移/升级脚本
├── tests/ # 测试和验证脚本
├── subscription/ # 订阅系统专用脚本
├── scripts/ # 迁移脚本 (migrate.sh/ps1)
├── docs/ # 数据库文档
├── deploy.sh # Linux/Mac 自动部署脚本
├── deploy.bat # Windows 自动部署脚本
└── README.md # 本文件
```
---
## 🚀 快速开始
### 首次部署(全新数据库)
```bash
# 1. 执行完整数据库创建
psql -h db.example.com -U postgres -d akmon -f schemas/complete_mall_database.sql
# 2. 创建测试用户和模拟数据
psql -h db.example.com -U postgres -d akmon -f tests/mock_data_insert.sql
```
### 增量升级(已有数据库)
```bash
# 1. 先检查数据库状态
psql -h db.example.com -U postgres -d akmon -f tests/mall_database_check.sql
# 2. 执行增量升级
psql -h db.example.com -U postgres -d akmon -f migrations/mall_alter_upgrade.sql
```
---
## 📦 schemas/ - 数据库表结构
| 文件 | 说明 | 执行顺序 |
|------|------|----------|
| `complete_mall_database.sql` | 完整商城数据库21个表**推荐** | 1 |
| `ak_contents_product_extension.sql` | **备选方案**: 基于ak_contents扩展商品 | - |
| `product_database.sql` | 商品相关表补充 | 2 |
| `mall_seo_security.sql` | SEO优化和安全策略 | 3 |
### 两种实现方案
**方案一: 独立商城表(推荐)**
- 使用 `ml_products` 等独立表
- 执行: `complete_mall_database.sql`
- 优点: 职责清晰,不影响资讯系统
**方案二: 扩展ak_contents表备选**
- 复用 `ak_contents` 表,添加商品字段
- 执行: `ak_contents_product_extension.sql`
- 优点: 统一内容管理,但混合了资讯和商品
### complete_mall_database.sql
完整的商城系统数据库定义,包含:
**用户模块**:
- `ml_user_profiles` - 用户扩展信息
- `ml_user_addresses` - 用户地址
**商品模块**:
- `ml_categories` - 商品分类
- `ml_brands` - 品牌
- `ml_products` - 商品主表
- `ml_product_skus` - SKU规格
- `ml_product_images` - 商品图片
**订单模块**:
- `ml_orders` - 订单主表
- `ml_order_items` - 订单明细
- `ml_order_status_log` - 订单状态日志
**配送模块**:
- `ml_delivery_tasks` - 配送任务
- `ml_delivery_tracking` - 配送跟踪
**支付模块**:
- `ml_payments` - 支付记录
**营销模块**:
- `ml_coupons` - 优惠券
- `ml_user_coupons` - 用户优惠券
**订阅模块**:
- `ml_subscriptions` - 订阅计划
- `ml_user_subscriptions` - 用户订阅
---
## 🔄 migrations/ - 数据库迁移
| 文件 | 说明 | 使用场景 |
|------|------|----------|
| `mall_alter_upgrade.sql` | 完整增量升级 | 生产环境升级 |
| `mall_fields_only_upgrade.sql` | 仅字段升级 | 最小化修改 |
| `quick_role_migration.sql` | 角色字段快速迁移 | user_type→role |
| `mall_migration.sql` | 通用迁移脚本 | 兼容性处理 |
| `role_field_unification.sql` | 角色字段统一 | 数据一致性 |
| `role_field_cleanup.sql` | 角色字段清理 | 清理冗余字段 |
| `user_compatibility_implementation.sql` | 用户兼容性实现 | 跨模块兼容 |
### 重要迁移说明
**角色字段统一**:
- 旧字段: `user_type` (INTEGER)
- 新字段: `role` (TEXT)
- 迁移脚本: `quick_role_migration.sql`
**角色值映射**:
| user_type | role |
|-----------|------|
| 1 | 'admin' |
| 2 | 'merchant' |
| 3 | 'customer' |
| 4 | 'delivery' |
| 5 | 'service' |
---
## 🧪 tests/ - 测试和验证
| 文件 | 说明 |
|------|------|
| `mall_database_check.sql` | 数据库状态检查 |
| `validation_test.sql` | 数据完整性验证 |
| `verify_mock_data_fix.sql` | 模拟数据修复验证 |
| `mock_data_insert.sql` | 创建测试数据 |
| `create_supabase_auth_users.sql` | 创建Supabase Auth用户 |
### 测试数据说明
`mock_data_insert.sql` 创建以下测试数据:
- 1个管理员
- 2个商家
- 10个商品
- 3个客户
- 20个订单
- 2个配送员
- 5个配送任务
---
## 📬 subscription/ - 订阅系统
| 文件 | 说明 |
|------|------|
| `create_mall_subscription_tables.sql` | 订阅表创建 |
| `subscription_guard_trigger.sql` | 订阅守护触发器 |
| `subscription_rls_policies.sql` | 订阅RLS安全策略 |
### 订阅系统表
- `ml_subscriptions` - 订阅计划定义
- `ml_user_subscriptions` - 用户订阅记录
- `ml_subscription_payments` - 订阅支付记录
---
## 📚 docs/ - 文档
### 核心文档
| 文件 | 说明 |
|------|------|
| `MALL_README.md` | 商城系统主文档 |
| `TECHNICAL_IMPLEMENTATION.md` | 技术实现详解 |
| `MODULE_ANALYSIS.md` | 模块分析 |
### 部署与升级
| 文件 | 说明 |
|------|------|
| `UPGRADE_GUIDE.md` | 数据库升级指南 |
| `MIGRATION_GUIDE.md` | 迁移指南 |
| `QUICK_START_MIGRATION.md` | 快速迁移指南 |
| `MIGRATION_CHECKLIST.md` | 迁移检查清单 |
| `MIGRATION_SUMMARY.md` | 迁移总结 |
| `complete_deployment_guide.md` | 完整部署指南 |
| `deployment_guide.md` | 部署指南 |
| `migration_complete_report.md` | 迁移完成报告 |
### 角色与权限
| 文件 | 说明 |
|------|------|
| `ROLE_FIELD_SUMMARY.md` | 角色字段变更总结 |
| `ROLE_FIELD_FIX_REPORT.md` | 角色字段修复报告 |
| `user_reuse_summary.md` | 用户复用总结 |
### 问题修复报告
| 文件 | 说明 |
|------|------|
| `VARIABLE_CONFLICT_FIX_REPORT.md` | 变量冲突修复 |
| `database_syntax_fix_report.md` | 数据库语法修复 |
| `type_error_fix_report.md` | 类型错误修复 |
### 测试与数据
| 文件 | 说明 |
|------|------|
| `mock_data_documentation.md` | 测试数据文档 |
| `database_creation_report.md` | 数据库创建报告 |
| `FRONTEND_BACKEND_DEBUGGING.md` | 前后端调试指南 |
### SEO与优化
| 文件 | 说明 |
|------|------|
| `seo_optimization_guide.md` | SEO优化指南 |
| `seo_optimization_report.md` | SEO优化报告 |
### 订阅系统
| 文件 | 说明 |
|------|------|
| `README_subscription_consumer.md` | 订阅系统说明 |
| `裂变红包.md` | 裂变红包功能 |
### 页面报告
| 目录 | 说明 |
|------|------|
| `docs/reports/` | 页面生成报告 |
| `docs/analysis/` | 兼容性分析 |
---
## 🗄️ 数据库表总览
```
akmon (PostgreSQL Database)
├── public.ak_users # 用户主表(共享)
└── public.ml_* (商城系统表21张)
├── ml_user_profiles # 用户扩展信息
├── ml_user_addresses # 用户地址
├── ml_categories # 商品分类
├── ml_brands # 品牌
├── ml_products # 商品
├── ml_product_skus # SKU
├── ml_product_images # 商品图片
├── ml_orders # 订单
├── ml_order_items # 订单明细
├── ml_order_status_log # 订单日志
├── ml_delivery_tasks # 配送任务
├── ml_delivery_tracking # 配送跟踪
├── ml_payments # 支付
├── ml_coupons # 优惠券
├── ml_user_coupons # 用户优惠券
├── ml_subscriptions # 订阅计划
├── ml_user_subscriptions # 用户订阅
├── ml_subscription_payments # 订阅支付
├── ml_merchant_profiles # 商家资料
├── ml_delivery_staff # 配送员
└── ml_notifications # 通知
```
---
## 🔧 常用SQL操作
### 检查表是否存在
```sql
SELECT table_name, table_type
FROM information_schema.tables
WHERE table_schema = 'public'
AND table_name LIKE 'ml_%'
ORDER BY table_name;
```
### 查看表结构
```sql
\d+ public.ml_products
-- 或
SELECT column_name, data_type, is_nullable, column_default
FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name = 'ml_products'
ORDER BY ordinal_position;
```
### 检查索引
```sql
SELECT indexname, indexdef
FROM pg_indexes
WHERE schemaname = 'public'
AND tablename LIKE 'ml_%'
ORDER BY tablename, indexname;
```
### 检查RLS策略
```sql
SELECT schemaname, tablename, policyname, permissive, roles, cmd, qual
FROM pg_policies
WHERE schemaname = 'public'
AND tablename LIKE 'ml_%'
ORDER BY tablename, policyname;
```
---
## ⚠️ 注意事项
### 执行顺序
1. **全新部署**: 按以下顺序执行
- `schemas/complete_mall_database.sql`
- `schemas/product_database.sql`
- `schemas/mall_seo_security.sql`
- `subscription/create_mall_subscription_tables.sql`
- `tests/mock_data_insert.sql`
2. **增量升级**: 先检查后升级
- `tests/mall_database_check.sql`
- 根据检查结果选择合适的迁移脚本
- `tests/validation_test.sql`
### Supabase Auth 用户
在执行任何脚本之前,**必须先创建 Supabase Auth 用户**
```bash
psql -f tests/create_supabase_auth_users.sql
```
### 角色字段兼容性
如果你的数据库使用旧的 `user_type` 字段,请先执行角色迁移:
```bash
psql -f migrations/quick_role_migration.sql
```
---
## 📞 支持
如有问题,请查阅:
1. `docs/complete_deployment_guide.md` - 完整部署指南
2. `docs/UPGRADE_GUIDE.md` - 升级指南
3. `docs/ROLE_FIELD_SUMMARY.md` - 角色字段说明
---
**最后更新**: 2026-01-30
**维护者**: AKMON开发团队