281 lines
10 KiB
Markdown
281 lines
10 KiB
Markdown
# iShare (AiShare) 数据库设计文档
|
||
|
||
> 模块: `as-app-server` — iShare 项目新增的核心业务模块(pigx-5.2 原版中不存在)
|
||
>
|
||
> 生成日期: 2026-02-16
|
||
|
||
---
|
||
|
||
## 一、数据库表清单
|
||
|
||
### 1. 核心业务表(as_* — iShare 新增)
|
||
|
||
| 表名 | 用途 |
|
||
|------|------|
|
||
| `as_platform` | 流媒体平台(Netflix、Spotify 等) |
|
||
| `as_platform_type` | 平台分类(视频、音乐等) |
|
||
| `as_sub_plan` | 订阅计划(如 Netflix 标准版、高级版) |
|
||
| `as_sub_payroll` | 付费方案(月付/季付/年付 + 价格) |
|
||
| `as_sub_account` | 订阅账号(实际的平台登录凭据) |
|
||
| `as_sub_product` | 订阅产品(面向用户的合租商品) |
|
||
| `as_sub_product_comment` | 产品评价 |
|
||
| `as_user_sub` | 用户订阅关系(用户参与的合租) |
|
||
|
||
### 2. App 基础表(app_* — 来自 pigx-app 模板,SQL 中有建表语句)
|
||
|
||
| 表名 | 用途 |
|
||
|------|------|
|
||
| `app_user` | App 用户 |
|
||
| `app_role` | App 角色 |
|
||
| `app_user_role` | 用户-角色关联 |
|
||
| `app_social_details` | 社交登录配置(微信小程序等) |
|
||
| `app_article` | 文章资讯 |
|
||
| `app_article_category` | 文章分类 |
|
||
| `app_article_collect` | 文章收藏 |
|
||
| `app_page` | 页面装修(首页/个人中心 JSON 配置) |
|
||
| `app_tabbar` | 底部导航栏 |
|
||
|
||
---
|
||
|
||
## 二、核心业务表详细结构
|
||
|
||
### 2.1 `as_platform` — 流媒体平台
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| `id` | bigint (PK, ASSIGN_ID) | 主键 |
|
||
| `platform_name` | varchar | 平台名称 |
|
||
| `platform_type` | int | 平台类型(关联 as_platform_type),0=全部 |
|
||
| `icon` | varchar | 应用图标 URL |
|
||
| `company` | varchar | 所属公司 |
|
||
| `website` | varchar | 平台官网 |
|
||
| `sort_order` | varchar | 排序 |
|
||
| `product_code` | varchar | 产品编码(格式: 类型_名称_id) |
|
||
|
||
### 2.2 `as_platform_type` — 平台类型
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| `id` | bigint (PK, ASSIGN_ID) | 主键 |
|
||
| `name` | varchar | 类型名称(如:视频、音乐、AI) |
|
||
| `platform_type` | int | 类型编号,0=全部 |
|
||
| `sort_order` | varchar | 排序 |
|
||
|
||
### 2.3 `as_sub_plan` — 订阅计划
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| `id` | bigint (PK, ASSIGN_ID) | 计划 ID |
|
||
| `name` | varchar | 计划名称(如:标准版、高级版) |
|
||
| `platform_id` | varchar | 所属平台 ID |
|
||
| `capacity` | varchar | 用户容量(可共享席位数) |
|
||
| `remark` | varchar | 备注 |
|
||
| `sort_order` | varchar | 排序 |
|
||
|
||
### 2.4 `as_sub_payroll` — 付费方案
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| `id` | bigint (PK, ASSIGN_ID) | 主键 |
|
||
| `sub_plans` | bigint | 关联的订阅计划 ID |
|
||
| `platform_id` | int | 平台 ID |
|
||
| `payroll` | int | 付费周期:1=月付, 2=季付, 3=年付 |
|
||
| `price` | decimal | 价格 |
|
||
| `currency` | varchar | 货币(CNY/USD 等) |
|
||
| `region` | varchar | 地区 |
|
||
| `product_code` | varchar | 产品编码 |
|
||
|
||
### 2.5 `as_sub_account` — 订阅账号
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| `id` | bigint (PK, ASSIGN_ID) | 主键 |
|
||
| `product_id` | bigint | 关联产品 ID |
|
||
| `sub_plan_id` | int | 订阅计划 ID |
|
||
| `user_id` | int | 账号持有者(主用户) |
|
||
| `sub_payroll_id` | int | 付费方案 ID |
|
||
| `region` | varchar | 地区 |
|
||
| `share_type` | int | 分享类型 |
|
||
| `account_type` | int | 账号类型 |
|
||
| `renew_date` | datetime | 续费日期 |
|
||
| `platform_id` | int | 平台 ID |
|
||
| `account_name` | varchar | 平台登录用户名 |
|
||
| `account_passwd` | varchar | 平台登录密码 |
|
||
| `passwd_salt` | int | 密码盐值 |
|
||
|
||
### 2.6 `as_sub_product` — 订阅产品(合租商品)
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| `id` | bigint (PK, ASSIGN_ID) | 主键 |
|
||
| `star` | int | 综合评分 |
|
||
| `title` | varchar | 产品标题 |
|
||
| `description` | varchar | 描述 |
|
||
| `tags` | varchar | 标签(逗号分隔) |
|
||
| `sub_plan_ids` | varchar | 关联的订阅计划 ID 列表 |
|
||
| `amount` | decimal | 总价 |
|
||
| `user_id` | bigint | 发布者用户 ID |
|
||
| `product_type` | bigint | 产品类型:1=自营, 2=个人 |
|
||
| `create_time` | datetime | 创建时间 |
|
||
| `update_time` | datetime | 更新时间 |
|
||
| `product_code` | varchar | 产品编码(类型_名称_id) |
|
||
| `sub_type` | bigint | 订阅类型:1=单品, 2=多品(组合) |
|
||
|
||
### 2.7 `as_sub_product_comment` — 产品评价
|
||
|
||
> 注: 实体类 `@TableName` 误标为 `as_sub_product`,实际应为 `as_sub_product_comment`
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| `id` | bigint (PK, ASSIGN_ID) | 主键 |
|
||
| `star` | int | 评分 |
|
||
| `comment` | varchar | 评价内容 |
|
||
| `user_id` | bigint | 评价用户 |
|
||
| `product_id` | bigint | 关联产品 ID |
|
||
| `create_time` | datetime | 创建时间 |
|
||
| `update_time` | datetime | 更新时间 |
|
||
|
||
### 2.8 `as_user_sub` — 用户订阅关系
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| `id` | bigint (PK, ASSIGN_ID) | 主键 |
|
||
| `platform_id` | int | 平台 ID |
|
||
| `capacity` | int | 总容量(席位数) |
|
||
| `capacity_loaded` | int | 已占用容量 |
|
||
| `plan_id` | int | 订阅计划 ID |
|
||
| `user_id` | int | 用户 ID |
|
||
| `main_account` | int | 主账号 ID(关联 as_sub_account) |
|
||
| `region` | varchar | 地区 |
|
||
| `target_ip` | varchar | 目标 IP(用于区域限制) |
|
||
| `remark` | int | 备注 |
|
||
|
||
---
|
||
|
||
## 三、App 基础表详细结构
|
||
|
||
### 3.1 `app_user` — App 用户
|
||
|
||
| 字段 | 类型 | 约束 | 说明 |
|
||
|------|------|------|------|
|
||
| `user_id` | bigint | PK | 用户 ID |
|
||
| `username` | varchar(255) | | 用户名 |
|
||
| `password` | varchar(255) | | 密码(BCrypt) |
|
||
| `salt` | varchar(255) | | 盐值 |
|
||
| `phone` | varchar(20) | | 手机号 |
|
||
| `avatar` | varchar(255) | | 头像 |
|
||
| `nickname` | varchar(64) | | 昵称 |
|
||
| `name` | varchar(64) | | 姓名 |
|
||
| `email` | varchar(128) | | 邮箱 |
|
||
| `wx_openid` | varchar(32) | | 微信 OpenID |
|
||
| `lock_flag` | char(1) | 默认 '0' | 锁定状态 |
|
||
| `del_flag` | char(1) | 默认 '0' | 删除标志 |
|
||
| `tenant_id` | bigint | NOT NULL | 租户 ID |
|
||
| `create_by/update_by` | varchar(64) | | 操作人 |
|
||
| `create_time/update_time` | datetime | | 时间戳 |
|
||
| `last_modified_time` | datetime | | 最后密码修改时间 |
|
||
|
||
### 3.2 `app_role` — 角色表
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| `role_id` | bigint (PK) | 角色 ID |
|
||
| `role_name` | varchar(64) | 角色名 |
|
||
| `role_code` | varchar(64) | 角色编码(如 APP_USER) |
|
||
| `role_desc` | varchar(255) | 描述 |
|
||
| `tenant_id` | bigint | 租户 ID |
|
||
|
||
### 3.3 `app_user_role` — 用户角色关联
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| `user_id` | bigint (PK) | 用户 ID |
|
||
| `role_id` | bigint (PK) | 角色 ID |
|
||
|
||
### 3.4 其他 App 表
|
||
|
||
- **`app_social_details`**: 社交登录配置(type/app_id/app_secret/redirect_url)
|
||
- **`app_article`**: 文章(title/intro/content/author/visit/sort/cid→分类)
|
||
- **`app_article_category`**: 文章分类(name/sort/is_show)
|
||
- **`app_article_collect`**: 文章收藏(user_id/article_id)
|
||
- **`app_page`**: 页面装修(page_type/page_name/page_data JSON)
|
||
- **`app_tabbar`**: 底部导航(name/selected/unselected 图标/link JSON)
|
||
|
||
所有 app_* 表均包含 `del_flag`, `create_by`, `update_by`, `create_time`, `update_time`, `tenant_id` 公共字段。
|
||
|
||
---
|
||
|
||
## 四、ER 关系
|
||
|
||
```
|
||
as_platform_type (1) ──< (N) as_platform [platform_type]
|
||
as_platform (1) ──< (N) as_sub_plan [platform_id]
|
||
as_sub_plan (1) ──< (N) as_sub_payroll [sub_plans]
|
||
as_sub_plan (N) >──< (N) as_sub_product [sub_plan_ids, 逗号分隔]
|
||
as_sub_product (1) ──< (N) as_sub_product_comment [product_id]
|
||
as_sub_product (1) ──< (N) as_sub_account [product_id]
|
||
as_sub_plan (1) ──< (N) as_sub_account [sub_plan_id]
|
||
as_sub_payroll (1) ──< (N) as_sub_account [sub_payroll_id]
|
||
as_sub_plan (1) ──< (N) as_user_sub [plan_id]
|
||
as_sub_account (1) ──< (N) as_user_sub [main_account]
|
||
|
||
app_user (1) ──< (N) as_sub_product [user_id — 产品发布者]
|
||
app_user (1) ──< (N) as_sub_account [user_id — 账号持有者]
|
||
app_user (1) ──< (N) as_user_sub [user_id — 订阅参与者]
|
||
app_user (1) ──< (N) as_sub_product_comment [user_id]
|
||
|
||
app_user (N) >──< (N) app_role [通过 app_user_role]
|
||
app_article_category (1) ──< (N) app_article [cid]
|
||
app_user (1) ──< (N) app_article_collect [user_id]
|
||
app_article (1) ──< (N) app_article_collect [article_id]
|
||
```
|
||
|
||
---
|
||
|
||
## 五、核心业务模型总结
|
||
|
||
iShare 是一个 **流媒体账号合租平台**,核心业务流程:
|
||
|
||
```
|
||
平台类型 (as_platform_type)
|
||
└── 平台 (as_platform): Netflix, Spotify, ChatGPT...
|
||
└── 订阅计划 (as_sub_plan): 标准版、高级版(含容量/席位数)
|
||
└── 付费方案 (as_sub_payroll): 月/季/年付 + 价格
|
||
└── 订阅账号 (as_sub_account): 实际登录凭据
|
||
|
||
订阅产品 (as_sub_product): 面向用户的合租商品
|
||
├── 关联多个订阅计划 (sub_plan_ids)
|
||
├── 产品类型: 自营(1) / 个人(2)
|
||
├── 订阅类型: 单品(1) / 多品组合(2)
|
||
└── 产品评价 (as_sub_product_comment)
|
||
|
||
用户订阅 (as_user_sub): 用户参与合租
|
||
├── 关联平台、计划、主账号
|
||
└── 容量管理 (capacity / capacity_loaded)
|
||
```
|
||
|
||
### 关键业务概念
|
||
|
||
1. **平台 (Platform)**: 流媒体服务商,按类型分类
|
||
2. **订阅计划 (SubPlan)**: 平台的会员等级,定义席位容量
|
||
3. **付费方案 (SubPayroll)**: 计划的定价策略(支持多地区多货币)
|
||
4. **订阅账号 (SubAccount)**: 实际的平台账号密码,由主用户持有
|
||
5. **订阅产品 (SubProduct)**: 合租商品,可组合多个计划,支持自营/个人发布
|
||
6. **用户订阅 (UserSub)**: 用户加入合租的记录,跟踪席位占用
|
||
7. **产品评价 (SubProductComment)**: 用户对合租产品的评分和评论
|
||
|
||
### 代码注意事项
|
||
|
||
⚠️ `AsSubProductComment` 实体类的 `@TableName("as_sub_product")` 可能是 bug,应为 `as_sub_product_comment`。
|
||
|
||
---
|
||
|
||
## 六、SQL 建表语句
|
||
|
||
核心业务表(as_*)**没有在 SQL 脚本中找到建表语句**,仅在 Java 实体类中定义。这些表可能通过以下方式创建:
|
||
- MyBatis-Plus 自动建表
|
||
- 手动在数据库中创建
|
||
- 尚未提交的 migration 脚本
|
||
|
||
App 基础表的完整建表语句见: `db/999pigxx_app.sql`
|