626 lines
44 KiB
SQL
626 lines
44 KiB
SQL
-- zt-closet 数据库全量初始化脚本(单一迁移版本)。
|
||
--
|
||
-- 维护约定:
|
||
-- 1. 项目当前无线上数据,所有结构变更统一合并进本文件,不再新增增量迁移(ALTER / UPDATE)。
|
||
-- 2. 新增字段或索引时,直接修改下方对应表的 CREATE TABLE 语句,并同步 000001_init.down.sql。
|
||
-- 3. 执行前需保证目标库为空(脚本只建表,不建库);迁移由 cmd/migrate 手动触发,服务启动不会自动迁移:
|
||
-- go run ./cmd/migrate up
|
||
-- 4. 迁移 DSN 已开启 multiStatements,本文件的多条语句可一次性执行。
|
||
-- 5. 字段与索引以 internal/mysqlmodel/ 的 GORM 模型为准,ER 图见 design/zt-closet-er.drawio。
|
||
|
||
-- ============================================================
|
||
-- 一、用户
|
||
-- ============================================================
|
||
CREATE TABLE `users` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`user_uuid` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '用户UUID',
|
||
`wx_open_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '微信openid',
|
||
`username` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '用户名',
|
||
`avatar` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '头像存储位置',
|
||
`sex` TINYINT NOT NULL DEFAULT 0 COMMENT '性别 1=男 2=女',
|
||
`birth_day` BIGINT NOT NULL DEFAULT 0 COMMENT '生日',
|
||
`phone` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '手机号',
|
||
`is_new_user` TINYINT NOT NULL DEFAULT 0 COMMENT '是否新用户 0=否 1=是',
|
||
`status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态 1=正常 2=临时禁用 3=永久禁用 4=已注销',
|
||
`ban_reason` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '封禁原因',
|
||
`ban_start` BIGINT NOT NULL DEFAULT 0 COMMENT '封禁开始时间',
|
||
`ban_expire` BIGINT NOT NULL DEFAULT 0 COMMENT '封禁到期时间',
|
||
`vip_type` TINYINT NOT NULL DEFAULT 0 COMMENT 'VIP类型 1=非会员 2=月度会员 3=年度会员 4=体验会员',
|
||
`vip_start` BIGINT NOT NULL DEFAULT 0 COMMENT 'VIP开始时间',
|
||
`vip_expire` BIGINT NOT NULL DEFAULT 0 COMMENT 'VIP到期时间',
|
||
`last_login_time` BIGINT NOT NULL DEFAULT 0 COMMENT '最近登录时间',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_user_wx_open_id` (`wx_open_id`),
|
||
KEY `idx_users_user_uuid` (`user_uuid`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '用户表';
|
||
|
||
-- ============================================================
|
||
-- 二、衣物
|
||
-- ============================================================
|
||
CREATE TABLE `clothes` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`clothes_uuid` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '衣物UUID',
|
||
`user_id` BIGINT NOT NULL DEFAULT 0 COMMENT '所属用户ID',
|
||
`category_main` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '衣物大类 上装/下装/连衣裙/外套/鞋/配饰',
|
||
`category_sub` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '衣物小类 T恤/牛仔裤/运动鞋等',
|
||
`style` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '风格',
|
||
`color` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '主颜色',
|
||
`color_sub` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '副颜色',
|
||
`thickness` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '厚度',
|
||
`version` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '版型 宽松/修身/阔腿/紧身/常规合身',
|
||
`material` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '材质 牛仔布/针织/皮质/纯棉/羊毛等',
|
||
`pattern` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '花纹',
|
||
`sleeve_type` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '袖型',
|
||
`clothes_type` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '衣长类型 短款/常规/中长/长款',
|
||
`neckline_type` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '领型',
|
||
`formality` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '正式程度 1-5',
|
||
`occasions` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '适用场合',
|
||
`visual_impact` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '视觉冲击力 1-5',
|
||
`name` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '名称',
|
||
`remark` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '备注',
|
||
`processed_image` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '处理后图片存储位置 相对路径',
|
||
`original_image_path` VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '待处理原图本地路径(任务恢复用)',
|
||
`image_size` BIGINT NOT NULL DEFAULT 0 COMMENT '图片大小 单位:kb',
|
||
`image_process_status` TINYINT NOT NULL DEFAULT 0 COMMENT '处理状态 1=抠图中 2=分类中 3=排队中 4=成功 5=失败',
|
||
`fail_reason` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '失败原因',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_clothes_uuid` (`clothes_uuid`),
|
||
KEY `idx_clothes_user_category` (`user_id`, `category_main`),
|
||
KEY `idx_clothes_user_status` (`user_id`, `image_process_status`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '衣物表';
|
||
|
||
-- ============================================================
|
||
-- 三、穿搭
|
||
-- ============================================================
|
||
CREATE TABLE `outfits` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`outfit_uuid` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '穿搭UUID',
|
||
`user_id` BIGINT NOT NULL DEFAULT 0 COMMENT '所属用户ID',
|
||
`outfit_name` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '穿搭名称',
|
||
`outfit_desc` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '穿搭描述',
|
||
`scene` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '适合场景',
|
||
`source` TINYINT NOT NULL DEFAULT 0 COMMENT '来源 1=用户创建 2=AI推荐',
|
||
`is_public` TINYINT NOT NULL DEFAULT 0 COMMENT '是否公开 1=不公开 2=公开',
|
||
`audit_status` TINYINT NOT NULL DEFAULT 0 COMMENT '审核状态 1=待审核 2=审核通过 3=审核不通过',
|
||
`status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态 1=正常 2=封禁 3=待用户保存',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_outfits_uuid` (`outfit_uuid`),
|
||
KEY `idx_outfits_user_status` (`user_id`, `status`),
|
||
KEY `idx_outfits_public` (`is_public`, `audit_status`),
|
||
-- 供「未保存 AI 穿搭」清理任务使用:
|
||
-- WHERE deleted_at = 0 AND source = 2 AND status = 3 AND created_at < ?
|
||
KEY `idx_outfits_source_status_created` (`source`, `status`, `created_at`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '穿搭表';
|
||
|
||
CREATE TABLE `outfit_items` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`outfit_id` BIGINT NOT NULL DEFAULT 0 COMMENT '穿搭ID',
|
||
`clothes_id` BIGINT NOT NULL DEFAULT 0 COMMENT '衣物ID',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_outfit_items_outfit` (`outfit_id`),
|
||
KEY `idx_outfit_items_clothes` (`clothes_id`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '穿搭明细表';
|
||
|
||
-- ============================================================
|
||
-- 四、衣柜分享
|
||
-- ============================================================
|
||
CREATE TABLE `closet_shares` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`share_uuid` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '分享UUID',
|
||
`user_id` BIGINT NOT NULL DEFAULT 0 COMMENT '所属用户ID',
|
||
`share_type` TINYINT NOT NULL DEFAULT 0 COMMENT '分享类型 1=部分衣物分享 2=全量快照分享',
|
||
`expire_time` BIGINT NOT NULL DEFAULT 0 COMMENT '过期时间',
|
||
`status` TINYINT NOT NULL DEFAULT 0 COMMENT '分享状态 1=正常 2=用户取消 3=已过期 4=管理员封禁',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_closet_shares_uuid` (`share_uuid`),
|
||
KEY `idx_closet_shares_user_status` (`user_id`, `status`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '衣柜分享表';
|
||
|
||
CREATE TABLE `closet_share_items` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`share_uuid` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '分享UUID',
|
||
`clothes_id` BIGINT NOT NULL DEFAULT 0 COMMENT '衣物ID',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_closet_share_items_share` (`share_uuid`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '衣柜分享明细表';
|
||
|
||
-- 衣柜分享接收人关联表:记录"谁收到了谁的分享"(访问即视为收到,一对多、幂等)。
|
||
CREATE TABLE `closet_share_receivers` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`share_uuid` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '分享UUID',
|
||
`receiver_user_id` BIGINT NOT NULL DEFAULT 0 COMMENT '接收人用户ID',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_closet_share_receiver` (`share_uuid`, `receiver_user_id`),
|
||
KEY `idx_closet_share_receivers_user` (`receiver_user_id`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '衣柜分享接收人关联表';
|
||
|
||
-- ============================================================
|
||
-- 五、穿搭分享
|
||
-- ============================================================
|
||
CREATE TABLE `outfit_shares` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`share_uuid` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '分享UUID',
|
||
`user_id` BIGINT NOT NULL DEFAULT 0 COMMENT '所属用户ID',
|
||
`outfit_id` BIGINT NOT NULL DEFAULT 0 COMMENT '穿搭ID',
|
||
`status` TINYINT NOT NULL DEFAULT 0 COMMENT '分享状态 1=正常 2=用户取消',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_outfit_shares_uuid` (`share_uuid`),
|
||
KEY `idx_outfit_shares_user_status` (`user_id`, `status`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '穿搭分享表';
|
||
|
||
CREATE TABLE `outfit_share_receivers` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`share_uuid` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '分享UUID',
|
||
`receiver_user_id` BIGINT NOT NULL DEFAULT 0 COMMENT '接收人用户ID',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_outfit_share_receiver` (`share_uuid`, `receiver_user_id`),
|
||
KEY `idx_outfit_share_receivers_user` (`receiver_user_id`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '穿搭分享接收人关联表';
|
||
|
||
-- ============================================================
|
||
-- 六、商品与订单
|
||
-- ============================================================
|
||
CREATE TABLE `goods` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`goods_code` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '商品编码',
|
||
`goods_name` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '商品名称',
|
||
`goods_type` TINYINT NOT NULL DEFAULT 0 COMMENT '商品类型 1=会员包 2=上传包 3=AI推荐包 4=衣柜分享包 5=搭配分享包',
|
||
`price` BIGINT NOT NULL DEFAULT 0 COMMENT '商品原价(分)',
|
||
`discount_price` BIGINT NOT NULL DEFAULT 0 COMMENT '商品售价(分)',
|
||
`member_days` BIGINT NOT NULL DEFAULT 0 COMMENT '赠送会员天数',
|
||
`cos_quota` BIGINT NOT NULL DEFAULT 0 COMMENT '赠送总上传额度',
|
||
`ai_recommend_quota` BIGINT NOT NULL DEFAULT 0 COMMENT '赠送AI推荐额度',
|
||
`closet_share_quota` BIGINT NOT NULL DEFAULT 0 COMMENT '赠送衣柜分享额度',
|
||
`outfit_share_quota` BIGINT NOT NULL DEFAULT 0 COMMENT '赠送搭配分享额度',
|
||
`valid_days` BIGINT NOT NULL DEFAULT 0 COMMENT '赠送额度有效期天数(加量包用;会员包为 0 表示跟随 VIP)',
|
||
`description` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '商品描述',
|
||
`status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态 1=上架 2=下架',
|
||
`product_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '虚拟支付道具ID(空表示未发布)',
|
||
`product_status` TINYINT NOT NULL DEFAULT 0 COMMENT '虚拟支付道具发布状态 0=未发布 1=发布中 2=已发布 3=发布失败',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_goods_code` (`goods_code`),
|
||
KEY `idx_goods_type_status` (`goods_type`, `status`),
|
||
KEY `idx_goods_product_status` (`product_status`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '商品表';
|
||
|
||
CREATE TABLE `orders` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`order_no` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '商户订单号',
|
||
`user_id` BIGINT NOT NULL DEFAULT 0 COMMENT '下单用户ID',
|
||
`goods_id` BIGINT NOT NULL DEFAULT 0 COMMENT '关联商品ID',
|
||
`goods_name` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '商品名称快照',
|
||
`unit_price` BIGINT NOT NULL DEFAULT 0 COMMENT '商品单价(分)',
|
||
`total_amount` BIGINT NOT NULL DEFAULT 0 COMMENT '订单总金额(分)',
|
||
`pay_amount` BIGINT NOT NULL DEFAULT 0 COMMENT '实付金额(分)',
|
||
`pay_channel` TINYINT NOT NULL DEFAULT 0 COMMENT '支付渠道 1=微信支付 2=微信虚拟支付',
|
||
`order_status` TINYINT NOT NULL DEFAULT 0 COMMENT '订单状态 1=待支付 2=已支付 3=已取消 4=已过期 5=已退款',
|
||
`transaction_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '微信支付流水号',
|
||
`member_days` BIGINT NOT NULL DEFAULT 0 COMMENT '购买的会员天数(快照)',
|
||
`goods_type` TINYINT NOT NULL DEFAULT 0 COMMENT '商品类型快照',
|
||
`quota_valid_days` BIGINT NOT NULL DEFAULT 0 COMMENT '额度有效期天数快照',
|
||
`cos_quota` BIGINT NOT NULL DEFAULT 0 COMMENT '赠送上传额度(快照)',
|
||
`ai_recommend_quota` BIGINT NOT NULL DEFAULT 0 COMMENT '赠送AI推荐额度(快照)',
|
||
`closet_share_quota` BIGINT NOT NULL DEFAULT 0 COMMENT '赠送衣柜分享额度(快照)',
|
||
`outfit_share_quota` BIGINT NOT NULL DEFAULT 0 COMMENT '赠送搭配分享额度(快照)',
|
||
`expire_time` BIGINT NOT NULL DEFAULT 0 COMMENT '支付过期时间',
|
||
`pay_time` BIGINT NOT NULL DEFAULT 0 COMMENT '支付完成时间',
|
||
`refund_time` BIGINT NOT NULL DEFAULT 0 COMMENT '退款时间',
|
||
`refund_amount` BIGINT NOT NULL DEFAULT 0 COMMENT '退款金额(分)',
|
||
`remark` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '订单备注',
|
||
`callback_raw` TEXT COMMENT '支付回调原始报文',
|
||
`xpay_product_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '虚拟支付道具ID(快照,pay_channel=2 时使用)',
|
||
`xpay_platform` VARCHAR(16) NOT NULL DEFAULT '' COMMENT '虚拟支付平台 android/ios/harmony/windows',
|
||
`xpay_env` TINYINT NOT NULL DEFAULT 0 COMMENT '虚拟支付环境 0=现网 1=沙箱',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_order_no` (`order_no`),
|
||
KEY `idx_orders_user_status` (`user_id`, `order_status`),
|
||
KEY `idx_orders_expire` (`order_status`, `expire_time`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '订单表';
|
||
|
||
-- ============================================================
|
||
-- 七、额度
|
||
-- ============================================================
|
||
CREATE TABLE `user_quotas` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`user_id` BIGINT NOT NULL DEFAULT 0 COMMENT '用户ID',
|
||
`quota_type` TINYINT NOT NULL DEFAULT 0 COMMENT '额度类型 1=cos上传 2=AI推荐 3=社区分享 4=衣柜分享',
|
||
`total` BIGINT NOT NULL DEFAULT 0 COMMENT '总配额',
|
||
`used` BIGINT NOT NULL DEFAULT 0 COMMENT '已用量',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_user_quota` (`user_id`, `quota_type`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '用户额度表';
|
||
|
||
CREATE TABLE `user_daily_usages` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`user_id` BIGINT NOT NULL DEFAULT 0 COMMENT '用户ID',
|
||
`stat_date` BIGINT NOT NULL DEFAULT 0 COMMENT '统计日期(YYYYMMDD)',
|
||
`ai_recommend_count` BIGINT NOT NULL DEFAULT 0 COMMENT '当日AI推荐次数',
|
||
`outfit_share_count` BIGINT NOT NULL DEFAULT 0 COMMENT '当日社区分享次数',
|
||
`closet_share_count` BIGINT NOT NULL DEFAULT 0 COMMENT '当日衣柜分享次数',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_daily_usage_user_date` (`user_id`, `stat_date`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '用户每日用量统计表';
|
||
|
||
-- 额度凭证表:承载有有效期的赠送额度(会员包/加量包/广告激励)。
|
||
CREATE TABLE `quota_grants` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`user_id` BIGINT NOT NULL DEFAULT 0 COMMENT '用户ID',
|
||
`quota_type` TINYINT NOT NULL DEFAULT 0 COMMENT '额度类型 1=cos上传 2=AI推荐 3=社区分享 4=衣柜分享',
|
||
`amount` BIGINT NOT NULL DEFAULT 0 COMMENT '赠送总量',
|
||
`used` BIGINT NOT NULL DEFAULT 0 COMMENT '已用量(Cos 永久额度扣减;AI/社区/衣柜 每日额度恒为 0)',
|
||
`source` TINYINT NOT NULL DEFAULT 0 COMMENT '来源 1=会员包 2=加量包 3=广告激励',
|
||
`expire_time` BIGINT NOT NULL DEFAULT 0 COMMENT '到期时间(秒,0 表示跟随 VIP 有效期)',
|
||
`ref_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '关联ID(订单号/广告记录ID)',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_grant_ref_type` (`ref_id`, `quota_type`),
|
||
KEY `idx_grant_user_type_expire` (`user_id`, `quota_type`, `expire_time`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '额度凭证表(有有效期赠送额度)';
|
||
|
||
CREATE TABLE `quota_flow_logs` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`quota_flow_uuid` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '配额流水UUID',
|
||
`user_id` BIGINT NOT NULL DEFAULT 0 COMMENT '用户ID',
|
||
`change_target` TINYINT NOT NULL DEFAULT 0 COMMENT '调整额度类型 1=配额调整 2=使用',
|
||
`change_type` TINYINT NOT NULL DEFAULT 0 COMMENT '变更类型 1=购买获赠 2=活动赠送 3=上传消耗 4=删除回退 5=人工调整 6=退款回收',
|
||
`change_num` BIGINT NOT NULL DEFAULT 0 COMMENT '变更数量(正数增加,负数减少)',
|
||
`old_value` BIGINT NOT NULL DEFAULT 0 COMMENT '变更前数值',
|
||
`new_value` BIGINT NOT NULL DEFAULT 0 COMMENT '变更后数值',
|
||
`order_no` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '关联订单号(购买/退款类);其余场景写流水UUID保证幂等',
|
||
`quota_type` TINYINT NOT NULL DEFAULT 0 COMMENT '关联业务类型 1=cos 2=AI 3=社区分享 4=衣柜分享',
|
||
`related_id` BIGINT NOT NULL DEFAULT 0 COMMENT '关联业务ID',
|
||
`reason` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '变更原因/备注',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_quota_flow_idem` (`order_no`, `quota_type`, `change_type`),
|
||
KEY `idx_quota_flow_user` (`user_id`),
|
||
KEY `idx_quota_flow_uuid` (`quota_flow_uuid`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '配额流水日志表';
|
||
|
||
-- ============================================================
|
||
-- 八、权益发放与回收(补偿任务)
|
||
-- ============================================================
|
||
CREATE TABLE `benefit_grant_tasks` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`user_id` BIGINT NOT NULL DEFAULT 0 COMMENT '用户ID',
|
||
`order_no` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '商户订单号',
|
||
`goods_id` BIGINT NOT NULL DEFAULT 0 COMMENT '关联商品ID',
|
||
`benefit_type` TINYINT NOT NULL DEFAULT 0 COMMENT '权益类型 1=vip 2=cos 3=ai 4=closet_share 5=outfit_share',
|
||
`amount` BIGINT NOT NULL DEFAULT 0 COMMENT '发放数量',
|
||
`status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态 0=待发放 1=已发放 2=发放失败',
|
||
`retry_count` INT NOT NULL DEFAULT 0 COMMENT '已重试次数',
|
||
`max_retry` INT NOT NULL DEFAULT 0 COMMENT '最大重试次数',
|
||
`last_error` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '最近一次失败原因',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_benefit_task_idem` (`order_no`, `benefit_type`),
|
||
KEY `idx_benefit_task_status` (`status`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '权益发放补偿任务表';
|
||
|
||
CREATE TABLE `benefit_revoke_tasks` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`order_no` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '商户订单号',
|
||
`user_id` BIGINT NOT NULL DEFAULT 0 COMMENT '用户ID',
|
||
`status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态 0=待回收 1=已回收 2=回收失败',
|
||
`retry_count` INT NOT NULL DEFAULT 0 COMMENT '已重试次数',
|
||
`max_retry` INT NOT NULL DEFAULT 10 COMMENT '最大重试次数',
|
||
`last_error` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '最近一次失败原因',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_benefit_revoke_order` (`order_no`),
|
||
KEY `idx_benefit_revoke_status` (`status`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '退款权益回收任务';
|
||
|
||
-- ============================================================
|
||
-- 九、资金与调用流水
|
||
-- ============================================================
|
||
CREATE TABLE `refund_flow_logs` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`order_id` BIGINT NOT NULL DEFAULT 0 COMMENT '关联订单ID',
|
||
`order_no` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '商户订单号(冗余,方便查询)',
|
||
`user_id` BIGINT NOT NULL DEFAULT 0 COMMENT '用户ID(冗余,方便按用户查)',
|
||
`refund_no` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '商户退款单号',
|
||
`wechat_refund_no` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '微信退款单号',
|
||
`refund_amount` BIGINT NOT NULL DEFAULT 0 COMMENT '本次退款金额(分)',
|
||
`refund_reason` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '退款原因',
|
||
`status` TINYINT NOT NULL DEFAULT 0 COMMENT '退款状态 0=待处理 1=退款中 2=退款成功 3=退款失败',
|
||
`apply_time` BIGINT NOT NULL DEFAULT 0 COMMENT '申请时间',
|
||
`success_time` BIGINT NOT NULL DEFAULT 0 COMMENT '退款成功时间',
|
||
`fail_reason` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '失败原因',
|
||
`callback_raw` TEXT COMMENT '微信退款回调原始报文',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_refund_flow_no` (`refund_no`),
|
||
KEY `idx_refund_flow_order` (`order_id`),
|
||
KEY `idx_refund_flow_user` (`user_id`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '退款流水日志表';
|
||
|
||
CREATE TABLE `vip_flow_logs` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`user_id` BIGINT NOT NULL DEFAULT 0 COMMENT '用户ID',
|
||
`change_type` TINYINT NOT NULL DEFAULT 0 COMMENT '变更类型 1=开通 2=续费 3=活动赠送 4=到期失效 5=人工调整 6=退款回收',
|
||
`old_vip_type` TINYINT NOT NULL DEFAULT 0 COMMENT '变更前VIP类型 1=非会员 2=月度会员 3=年度会员 4=体验会员',
|
||
`new_vip_type` TINYINT NOT NULL DEFAULT 0 COMMENT '变更后VIP类型 1=非会员 2=月度会员 3=年度会员 4=体验会员',
|
||
`old_vip_expire` BIGINT NOT NULL DEFAULT 0 COMMENT '变更前到期时间(秒)',
|
||
`new_vip_expire` BIGINT NOT NULL DEFAULT 0 COMMENT '变更后到期时间(秒)',
|
||
`order_no` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '关联订单号(购买类变更)',
|
||
`source` TINYINT NOT NULL DEFAULT 0 COMMENT '变更来源 1=个人支付 2=活动赠送 3=系统 4=人工调整',
|
||
`reason` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '变更原因/备注',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_vip_flow_idem` (`order_no`, `change_type`),
|
||
KEY `idx_vip_flow_user` (`user_id`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '会员变更流水表';
|
||
|
||
CREATE TABLE `ai_recommend_flow_logs` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`request_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '请求唯一ID',
|
||
`server_request_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '服务请求唯一ID',
|
||
`user_id` BIGINT NOT NULL DEFAULT 0 COMMENT '用户ID',
|
||
`model_version` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '大模型版本',
|
||
`prompt_tokens` BIGINT NOT NULL DEFAULT 0 COMMENT '输入token数',
|
||
`completion_tokens` BIGINT NOT NULL DEFAULT 0 COMMENT '输出token数',
|
||
`result_content` TEXT COMMENT '推荐结果结构化数据',
|
||
`status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态 1=成功 2=失败',
|
||
`fail_reason` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '失败原因',
|
||
`request_time` BIGINT NOT NULL DEFAULT 0 COMMENT '请求发起时间',
|
||
`response_time` BIGINT NOT NULL DEFAULT 0 COMMENT '响应返回时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_ai_recommend_request` (`request_id`),
|
||
KEY `idx_ai_recommend_user` (`user_id`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = 'AI穿搭推荐流水表';
|
||
|
||
CREATE TABLE `ai_horoscope_flow_logs` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`request_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '请求唯一ID(幂等依据)',
|
||
`zodiac` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '星座',
|
||
`server_request_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '服务请求唯一ID',
|
||
`stat_date` BIGINT NOT NULL DEFAULT 0 COMMENT '运势日期(YYYYMMDD)',
|
||
`model_version` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '大模型版本',
|
||
`prompt_tokens` BIGINT NOT NULL DEFAULT 0 COMMENT '输入token数',
|
||
`completion_tokens` BIGINT NOT NULL DEFAULT 0 COMMENT '输出token数',
|
||
`result_content` TEXT COMMENT '生成结果结构化数据',
|
||
`horoscope_id` BIGINT NOT NULL DEFAULT 0 COMMENT '生成的运势记录ID',
|
||
`status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态 1=成功 2=失败',
|
||
`fail_reason` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '失败原因',
|
||
`request_time` BIGINT NOT NULL DEFAULT 0 COMMENT '请求发起时间',
|
||
`response_time` BIGINT NOT NULL DEFAULT 0 COMMENT '响应返回时间',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_ai_horoscope_request` (`request_id`),
|
||
KEY `idx_ai_horoscope_date_zodiac` (`stat_date`, `zodiac`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = 'AI运势生成流水表';
|
||
|
||
-- ============================================================
|
||
-- 十、互动与通知
|
||
-- ============================================================
|
||
CREATE TABLE `collects` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`collect_type` TINYINT NOT NULL DEFAULT 0 COMMENT '业务类型 1=社区穿搭',
|
||
`target_id` BIGINT NOT NULL DEFAULT 0 COMMENT '业务目标ID',
|
||
`user_id` BIGINT NOT NULL DEFAULT 0 COMMENT '收藏用户ID',
|
||
`status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态 1=已收藏 0=已取消',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_collect_user_target` (`collect_type`, `target_id`, `user_id`),
|
||
KEY `idx_collects_user` (`user_id`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '收藏表';
|
||
|
||
CREATE TABLE `likes` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`like_type` TINYINT NOT NULL DEFAULT 0 COMMENT '业务类型 1=社区穿搭',
|
||
`target_id` BIGINT NOT NULL DEFAULT 0 COMMENT '业务目标ID',
|
||
`user_id` BIGINT NOT NULL DEFAULT 0 COMMENT '点赞用户ID',
|
||
`status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态 1=已点赞 0=已取消',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_like_user_target` (`like_type`, `target_id`, `user_id`),
|
||
KEY `idx_likes_user` (`user_id`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '点赞表';
|
||
|
||
CREATE TABLE `user_notifications` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`notification_uuid` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '消息UUID',
|
||
`user_id` BIGINT NOT NULL DEFAULT 0 COMMENT '接收用户ID',
|
||
`msg_type` TINYINT NOT NULL DEFAULT 0 COMMENT '消息类型 1=点赞通知 2=订单通知 3=系统通知',
|
||
`sender_id` BIGINT NOT NULL DEFAULT 0 COMMENT '发送者ID 系统消息为0',
|
||
`title` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '消息标题',
|
||
`content` TEXT COMMENT '消息内容',
|
||
`is_read` TINYINT NOT NULL DEFAULT 0 COMMENT '是否已读 1=未读 2=已读',
|
||
`read_time` BIGINT NOT NULL DEFAULT 0 COMMENT '阅读时间',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_notification_uuid` (`notification_uuid`),
|
||
KEY `idx_notifications_user_read` (`user_id`, `is_read`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '用户通知表';
|
||
|
||
-- ============================================================
|
||
-- 十一、运势与审核
|
||
-- ============================================================
|
||
CREATE TABLE `horoscopes` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`stat_date` BIGINT NOT NULL DEFAULT 0 COMMENT '运势日期(YYYYMMDD)',
|
||
`zodiac` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '星座',
|
||
`overall_score` TINYINT NOT NULL DEFAULT 0 COMMENT '综合运势 1-5分',
|
||
`love_score` TINYINT NOT NULL DEFAULT 0 COMMENT '爱情运势 1-5分',
|
||
`career_score` TINYINT NOT NULL DEFAULT 0 COMMENT '工作运势 1-5分',
|
||
`wealth_score` TINYINT NOT NULL DEFAULT 0 COMMENT '财富运势 1-5分',
|
||
`daily_text` TEXT COMMENT '今日运势详情',
|
||
`lucky_color` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '幸运色',
|
||
`lucky_number` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '幸运数字',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_horoscope_date_zodiac` (`stat_date`, `zodiac`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '星座运势表';
|
||
|
||
CREATE TABLE `closet_audit_logs` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`target_id` BIGINT NOT NULL DEFAULT 0 COMMENT '衣柜分享ID',
|
||
`audit_result` TINYINT NOT NULL DEFAULT 0 COMMENT '审核结果 1=通过 2=驳回',
|
||
`reject_reason` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '审核原因',
|
||
`audit_time` BIGINT NOT NULL DEFAULT 0 COMMENT '审核时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_closet_audit_target` (`target_id`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '衣柜分享审核日志表';
|
||
|
||
CREATE TABLE `outfit_audit_logs` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`created_at` BIGINT NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||
`updated_at` BIGINT NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||
`deleted_at` BIGINT NOT NULL DEFAULT 0 COMMENT '删除时间(0 表示未删除)',
|
||
`created_by` BIGINT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`updated_by` BIGINT NOT NULL DEFAULT 0 COMMENT '更新人',
|
||
`deleted_by` BIGINT NOT NULL DEFAULT 0 COMMENT '删除人',
|
||
`target_id` BIGINT NOT NULL DEFAULT 0 COMMENT '穿搭ID',
|
||
`audit_result` TINYINT NOT NULL DEFAULT 0 COMMENT '审核结果 1=通过 2=驳回',
|
||
`reject_reason` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '审核原因',
|
||
`audit_time` BIGINT NOT NULL DEFAULT 0 COMMENT '审核时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_outfit_audit_target` (`target_id`)
|
||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '穿搭审核日志表';
|