-- 邀请码 → 推广员（inviterId），供小程序填码绑定分销关系
-- 执行前请将表名前缀与 api/config/database.php 中 prefix 对齐（ThinkPHP Db::name('invite_codes') → {prefix}invite_codes）

CREATE TABLE IF NOT EXISTS `mbti_invite_codes` (
  `id`             int unsigned NOT NULL AUTO_INCREMENT,
  `code`           varchar(64)  NULL DEFAULT NULL COMMENT '兼容旧字段，可与 code_numeric 同步',
  `code_numeric`   varchar(20)  NULL DEFAULT NULL COMMENT '数字邀请码，如 6 位 100000-999999',
  `code_legacy`    varchar(64)  NULL DEFAULT NULL COMMENT '老版字母数字邀请码，与数字码同一 inviter 可并存',
  `inviterId`      int unsigned NOT NULL COMMENT '推广员 wechat_users.id',
  `enterpriseId`   int unsigned NULL DEFAULT NULL COMMENT '企业上下文，与个人版并行时可空',
  `status`         varchar(20)  NOT NULL DEFAULT 'active' COMMENT 'active|disabled',
  `expiresAt`      int unsigned NULL DEFAULT NULL COMMENT '过期unix时间戳，NULL=不限',
  `remark`         varchar(255) NULL DEFAULT NULL COMMENT '备注',
  `createdAt`      int unsigned NULL DEFAULT NULL,
  `updatedAt`      int unsigned NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_code_numeric` (`code_numeric`),
  UNIQUE KEY `uk_code_legacy` (`code_legacy`),
  KEY `idx_inviterId` (`inviterId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='小程序填写邀请码解析用';
