-- 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 = '穿搭审核日志表';