# 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`