This commit is contained in:
2026-09-15 16:02:45 +08:00
parent 112c5f8e46
commit ade2453083
70 changed files with 1441 additions and 707 deletions
@@ -1 +0,0 @@
DROP TABLE IF EXISTS `users`;
-28
View File
@@ -1,28 +0,0 @@
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 = '用户表';
+53
View File
@@ -0,0 +1,53 @@
-- zt-closet 数据库全量回滚脚本:删除全部业务表。
--
-- 注意:迁移中不存在任何外键约束,因此删除顺序无依赖,此处按与 up 相反的书写顺序排列仅为可读性。
-- 该脚本会一次性删除全部 25 张业务表(不含 golang-migrate 自建的 schema_migrations),生产环境慎用。
-- 十一、运势与审核
DROP TABLE IF EXISTS `outfit_audit_logs`;
DROP TABLE IF EXISTS `closet_audit_logs`;
DROP TABLE IF EXISTS `horoscopes`;
-- 十、互动与通知
DROP TABLE IF EXISTS `user_notifications`;
DROP TABLE IF EXISTS `likes`;
DROP TABLE IF EXISTS `collects`;
-- 九、资金与调用流水
DROP TABLE IF EXISTS `ai_horoscope_flow_logs`;
DROP TABLE IF EXISTS `ai_recommend_flow_logs`;
DROP TABLE IF EXISTS `vip_flow_logs`;
DROP TABLE IF EXISTS `refund_flow_logs`;
-- 八、权益发放与回收(补偿任务)
DROP TABLE IF EXISTS `benefit_revoke_tasks`;
DROP TABLE IF EXISTS `benefit_grant_tasks`;
-- 七、额度
DROP TABLE IF EXISTS `quota_flow_logs`;
DROP TABLE IF EXISTS `quota_grants`;
DROP TABLE IF EXISTS `user_daily_usages`;
DROP TABLE IF EXISTS `user_quotas`;
-- 六、商品与订单
DROP TABLE IF EXISTS `orders`;
DROP TABLE IF EXISTS `goods`;
-- 五、穿搭分享
DROP TABLE IF EXISTS `outfit_share_receivers`;
DROP TABLE IF EXISTS `outfit_shares`;
-- 四、衣柜分享
DROP TABLE IF EXISTS `closet_share_receivers`;
DROP TABLE IF EXISTS `closet_share_items`;
DROP TABLE IF EXISTS `closet_shares`;
-- 三、穿搭
DROP TABLE IF EXISTS `outfit_items`;
DROP TABLE IF EXISTS `outfits`;
-- 二、衣物
DROP TABLE IF EXISTS `clothes`;
-- 一、用户
DROP TABLE IF EXISTS `users`;
+622
View File
@@ -0,0 +1,622 @@
-- 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`)
) 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 = '穿搭审核日志表';
@@ -1 +0,0 @@
DROP TABLE IF EXISTS `clothes`;
@@ -1,36 +0,0 @@
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 '处理后图片存储位置 相对路径',
`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 = '衣物表';
@@ -1,2 +0,0 @@
DROP TABLE IF EXISTS `outfit_items`;
DROP TABLE IF EXISTS `outfits`;
@@ -1,37 +0,0 @@
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`)
) 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 = '穿搭明细表';
@@ -1,2 +0,0 @@
DROP TABLE IF EXISTS `closet_share_items`;
DROP TABLE IF EXISTS `closet_shares`;
@@ -1,31 +0,0 @@
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 = '衣柜分享明细表';
@@ -1,2 +0,0 @@
DROP TABLE IF EXISTS `user_daily_usages`;
DROP TABLE IF EXISTS `user_quotas`;
@@ -1,32 +0,0 @@
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 = '用户每日用量统计表';
@@ -1 +0,0 @@
DROP TABLE IF EXISTS `quota_flow_logs`;
@@ -1,24 +0,0 @@
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 = '配额流水日志表';
@@ -1 +0,0 @@
DROP TABLE IF EXISTS `goods`;
-28
View File
@@ -1,28 +0,0 @@
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 = '商品表';
@@ -1 +0,0 @@
DROP TABLE IF EXISTS `orders`;
-37
View File
@@ -1,37 +0,0 @@
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=微信支付',
`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 '购买的会员天数(快照)',
`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 = '订单表';
@@ -1 +0,0 @@
DROP TABLE IF EXISTS `refund_flow_logs`;
@@ -1,25 +0,0 @@
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 = '退款流水日志表';
@@ -1 +0,0 @@
DROP TABLE IF EXISTS `vip_flow_logs`;
@@ -1,21 +0,0 @@
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 = '会员变更流水表';
@@ -1 +0,0 @@
DROP TABLE IF EXISTS `benefit_grant_tasks`;
@@ -1,21 +0,0 @@
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 = '权益发放补偿任务表';
@@ -1,2 +0,0 @@
DROP TABLE IF EXISTS `ai_horoscope_flow_logs`;
DROP TABLE IF EXISTS `ai_recommend_flow_logs`;
@@ -1,49 +0,0 @@
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运势生成流水表';
@@ -1,2 +0,0 @@
DROP TABLE IF EXISTS `likes`;
DROP TABLE IF EXISTS `collects`;
@@ -1,33 +0,0 @@
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 = '点赞表';
@@ -1 +0,0 @@
DROP TABLE IF EXISTS `user_notifications`;
@@ -1,20 +0,0 @@
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 = '用户通知表';
@@ -1 +0,0 @@
DROP TABLE IF EXISTS `horoscopes`;
@@ -1,20 +0,0 @@
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 = '星座运势表';
@@ -1,2 +0,0 @@
DROP TABLE IF EXISTS `outfit_audit_logs`;
DROP TABLE IF EXISTS `closet_audit_logs`;
@@ -1,31 +0,0 @@
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 = '穿搭审核日志表';
@@ -1 +0,0 @@
DROP TABLE IF EXISTS `quota_grants`;
@@ -1,20 +0,0 @@
-- 额度凭证表:承载有有效期的赠送额度(会员包/加量包/广告激励)。
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 = '额度凭证表(有有效期赠送额度)';
@@ -1 +0,0 @@
DROP TABLE IF EXISTS `closet_share_receivers`;
@@ -1,15 +0,0 @@
-- 衣柜分享接收人关联表:记录"谁收到了谁的分享"(访问即视为收到,一对多、幂等)。
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 = '衣柜分享接收人关联表';
@@ -1,2 +0,0 @@
DROP TABLE IF EXISTS `outfit_share_receivers`;
DROP TABLE IF EXISTS `outfit_shares`;
@@ -1,31 +0,0 @@
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 = '穿搭分享接收人关联表';
@@ -1,3 +0,0 @@
DROP TABLE IF EXISTS `benefit_revoke_tasks`;
ALTER TABLE `clothes` DROP COLUMN `original_image_path`;
ALTER TABLE `orders` DROP COLUMN `quota_valid_days`, DROP COLUMN `goods_type`;
@@ -1,14 +0,0 @@
ALTER TABLE `orders`
ADD COLUMN `goods_type` TINYINT NOT NULL DEFAULT 0 COMMENT '商品类型快照' AFTER `member_days`,
ADD COLUMN `quota_valid_days` BIGINT NOT NULL DEFAULT 0 COMMENT '额度有效期天数快照' AFTER `goods_type`;
UPDATE `orders` o JOIN `goods` g ON g.id = o.goods_id
SET o.goods_type = g.goods_type, o.quota_valid_days = g.valid_days WHERE o.goods_type = 0;
ALTER TABLE `clothes` ADD COLUMN `original_image_path` VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '待处理原图本地路径' AFTER `processed_image`;
CREATE TABLE `benefit_revoke_tasks` (
`id` BIGINT NOT NULL AUTO_INCREMENT, `created_at` BIGINT NOT NULL DEFAULT 0, `updated_at` BIGINT NOT NULL DEFAULT 0,
`deleted_at` BIGINT NOT NULL DEFAULT 0, `created_by` BIGINT NOT NULL DEFAULT 0, `updated_by` BIGINT NOT NULL DEFAULT 0,
`deleted_by` BIGINT NOT NULL DEFAULT 0, `order_no` VARCHAR(64) NOT NULL DEFAULT '', `user_id` BIGINT NOT NULL DEFAULT 0,
`status` TINYINT NOT NULL DEFAULT 0, `retry_count` INT NOT NULL DEFAULT 0, `max_retry` INT NOT NULL DEFAULT 10,
`last_error` VARCHAR(255) NOT NULL DEFAULT '', PRIMARY KEY (`id`), UNIQUE KEY `uk_benefit_revoke_order` (`order_no`),
KEY `idx_benefit_revoke_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='退款权益回收任务';
+13 -5
View File
@@ -30,9 +30,10 @@ type RecommendLLMResponse struct {
}
// GenerateOutfitRecommendation 调用混元生成今日穿搭推荐。
func (c *Client) GenerateOutfitRecommendation(ctx context.Context, zodiac string, fortune *FortuneItem, clothes []mysqlmodel.Clothes) (*RecommendLLMResponse, error) {
// scene 为用户自定义场景(前端 scene_type=2 时传入),为空表示由模型自行判断。
func (c *Client) GenerateOutfitRecommendation(ctx context.Context, zodiac string, fortune *FortuneItem, clothes []mysqlmodel.Clothes, scene string) (*RecommendLLMResponse, error) {
messages := []Message{
{Role: "user", Content: buildRecommendPrompt(zodiac, fortune, clothes)},
{Role: "user", Content: buildRecommendPrompt(zodiac, fortune, clothes, scene)},
}
responseFormat := &ResponseFormat{
@@ -67,9 +68,16 @@ func (c *Client) GenerateOutfitRecommendation(ctx context.Context, zodiac string
}
// buildRecommendPrompt 构造穿搭推荐 prompt。
func buildRecommendPrompt(zodiac string, fortune *FortuneItem, clothes []mysqlmodel.Clothes) string {
// scene 为用户自定义场景(已做注入清洗):非空时作为硬约束写入 prompt,并指示模型在 scene 字段回填;
// 为空时整段不出现,保持「由模型自行判断场景」的原行为。
func buildRecommendPrompt(zodiac string, fortune *FortuneItem, clothes []mysqlmodel.Clothes, scene string) string {
clothesText := FormatClothesInfo(clothes)
sceneSection := ""
if s := sanitizePromptField(scene); s != "" {
sceneSection = fmt.Sprintf("\n## 用户指定场景\n用户希望这套搭配用于「%s」,请优先围绕该场景挑选单品,并在 scene 字段回填该场景。\n", s)
}
return fmt.Sprintf(`你是一位专业的时尚搭配师。请根据用户今天的星座运势和衣橱中的衣物,为用户推荐一套今日穿搭。
## 用户信息
@@ -82,7 +90,7 @@ func buildRecommendPrompt(zodiac string, fortune *FortuneItem, clothes []mysqlmo
## 用户衣橱
%s
%s
## 搭配规则
1. 所有推荐单品必须严格选自用户衣橱,clothes_id 与 clothes_uuid 必须与衣橱中存在的衣物一一对应,不得虚构
2. 先识别衣橱中包含的有效品类,仅统计以下 6 类:上装、下装、连衣裙、外套、鞋、配饰:
@@ -113,7 +121,7 @@ func buildRecommendPrompt(zodiac string, fortune *FortuneItem, clothes []mysqlmo
- items 数组长度由衣橱中存在的品类数量决定,不存在的品类不写入数组
- clothes_id 必须为整数,且必须是衣橱中真实存在的 ID
- clothes_uuid 必须从「用户衣橱」信息中精确复制,且与 clothes_id 一一对应,严禁编造或改动 UUID`,
zodiac, fortune.Overall, fortune.Love, fortune.Work, fortune.Money, fortune.Description, clothesText)
zodiac, fortune.Overall, fortune.Love, fortune.Work, fortune.Money, fortune.Description, clothesText, sceneSection)
}
// buildRecommendSchema 构造 JSON Schema 要求大模型结构化输出。