feat: initial iShare project code

This commit is contained in:
purovps
2026-02-16 23:20:59 +08:00
parent 8c83a6fd46
commit 6f270a972e
1910 changed files with 218015 additions and 0 deletions

280
DATABASE_DESIGN.md Normal file
View File

@@ -0,0 +1,280 @@
# 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`