Compare commits
1 Commits
v2-db-revi
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| fda1c8bdda |
@@ -1,90 +1,87 @@
|
||||
# iShare 数据库设计概要
|
||||
|
||||
> 版本:v3(基于 v2 评审修订)
|
||||
> 版本:v4(决策确认后最终版)
|
||||
> 修订时间:2026-02-17
|
||||
> 完整建表 SQL(v2 基础版):`db/ishare_schema_v2.sql`
|
||||
> 增量变更 SQL(v2→v3):`db/ishare_schema_v3_delta.sql`
|
||||
> 增量 SQL:`db/ishare_schema_v3_delta.sql` → `db/ishare_schema_v4_delta.sql`
|
||||
> 完整字段说明:`DATABASE_DESIGN_V2.md`
|
||||
> 设计决策记录:`DECISIONS.md`
|
||||
|
||||
---
|
||||
|
||||
## 一、表总览(27 张表)
|
||||
## 一、表总览(28 张表)
|
||||
|
||||
### 1.1 App 基础表(复用 PigX,共 9 张)
|
||||
|
||||
| # | 表名 | 说明 | 变更 |
|
||||
|---|------|------|------|
|
||||
| 1 | `app_user` | 用户 | 追加 `invite_code`、`inviter_id` |
|
||||
| 2 | `app_role` | 角色 | 沿用 |
|
||||
| 3 | `app_user_role` | 用户角色关联 | 沿用 |
|
||||
| 4 | `app_social_details` | 第三方登录 | 沿用 |
|
||||
| 5 | `app_article_category` | 文章分类 | 沿用 |
|
||||
| 6 | `app_article` | 文章/公告 | 沿用 |
|
||||
| 7 | `app_article_collect` | 文章收藏 | 沿用 |
|
||||
| 8 | `app_page` | 页面配置 | 沿用 |
|
||||
| 9 | `app_tabbar` | 底部导航 | 沿用 |
|
||||
| 2-9 | `app_role` / `app_user_role` / `app_social_details` / `app_article*` / `app_page` / `app_tabbar` | 框架基础 | 沿用 |
|
||||
|
||||
### 1.2 业务表(iShare 专属,共 18 张)
|
||||
### 1.2 业务表(iShare 专属,共 19 张)
|
||||
|
||||
#### 平台与产品
|
||||
|
||||
| # | 表名 | 说明 | v3 变更 |
|
||||
|---|------|------|---------|
|
||||
| 10 | `as_platform_type` | 平台分类(视频/音乐/AI等) | — |
|
||||
| 11 | `as_platform` | 流媒体平台 | — |
|
||||
| 12 | `as_sub_plan` | 订阅计划 | — |
|
||||
| 13 | `as_sub_payroll` | 付费方案(月/季/年) | — |
|
||||
| 14 | `as_sub_product` | 合租商品 | 移除 `sub_plan_ids` 逗号字段 |
|
||||
| 15 | `as_product_plan_rel` | 产品-计划 M:N 关联表 | ✨ 新增(I2 修复) |
|
||||
| 16 | `as_sub_account` | 平台账号凭据(AES 加密) | — |
|
||||
| 17 | `as_sub_product_comment` | 商品评价 | — |
|
||||
| 18 | `as_banner` | 首页 Banner 广告位 | ✨ 新增(I1 修复) |
|
||||
| # | 表名 | 说明 | Phase |
|
||||
|---|------|------|-------|
|
||||
| 10 | `as_platform_type` | 平台分类 | P1 |
|
||||
| 11 | `as_platform` | 流媒体平台 | P1 |
|
||||
| 12 | `as_sub_plan` | 订阅计划 | P1 |
|
||||
| 13 | `as_sub_payroll` | 付费方案(月/季/年) | P1 |
|
||||
| 14 | `as_sub_product` | 合租商品(P1仅 type=1 自营) | P1 |
|
||||
| 15 | `as_product_plan_rel` | 产品-计划 M:N 关联 | P1 |
|
||||
| 16 | `as_sub_account` | 平台账号凭据(AES 加密) | P1 |
|
||||
| 17 | `as_sub_product_comment` | 商品评价 | P1 |
|
||||
| 18 | `as_banner` | 首页 Banner 广告位 | P1 |
|
||||
|
||||
#### 订阅与订单
|
||||
|
||||
| # | 表名 | 说明 | v3 变更 |
|
||||
|---|------|------|---------|
|
||||
| 19 | `as_user_sub` | 合租槽/共享池 | 补充索引 |
|
||||
| 20 | `as_user_sub_member` | 个人订阅记录 | 移除唯一键、新增 status=4、补充索引 |
|
||||
| 21 | `as_order` | 订单(含状态机、价格快照) | 补充索引 |
|
||||
| # | 表名 | 说明 | Phase |
|
||||
|---|------|------|-------|
|
||||
| 19 | `as_user_sub` | 合租槽/共享池 | P1 |
|
||||
| 20 | `as_user_sub_member` | 个人订阅记录(status=4 P2用) | P1 |
|
||||
| 21 | `as_order` | 订单(三种支付方式,复用 pigx-pay) | P1 |
|
||||
|
||||
#### 钱包与推广
|
||||
|
||||
| # | 表名 | 说明 | v3 变更 |
|
||||
|---|------|------|---------|
|
||||
| 22 | `as_recharge` | 钱包充值单 | ✨ 新增(R1 修复) |
|
||||
| 23 | `as_wallet` | 用户钱包(乐观锁防并发) | — |
|
||||
| 24 | `as_wallet_log` | 钱包流水(含余额快照) | — |
|
||||
| 25 | `as_invite` | 邀请关系与返现 | — |
|
||||
| 26 | `as_notification` | 系统通知 | 补充索引 |
|
||||
| # | 表名 | 说明 | Phase |
|
||||
|---|------|------|-------|
|
||||
| 22 | `as_recharge` | 充值单(人工/支付宝/微信) | P1 |
|
||||
| 23 | `as_wallet` | 用户钱包(乐观锁防并发) | P1 |
|
||||
| 24 | `as_wallet_log` | 钱包流水(type=5 提现 P2用) | P1 |
|
||||
| 25 | `as_invite` | 邀请关系与返现记录 | P1 |
|
||||
| 26 | `as_invite_config` | 邀请返现规则配置(可配置) | P1 |
|
||||
| 27 | `as_notification` | 系统通知 | P1 |
|
||||
|
||||
---
|
||||
|
||||
## 二、核心 ER 关系概览(v3)
|
||||
## 二、核心 ER 关系概览
|
||||
|
||||
```
|
||||
as_platform_type (1) ──< (N) as_platform
|
||||
as_platform (1) ──< (N) as_sub_plan
|
||||
as_sub_plan (1) ──< (N) as_sub_payroll
|
||||
as_sub_plan (N) >──< (N) as_sub_product [via as_product_plan_rel] ← v3 改为关联表
|
||||
as_platform (1) ──< (N) as_sub_product [platform_id 冗余加速查询]
|
||||
as_sub_plan (N) >──< (N) as_sub_product [via as_product_plan_rel]
|
||||
as_platform (1) ──< (N) as_sub_product [platform_id 冗余]
|
||||
|
||||
as_sub_product (1) ──< (N) as_sub_account [product_id]
|
||||
as_sub_product (1) ──< (N) as_user_sub [product_id]
|
||||
as_user_sub (1) ──< (N) as_user_sub_member [sub_id]
|
||||
as_sub_product (1) ──< (N) as_sub_account
|
||||
as_sub_product (1) ──< (N) as_user_sub
|
||||
as_user_sub (1) ──< (N) as_user_sub_member
|
||||
|
||||
as_sub_product (1) ──< (N) as_order [product_id]
|
||||
as_sub_product (1) ──< (N) as_order
|
||||
as_order (1) ──< (1) as_user_sub_member [order_id]
|
||||
|
||||
app_user (1) ──< (1) as_wallet
|
||||
as_wallet (1) ──< (N) as_wallet_log
|
||||
as_wallet (1) ──< (N) as_recharge [user_id] ← v3 新增
|
||||
as_wallet (1) ──< (N) as_recharge [user_id]
|
||||
app_user (1) ──< (N) as_order
|
||||
app_user (1) ──< (N) as_recharge [user_id] ← v3 新增
|
||||
app_user (1) ──< (N) as_recharge
|
||||
app_user (1) ──< (N) as_user_sub_member
|
||||
app_user (1) ──< (N) as_invite [as inviter]
|
||||
app_user (1) ──< (1) as_invite [as invitee]
|
||||
app_user (1) ──< (N) as_notification
|
||||
|
||||
as_invite_config (1:active) ──→ as_invite [规则快照到 reward_amount]
|
||||
```
|
||||
|
||||
---
|
||||
@@ -94,31 +91,34 @@ app_user (1) ──< (N) as_notification
|
||||
### 3.1 订单(as_order)
|
||||
|
||||
```
|
||||
[待支付] ─→ 15min 超时 ─→ [已取消]
|
||||
[待支付] ─→ 支付成功 ─→ [已支付] ─→ 激活订阅 ─→ [已完成]
|
||||
[已支付/已完成] ─→ 退款 ─→ [已退款]
|
||||
[待支付(0)] ─→ 15min 超时 ─→ [已取消(4)]
|
||||
[待支付(0)] ─→ 支付成功 ─→ [已支付(1)] ─→ 激活订阅 ─→ [已完成(2)]
|
||||
[已支付/完成] ─→ 退款 ─→ [已退款(3)]
|
||||
```
|
||||
|
||||
### 3.2 充值单(as_recharge) ← v3 新增
|
||||
**支付方式:** 1=余额 / 2=支付宝 / 3=微信(均通过 pigx-pay 模块处理)
|
||||
|
||||
### 3.2 充值单(as_recharge)
|
||||
|
||||
```
|
||||
[待支付(0)] ─→ 外部支付成功 ─→ [已到账(1)]
|
||||
人工充值(管理员): 直接创建 status=1 记录
|
||||
外部支付:
|
||||
[待支付(0)] ─→ 支付成功 ─→ [已到账(1)] ─→ as_wallet.balance +amount
|
||||
─→ 15min 超时 ─→ [已取消(3)]
|
||||
─→ 支付失败 ─→ [支付失败(2)]
|
||||
人工充值:管理员操作 → 直接创建 status=1 记录
|
||||
─→ 支付失败 ─→ [失败(2)]
|
||||
```
|
||||
|
||||
### 3.3 个人订阅(as_user_sub_member) ← v3 修订
|
||||
### 3.3 个人订阅(as_user_sub_member)
|
||||
|
||||
```
|
||||
[待激活(0)] ─→ 订单完成 ─→ [使用中(1)]
|
||||
[等待车主(4)] ← 广场拼车付款后,等待车主录入凭据
|
||||
[等待车主(4)] ─→ 车主录入凭据 ─→ [使用中(1)]
|
||||
[使用中(1)] ─→ 到期 ─→ [已到期(2)] ─→ 续费 ─→ [使用中(1)] 新建记录
|
||||
[使用中(1)] ─→ 到期 ─→ [已到期(2)] ─→ 续费 → 新建记录回到[待激活(0)]
|
||||
─→ 主动退订 ─→ [已退订(3)]
|
||||
|
||||
[Phase2] 拼车广场付款后 → [等待车主录入凭据(4)] → 车主录入 → [使用中(1)]
|
||||
```
|
||||
|
||||
> **v3 修订**:移除 UNIQUE(sub_id, user_id),续费时新建记录(旧记录置2=已到期),保留完整历史
|
||||
> 续费策略:新建 member 记录,旧记录置为2=已到期(保留历史,便于对账)
|
||||
|
||||
### 3.4 合租槽(as_user_sub)
|
||||
|
||||
@@ -135,108 +135,98 @@ app_user (1) ──< (N) as_notification
|
||||
### 4.1 席位超卖防护(乐观锁)
|
||||
|
||||
```sql
|
||||
-- 购买时原子性占位,affected rows = 0 则席位已满
|
||||
UPDATE as_user_sub
|
||||
SET capacity_loaded = capacity_loaded + 1
|
||||
WHERE id = ? AND capacity_loaded < capacity;
|
||||
-- affected rows = 0 → 席位已满,拒绝购买
|
||||
```
|
||||
|
||||
### 4.2 账号凭据加密
|
||||
### 4.2 账号凭据安全
|
||||
|
||||
- 算法:AES-256-GCM(`as_sub_account.encrypt_type = 1`)
|
||||
- `account_passwd`:密文(Base64)
|
||||
- `passwd_salt`:随机 IV(16 字节 Base64)
|
||||
- 密钥:服务端环境变量,不入库
|
||||
- 查看凭据:仅限 `as_user_sub_member.status = 1`,服务端解密后返回明文,不记录日志
|
||||
- 存储:AES-256-GCM 加密,密钥存环境变量不入库
|
||||
- 查看:**需二次验证(SMS OTP 或密码重输),OTP 存 Redis TTL 5min**
|
||||
- 返回:服务端解密后返回明文,不记录日志,前端倒计时隐藏
|
||||
|
||||
### 4.3 钱包余额并发控制(乐观锁)
|
||||
### 4.3 支付集成
|
||||
|
||||
- **复用 pigx-pay 模块**(已集成支付宝 + 微信)
|
||||
- 购买商品 → `as_order`(pay_type 2/3)→ pigx-pay 回调 → 更新订单状态 → 创建 member 记录
|
||||
- 余额充值 → `as_recharge`(pay_type 2/3)→ pigx-pay 回调 → 更新充值单 → 增加钱包余额
|
||||
|
||||
### 4.4 邀请返现(可配置规则)
|
||||
|
||||
```
|
||||
1. 管理后台配置 as_invite_config(选择激活规则)
|
||||
2. 被邀请人注册 → 写入 as_invite 记录
|
||||
3. 触发条件满足(首次购买 or 每次购买)
|
||||
→ 读取当前 is_active=1 的 as_invite_config
|
||||
→ 计算返现金额(快照到 as_invite.reward_amount)
|
||||
→ 延迟发放(reward_delay_days 天后)
|
||||
→ as_wallet_log(type=4)+ as_wallet.balance +reward_amount
|
||||
```
|
||||
|
||||
### 4.5 钱包余额并发控制(乐观锁)
|
||||
|
||||
```sql
|
||||
UPDATE as_wallet
|
||||
SET balance = balance - ?, version = version + 1
|
||||
WHERE user_id = ? AND version = ? AND balance >= ?;
|
||||
-- affected rows = 0:并发冲突或余额不足
|
||||
```
|
||||
|
||||
### 4.4 续费记录设计
|
||||
|
||||
- 续费时**新建** `as_user_sub_member` 记录,旧记录 `status` 置为 2(已到期)
|
||||
- 同一 `sub_id + user_id` 只允许一条 `status = 1` 的记录(应用层强制)
|
||||
- 历史续费记录完整保留,支持对账和退款审计
|
||||
|
||||
### 4.5 产品-计划 M:N 查询
|
||||
|
||||
```sql
|
||||
-- 商品详情:该商品关联哪些订阅计划
|
||||
SELECT sp.* FROM as_sub_plan sp
|
||||
JOIN as_product_plan_rel r ON r.plan_id = sp.id
|
||||
WHERE r.product_id = ?
|
||||
ORDER BY r.sort_order;
|
||||
|
||||
-- 计划维度:哪些商品使用了该计划
|
||||
SELECT p.* FROM as_sub_product p
|
||||
JOIN as_product_plan_rel r ON r.product_id = p.id
|
||||
WHERE r.plan_id = ? AND p.status = 1;
|
||||
-- affected rows = 0 → 并发冲突或余额不足
|
||||
```
|
||||
|
||||
### 4.6 订阅到期定时任务(每日 02:00)
|
||||
|
||||
```
|
||||
1. expire_time < now() + 7天 且 status=1 → 推送续费提醒通知(as_notification)
|
||||
2. expire_time < now() 且 status=1 → 标记 status=2(已到期)
|
||||
→ as_user_sub.capacity_loaded -1(释放席位)
|
||||
3. as_order.expire_time < now() 且 status=0 → 标记 status=4(已取消,释放席位预留)
|
||||
4. as_recharge.expire_time < now() 且 status=0 → 标记 status=3(已取消)
|
||||
1. expire_time < now()+7天 且 status=1 → 推送续费提醒
|
||||
2. expire_time < now() 且 status=1 → 置 status=2,capacity_loaded -1
|
||||
3. as_order.expire_time < now() 且 status=0 → 置 status=4(取消)
|
||||
4. as_recharge.expire_time < now() 且 status=0 → 置 status=3(取消)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 五、关键索引清单
|
||||
|
||||
| 表 | 索引 | 用途 |
|
||||
|----|------|------|
|
||||
| 表 | 索引字段 | 用途 |
|
||||
|----|---------|------|
|
||||
| `as_user_sub_member` | `(user_id, status)` | 我的订阅列表 |
|
||||
| `as_user_sub_member` | `(expire_time, status)` | 定时任务扫描到期 |
|
||||
| `as_order` | `(user_id, status)` | 用户订单列表 |
|
||||
| `as_order` | `order_no` UNIQUE | 订单号查询 |
|
||||
| `as_notification` | `(user_id, is_read)` | 未读通知数 |
|
||||
| `as_user_sub` | `(product_id, status)` | 商品可用合租槽 |
|
||||
| `as_sub_account` | `(product_id, status)` | 产品账号列表 |
|
||||
| `as_sub_product` | `(product_type, status)` | 广场/自营分类查询 |
|
||||
| `as_banner` | `(status, sort_order)` | 首页 Banner 展示 |
|
||||
| `as_banner` | `(start_time, end_time)` | 时间段筛选 |
|
||||
| `as_sub_product` | `(product_type, status)` | 商品分类查询 |
|
||||
| `as_banner` | `(status, sort_order)` | 首页 Banner |
|
||||
| `as_recharge` | `(user_id, status)` | 充值记录查询 |
|
||||
| `as_product_plan_rel` | `(product_id)` / `(plan_id)` | M:N 双向查询 |
|
||||
| `as_invite_config` | `(is_active)` | 读取当前规则 |
|
||||
|
||||
---
|
||||
|
||||
## 六、v2 → v3 变更记录
|
||||
## 六、版本变更记录
|
||||
|
||||
| 问题 | 类型 | 处理方式 | 结果 |
|
||||
|------|------|----------|------|
|
||||
| R1 充值流水缺失 | 🔴 严重 | 新增 `as_recharge` 表 | ✅ 已修复 |
|
||||
| R2 续费历史丢失 | 🔴 严重 | 移除 `as_user_sub_member` UNIQUE KEY;续费改为新建记录 | ✅ 已修复 |
|
||||
| I1 Banner 表缺失 | 🟠 重要 | 新增 `as_banner` 表 | ✅ 已修复 |
|
||||
| I2 M:N 逗号分隔 | 🟠 重要 | 新增 `as_product_plan_rel`;移除 `sub_plan_ids` 字段 | ✅ 已修复 |
|
||||
| I3 文档字段不一致 | 🟠 重要 | 本文档统一使用 v2 修订后字段名 | ✅ 已同步 |
|
||||
| L1 拼车凭据状态 | 🟡 轻微 | `as_user_sub_member.status` 增加值 4=等待车主录入凭据 | ✅ 已修复 |
|
||||
| L2 索引规划缺失 | 🟡 轻微 | 补充 12 项关键索引(见上表) | ✅ 已修复 |
|
||||
|
||||
**表数量变化:v2(23张)→ v3(27张,新增 as_recharge / as_banner / as_product_plan_rel)**
|
||||
| 版本 | 变更内容 |
|
||||
|------|----------|
|
||||
| v1 | 原版骨架(2023-08,有多项严重缺陷) |
|
||||
| v2 | 全面修订:修复15项缺陷,新增6张表(23张) |
|
||||
| v3 | 评审修订:修复7个问题,新增3张表(27张) |
|
||||
| **v4** | **决策确认:新增 `as_invite_config`(28张),Phase 1/2 范围明确** |
|
||||
|
||||
---
|
||||
|
||||
## 七、待决策项(需 Ami 确认)
|
||||
## 七、所有待决策项(已全部确认 ✅)
|
||||
|
||||
| # | 问题 | 选项 |
|
||||
| # | 问题 | 决策 |
|
||||
|---|------|------|
|
||||
| 1 | 付费方式一期支持哪些? | A) 仅余额(人工充值)B) 余额+支付宝 C) 三种都支持 |
|
||||
| 2 | 拼车广场是否需要审核流程? | A) 管理员审核 B) 自动上架 C) 仅自营,无拼车广场 |
|
||||
| 3 | 账号凭据展示方式? | A) 直接明文 B) 需二次验证 C) 限时展示(30s后隐藏) |
|
||||
| 4 | 邀请返现比例和条件? | 需定义:金额/比例,是否有上限 |
|
||||
| 5 | ~~sub_plan_ids 是否改关联表?~~ | ✅ v3 已改为关联表 `as_product_plan_rel` |
|
||||
| 6 | 提现功能是否一期上线? | A) 一期上 B) 二期(一期只充值不提现) |
|
||||
| 1 | 付费方式一期 | ✅ C - 余额+支付宝+微信(复用 pigx-pay) |
|
||||
| 2 | 拼车广场 | ✅ C - Phase 1 不做,Phase 2 追加 |
|
||||
| 3 | 凭据展示 | ✅ B - 二次验证(SMS OTP 或密码重输) |
|
||||
| 4 | 邀请返现 | ✅ 完全可配置(类型/金额/触发条件),无上限 |
|
||||
| 5 | M:N 关联 | ✅ v3 已改为 `as_product_plan_rel` |
|
||||
| 6 | 提现功能 | ✅ B - Phase 2,一期只充值+消费 |
|
||||
|
||||
**Phase D(系统设计)✅ 全部完成**
|
||||
|
||||
---
|
||||
|
||||
*最后更新:2026-02-17 · v3*
|
||||
*最后更新:2026-02-17 · v4 定稿*
|
||||
|
||||
108
DECISIONS.md
Normal file
108
DECISIONS.md
Normal file
@@ -0,0 +1,108 @@
|
||||
# iShare 设计决策记录
|
||||
|
||||
> 决策时间:2026-02-17
|
||||
> 阶段:Phase D(系统设计)
|
||||
|
||||
---
|
||||
|
||||
## 决策1:付费方式(一期)
|
||||
|
||||
**结论:C — 余额 + 支付宝 + 微信全支持**
|
||||
|
||||
**原因:** PigX 框架已集成支付功能,无需自行实现,接入成本低。
|
||||
|
||||
**影响:**
|
||||
- `as_order.pay_type`:1=余额, 2=支付宝, 3=微信 ✅(已支持)
|
||||
- `as_recharge.pay_type`:同上 ✅
|
||||
- 支付接入:复用 `pigx-pay` 模块,配置支付宝/微信商户信息即可
|
||||
|
||||
---
|
||||
|
||||
## 决策2:拼车广场
|
||||
|
||||
**结论:C — 一期不做广场,仅平台自营商品**
|
||||
|
||||
**原因:** 简化一期功能,降低开发复杂度;拼车广场作为 Phase 2 功能后续追加。
|
||||
|
||||
**影响:**
|
||||
- `as_sub_product.product_type=2`(个人发布)一期不启用
|
||||
- `as_user_sub_member.status=4`(等待车主录入凭据)一期不启用
|
||||
- `as_user_sub.host_user_id` 一期始终为平台管理员账号
|
||||
- 管理后台的"广场审核"模块 Phase 2 再开发
|
||||
|
||||
---
|
||||
|
||||
## 决策3:账号凭据展示方式
|
||||
|
||||
**结论:B — 需二次验证(短信/密码)才能查看**
|
||||
|
||||
**原因:** 安全优先,防止他人借用设备盗取账号密码。
|
||||
|
||||
**影响:**
|
||||
- 查看凭据接口前置二次验证步骤
|
||||
- 验证方式:短信验证码(发到注册手机号)or 账号密码重新输入
|
||||
- 实现:OTP 存 Redis(TTL 5min),无需额外数据库表
|
||||
- 凭据展示后建议前端自动隐藏倒计时(UX 优化,非强制)
|
||||
|
||||
---
|
||||
|
||||
## 决策4:邀请返现规则
|
||||
|
||||
**结论:完全可配置,无上限**
|
||||
|
||||
| 配置项 | 说明 |
|
||||
|--------|------|
|
||||
| 返现类型 | 可配置:固定金额 or 按比例(%) |
|
||||
| 返现值 | 数字,根据类型解释为金额或百分比 |
|
||||
| 触发条件 | 可配置:仅首次购买 or 每次购买 |
|
||||
| 最低订单金额 | 可配置(NULL=不限) |
|
||||
| 延迟发放天数 | 可配置(0=立即,N天后发放,防退款刷单) |
|
||||
| 返现上限 | 无上限 |
|
||||
|
||||
**影响:**
|
||||
- 新增 `as_invite_config` 表(管理后台可配置规则,同时启用一套)
|
||||
- `as_invite.reward_amount` 记录实际发放金额(创建时从当前有效规则快照)
|
||||
|
||||
---
|
||||
|
||||
## 决策5:`sub_plan_ids` 关联方式
|
||||
|
||||
**结论:改为关联表** ✅(已在 v3 执行)
|
||||
|
||||
---
|
||||
|
||||
## 决策6:提现功能
|
||||
|
||||
**结论:B — 二期再做,一期只充值+消费**
|
||||
|
||||
**原因:** 提现涉及实名认证、合规审核等复杂流程,MVP 阶段不上线。
|
||||
|
||||
**影响:**
|
||||
- `as_wallet_log.type=5`(提现)一期不启用
|
||||
- `as_wallet.frozen_amount` 字段保留,一期无写入场景
|
||||
- 管理后台"提现审核"模块 Phase 2 开发
|
||||
|
||||
---
|
||||
|
||||
## Phase 1 功能范围(最终确认)
|
||||
|
||||
### ✅ Phase 1 包含
|
||||
- 用户注册/登录(手机/邮箱)
|
||||
- 首页(Banner + 商品列表)
|
||||
- 平台自营商品(product_type=1)购买
|
||||
- 余额 + 支付宝 + 微信支付(复用 pigx-pay)
|
||||
- 我的订阅 + 账号凭据查看(二次验证)
|
||||
- 余额充值(支付宝/微信/人工充值)
|
||||
- 邀请推广 + 可配置返现
|
||||
- 系统通知(续费提醒/订单通知)
|
||||
- 管理后台:平台/商品/账号/订单/用户管理
|
||||
|
||||
### ❌ Phase 2 延期
|
||||
- 拼车广场(个人发布 + 审核流程)
|
||||
- 提现功能
|
||||
- 微信/社交登录
|
||||
- 小程序端
|
||||
|
||||
---
|
||||
|
||||
*决策人:Ami · 2026-02-17*
|
||||
59
db/ishare_schema_v4_delta.sql
Normal file
59
db/ishare_schema_v4_delta.sql
Normal file
@@ -0,0 +1,59 @@
|
||||
-- ============================================================
|
||||
-- iShare 数据库设计 v3 → v4 增量脚本
|
||||
-- 修订时间: 2026-02-17
|
||||
-- 依据: 决策确认(决策1-4,6)
|
||||
-- ============================================================
|
||||
|
||||
USE pigxx_app;
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- ============================================================
|
||||
-- 决策4: 新增 as_invite_config — 邀请返现规则配置表
|
||||
-- 返现类型/金额/触发条件均可配置,支持多套规则(启用一套)
|
||||
-- ============================================================
|
||||
CREATE TABLE IF NOT EXISTS `as_invite_config` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
`name` varchar(64) NOT NULL COMMENT '规则名称(管理后台展示用)',
|
||||
`reward_type` tinyint NOT NULL DEFAULT 1 COMMENT '返现类型: 1=固定金额, 2=按比例(%)',
|
||||
`reward_value` decimal(10,4) NOT NULL DEFAULT 0 COMMENT '返现值(type=1时为金额CNY; type=2时为百分比,如5.00=5%)',
|
||||
`trigger_type` tinyint NOT NULL DEFAULT 1 COMMENT '触发条件: 1=被邀请人首次购买, 2=被邀请人每次购买',
|
||||
`min_order_amount` decimal(10,2) DEFAULT NULL COMMENT '触发最低订单金额(NULL=不限)',
|
||||
`reward_delay_days` int NOT NULL DEFAULT 0 COMMENT '返现延迟天数(0=立即,N=N天后发放,防退款刷单)',
|
||||
`is_active` tinyint NOT NULL DEFAULT 0 COMMENT '是否启用: 0=禁用, 1=启用(同一时刻只有一条有效)',
|
||||
`remark` varchar(256) DEFAULT NULL COMMENT '规则备注',
|
||||
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_is_active` (`is_active`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='邀请返现规则配置表(可配置,启用一套)';
|
||||
|
||||
|
||||
-- ============================================================
|
||||
-- 决策2: Phase 1 无拼车广场
|
||||
-- as_user_sub_member.status=4(等待车主录入凭据)一期不启用
|
||||
-- 修改注释说明,字段值保留供 Phase 2 使用
|
||||
-- ============================================================
|
||||
ALTER TABLE `as_user_sub_member`
|
||||
MODIFY COLUMN `status` tinyint NOT NULL DEFAULT 0
|
||||
COMMENT '状态: 0=待激活, 1=使用中, 2=已到期, 3=已退订 | Phase2: 4=等待车主录入凭据(拼车广场)';
|
||||
|
||||
-- as_sub_product.product_type=2(个人发布)Phase 1 不启用
|
||||
-- 修改注释说明
|
||||
ALTER TABLE `as_sub_product`
|
||||
MODIFY COLUMN `product_type` tinyint NOT NULL DEFAULT 1
|
||||
COMMENT '产品类型: 1=自营(Phase1启用), 2=个人发布(Phase2拼车广场)';
|
||||
|
||||
|
||||
-- ============================================================
|
||||
-- 决策6: 提现功能 Phase 2
|
||||
-- as_wallet_log.type=5(提现)一期不启用,字段保留
|
||||
-- ============================================================
|
||||
ALTER TABLE `as_wallet_log`
|
||||
MODIFY COLUMN `type` tinyint NOT NULL
|
||||
COMMENT '流水类型: 1=充值, 2=消费, 3=退款, 4=邀请返现 | Phase2: 5=提现';
|
||||
|
||||
-- ============================================================
|
||||
-- END
|
||||
-- ============================================================
|
||||
Reference in New Issue
Block a user