Files
pigx_ishare/DATABASE_DESIGN.md
2026-02-16 23:20:59 +08:00

10 KiB
Raw Blame History

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_type0=全部
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