-- ============================================================
-- iShare (AiShare) 完整建表脚本
-- 生成时间: 2026-02-16
-- 用途: iShare 流媒体账号合租平台 - 全部 17 张表
-- 数据库: pigxx_app
-- 依赖顺序: 基础表 → 业务表 → 关联表
-- ============================================================

USE pigxx_app;
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ============================================================
-- 一、App 基础表（9 张）
-- ============================================================

-- 1. app_user — App 用户
CREATE TABLE IF NOT EXISTS `app_user` (
  `user_id` bigint NOT NULL COMMENT '用户ID',
  `username` varchar(255) DEFAULT NULL COMMENT '用户名',
  `password` varchar(255) DEFAULT NULL COMMENT '密码（BCrypt）',
  `salt` varchar(255) DEFAULT NULL COMMENT '盐值',
  `phone` varchar(20) DEFAULT NULL COMMENT '手机号码',
  `avatar` varchar(255) DEFAULT NULL COMMENT '头像',
  `nickname` varchar(64) DEFAULT NULL COMMENT '昵称',
  `name` varchar(64) DEFAULT NULL COMMENT '姓名',
  `email` varchar(128) DEFAULT NULL COMMENT '邮箱',
  `wx_openid` varchar(32) DEFAULT NULL COMMENT '微信登录openId',
  `lock_flag` char(1) DEFAULT '0' COMMENT '锁定状态: 0=正常, 1=锁定',
  `del_flag` char(1) DEFAULT '0' COMMENT '删除标志: 0=正常, 1=删除',
  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户ID',
  `create_by` varchar(64) NOT NULL DEFAULT ' ' COMMENT '创建人',
  `update_by` varchar(64) NOT NULL DEFAULT ' ' COMMENT '修改人',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `last_modified_time` datetime DEFAULT NULL COMMENT '最后密码修改时间',
  PRIMARY KEY (`user_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='App用户表';

-- 2. app_role — 角色表
CREATE TABLE IF NOT EXISTS `app_role` (
  `role_id` bigint NOT NULL COMMENT '角色ID',
  `role_name` varchar(64) DEFAULT NULL COMMENT '角色名称',
  `role_code` varchar(64) DEFAULT NULL COMMENT '角色编码',
  `role_desc` varchar(255) DEFAULT NULL COMMENT '角色描述',
  `del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
  `tenant_id` bigint DEFAULT NULL COMMENT '租户ID',
  `create_by` varchar(64) NOT NULL DEFAULT ' ' COMMENT '创建人',
  `update_by` varchar(64) NOT NULL DEFAULT ' ' COMMENT '修改人',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`role_id`) USING BTREE,
  KEY `idx_role_code` (`role_code`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='App角色表';

-- 3. app_user_role — 用户角色关联
CREATE TABLE IF NOT EXISTS `app_user_role` (
  `user_id` bigint NOT NULL COMMENT '用户ID',
  `role_id` bigint NOT NULL COMMENT '角色ID',
  PRIMARY KEY (`user_id`, `role_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户角色关联表';

-- 4. app_social_details — 社交登录配置
CREATE TABLE IF NOT EXISTS `app_social_details` (
  `id` bigint NOT NULL COMMENT '主键',
  `type` varchar(16) DEFAULT NULL COMMENT '社交类型',
  `remark` varchar(64) DEFAULT NULL COMMENT '备注',
  `app_id` varchar(64) DEFAULT NULL COMMENT '应用ID',
  `app_secret` varchar(64) DEFAULT NULL COMMENT '应用密钥',
  `redirect_url` varchar(128) DEFAULT NULL COMMENT '重定向URL',
  `ext` varchar(255) DEFAULT NULL COMMENT '拓展字段',
  `del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
  `create_by` varchar(64) NOT NULL DEFAULT ' ' COMMENT '创建人',
  `update_by` varchar(64) NOT NULL DEFAULT ' ' COMMENT '修改人',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='社交登录配置表';

-- 5. app_article_category — 文章分类
CREATE TABLE IF NOT EXISTS `app_article_category` (
  `id` bigint UNSIGNED NOT NULL COMMENT '主键',
  `name` varchar(60) NOT NULL DEFAULT '' COMMENT '分类名称',
  `sort` smallint UNSIGNED NOT NULL DEFAULT 50 COMMENT '排序',
  `is_show` tinyint UNSIGNED NOT NULL DEFAULT 1 COMMENT '是否显示: 0=否, 1=是',
  `del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
  `tenant_id` bigint DEFAULT NULL COMMENT '租户ID',
  `create_by` varchar(32) DEFAULT '0' COMMENT '创建人',
  `update_by` varchar(32) DEFAULT NULL COMMENT '修改人',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文章分类表';

-- 6. app_article — 文章资讯
CREATE TABLE IF NOT EXISTS `app_article` (
  `id` bigint NOT NULL COMMENT '主键',
  `cid` bigint NOT NULL COMMENT '分类ID',
  `title` varchar(200) NOT NULL DEFAULT '' COMMENT '标题',
  `intro` varchar(200) NOT NULL DEFAULT '' COMMENT '简介',
  `summary` varchar(200) DEFAULT '' COMMENT '摘要',
  `image` varchar(200) NOT NULL DEFAULT '' COMMENT '封面图片',
  `content` text COMMENT '内容',
  `author` varchar(32) NOT NULL DEFAULT '' COMMENT '作者',
  `visit` int UNSIGNED NOT NULL DEFAULT 0 COMMENT '浏览量',
  `sort` int UNSIGNED NOT NULL DEFAULT 50 COMMENT '排序',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `tenant_id` bigint DEFAULT NULL COMMENT '租户ID',
  `create_by` varchar(32) NOT NULL COMMENT '创建人',
  `update_by` varchar(32) DEFAULT NULL COMMENT '修改人',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_cid` (`cid`) USING BTREE COMMENT '分类索引'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文章资讯表';

-- 7. app_article_collect — 文章收藏
CREATE TABLE IF NOT EXISTS `app_article_collect` (
  `id` bigint UNSIGNED NOT NULL COMMENT '主键',
  `user_id` bigint UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户ID',
  `article_id` bigint UNSIGNED NOT NULL DEFAULT 0 COMMENT '文章ID',
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志',
  `tenant_id` bigint DEFAULT NULL COMMENT '租户ID',
  `create_by` varchar(32) DEFAULT NULL COMMENT '创建人',
  `update_by` varchar(32) DEFAULT NULL COMMENT '修改人',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_user_id` (`user_id`) USING BTREE,
  KEY `idx_article_id` (`article_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文章收藏表';

-- 8. app_page — 页面装修
CREATE TABLE IF NOT EXISTS `app_page` (
  `id` bigint UNSIGNED NOT NULL COMMENT '主键',
  `page_type` tinyint UNSIGNED NOT NULL DEFAULT 10 COMMENT '页面类型',
  `page_name` varchar(100) NOT NULL DEFAULT '' COMMENT '页面名称',
  `page_data` text COMMENT '页面数据（JSON）',
  `del_flag` char(1) DEFAULT NULL COMMENT '删除标志',
  `tenant_id` bigint DEFAULT NULL COMMENT '租户ID',
  `create_by` varchar(32) DEFAULT NULL COMMENT '创建人',
  `update_by` varchar(32) DEFAULT NULL COMMENT '修改人',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='页面装修表';

-- 9. app_tabbar — 底部导航栏
CREATE TABLE IF NOT EXISTS `app_tabbar` (
  `id` bigint UNSIGNED NOT NULL COMMENT '主键',
  `name` varchar(20) NOT NULL DEFAULT '' COMMENT '导航名称',
  `selected` varchar(200) NOT NULL DEFAULT '' COMMENT '选中图标',
  `unselected` varchar(200) NOT NULL DEFAULT '' COMMENT '未选图标',
  `link` varchar(200) NOT NULL COMMENT '链接地址（JSON）',
  `del_flag` char(1) DEFAULT NULL COMMENT '删除标志',
  `tenant_id` bigint DEFAULT NULL COMMENT '租户ID',
  `create_by` varchar(32) DEFAULT NULL COMMENT '创建人',
  `update_by` varchar(32) DEFAULT NULL COMMENT '修改人',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='底部导航栏表';

-- ============================================================
-- 二、iShare 核心业务表（8 张）
-- ============================================================

-- 10. as_platform_type — 平台类型（基础字典表）
CREATE TABLE IF NOT EXISTS `as_platform_type` (
  `id` bigint NOT NULL COMMENT '主键',
  `name` varchar(64) NOT NULL COMMENT '类型名称（视频、音乐、AI等）',
  `platform_type` int DEFAULT 0 COMMENT '类型编号，0=全部',
  `sort_order` varchar(32) DEFAULT NULL COMMENT '排序',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_platform_type` (`platform_type`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='平台类型表';

-- 11. as_platform — 流媒体平台
CREATE TABLE IF NOT EXISTS `as_platform` (
  `id` bigint NOT NULL COMMENT '主键',
  `platform_name` varchar(128) NOT NULL COMMENT '平台名称',
  `platform_type` int DEFAULT 0 COMMENT '平台类型（关联as_platform_type），0=全部',
  `icon` varchar(512) DEFAULT NULL COMMENT '应用图标URL',
  `company` varchar(128) DEFAULT NULL COMMENT '所属公司',
  `website` varchar(256) DEFAULT NULL COMMENT '平台官网',
  `sort_order` varchar(32) DEFAULT NULL COMMENT '排序',
  `product_code` varchar(64) DEFAULT NULL COMMENT '产品编码（类型_名称_id）',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_platform_type` (`platform_type`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='流媒体平台表';

-- 12. as_sub_plan — 订阅计划
CREATE TABLE IF NOT EXISTS `as_sub_plan` (
  `id` bigint NOT NULL COMMENT '计划ID',
  `name` varchar(128) NOT NULL COMMENT '计划名称（标准版、高级版等）',
  `platform_id` varchar(64) DEFAULT NULL COMMENT '所属平台ID',
  `capacity` varchar(16) DEFAULT NULL COMMENT '用户容量（可共享席位数）',
  `remark` varchar(256) DEFAULT NULL COMMENT '备注',
  `sort_order` varchar(32) DEFAULT NULL COMMENT '排序',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_platform_id` (`platform_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订阅计划表';

-- 13. as_sub_payroll — 付费方案
CREATE TABLE IF NOT EXISTS `as_sub_payroll` (
  `id` bigint NOT NULL COMMENT '主键',
  `sub_plans` bigint DEFAULT NULL COMMENT '关联的订阅计划ID',
  `platform_id` int DEFAULT NULL COMMENT '平台ID',
  `payroll` int DEFAULT NULL COMMENT '付费周期: 1=月付, 2=季付, 3=年付',
  `price` decimal(10,2) DEFAULT NULL COMMENT '价格',
  `currency` varchar(16) DEFAULT NULL COMMENT '货币（CNY/USD等）',
  `region` varchar(64) DEFAULT NULL COMMENT '地区',
  `product_code` varchar(64) DEFAULT NULL COMMENT '产品编码',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_sub_plans` (`sub_plans`) USING BTREE,
  KEY `idx_platform_id` (`platform_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='付费方案表';

-- 14. as_sub_product — 订阅产品（合租商品）
CREATE TABLE IF NOT EXISTS `as_sub_product` (
  `id` bigint NOT NULL COMMENT '主键',
  `title` varchar(256) NOT NULL COMMENT '产品标题',
  `description` varchar(1024) DEFAULT NULL COMMENT '描述',
  `tags` varchar(256) DEFAULT NULL COMMENT '标签（逗号分隔）',
  `star` int DEFAULT NULL COMMENT '综合评分',
  `sub_plan_ids` varchar(256) DEFAULT NULL COMMENT '关联的订阅计划ID列表',
  `amount` decimal(10,2) DEFAULT NULL COMMENT '总价',
  `user_id` bigint DEFAULT NULL COMMENT '发布者用户ID',
  `product_type` bigint DEFAULT NULL COMMENT '产品类型: 1=自营, 2=个人',
  `sub_type` bigint DEFAULT NULL COMMENT '订阅类型: 1=单品, 2=多品组合',
  `product_code` varchar(64) DEFAULT NULL COMMENT '产品编码（类型_名称_id）',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_user_id` (`user_id`) USING BTREE,
  KEY `idx_product_type` (`product_type`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订阅产品表（合租商品）';

-- 15. as_sub_product_comment — 产品评价
CREATE TABLE IF NOT EXISTS `as_sub_product_comment` (
  `id` bigint NOT NULL COMMENT '主键',
  `star` int DEFAULT NULL COMMENT '评分',
  `comment` varchar(1024) DEFAULT NULL COMMENT '评价内容',
  `user_id` bigint DEFAULT NULL COMMENT '评价用户ID',
  `product_id` bigint DEFAULT NULL COMMENT '关联产品ID',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_product_id` (`product_id`) USING BTREE,
  KEY `idx_user_id` (`user_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='产品评价表';

-- 16. as_sub_account — 订阅账号
CREATE TABLE IF NOT EXISTS `as_sub_account` (
  `id` bigint NOT NULL COMMENT '主键',
  `product_id` bigint DEFAULT NULL COMMENT '关联产品ID',
  `sub_plan_id` int DEFAULT NULL COMMENT '订阅计划ID',
  `user_id` int DEFAULT NULL COMMENT '账号持有者（主用户）',
  `sub_payroll_id` int DEFAULT NULL COMMENT '付费方案ID',
  `region` varchar(64) DEFAULT NULL COMMENT '地区',
  `share_type` int DEFAULT NULL COMMENT '分享类型',
  `account_type` int DEFAULT NULL COMMENT '账号类型',
  `renew_date` datetime DEFAULT NULL COMMENT '续费日期',
  `platform_id` int DEFAULT NULL COMMENT '平台ID',
  `account_name` varchar(256) DEFAULT NULL COMMENT '平台登录用户名',
  `account_passwd` varchar(256) DEFAULT NULL COMMENT '平台登录密码',
  `passwd_salt` int DEFAULT NULL COMMENT '密码盐值',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_product_id` (`product_id`) USING BTREE,
  KEY `idx_user_id` (`user_id`) USING BTREE,
  KEY `idx_platform_id` (`platform_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订阅账号表';

-- 17. as_user_sub — 用户订阅关系
CREATE TABLE IF NOT EXISTS `as_user_sub` (
  `id` bigint NOT NULL COMMENT '主键',
  `platform_id` int DEFAULT NULL COMMENT '平台ID',
  `capacity` int DEFAULT NULL COMMENT '总容量（席位数）',
  `capacity_loaded` int DEFAULT NULL COMMENT '已占用容量',
  `plan_id` int DEFAULT NULL COMMENT '订阅计划ID',
  `user_id` int DEFAULT NULL COMMENT '用户ID',
  `main_account` int DEFAULT NULL COMMENT '主账号ID（关联as_sub_account）',
  `region` varchar(64) DEFAULT NULL COMMENT '地区',
  `target_ip` varchar(64) DEFAULT NULL COMMENT '目标IP（区域限制用）',
  `remark` int DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_user_id` (`user_id`) USING BTREE,
  KEY `idx_plan_id` (`plan_id`) USING BTREE,
  KEY `idx_main_account` (`main_account`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户订阅关系表';

SET FOREIGN_KEY_CHECKS = 1;
