-- ============================================================= -- 游客(免登录模块)身份与通用数据表 -- 对应代码:models.GuestUser / models.GuestData、services/gueststore -- 幂等:CREATE TABLE IF NOT EXISTS,可重复执行 -- 用途:小程序用手机号授权换取“游客轻身份”,免登录模块产生的数据 -- 按 guest_id + module 存入 yz_guest_data(文档式,永久保留不清理); -- 正式登录后按手机号把数据合并进正式账号(merged_uid 标记,行置 is_deleted=2)。 -- ============================================================= CREATE TABLE IF NOT EXISTS `yz_guest_user` ( `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, `phone` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '微信验证手机号(游客唯一标识)', `openid` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '小程序 openid(可选溯源)', `unionid` VARCHAR(64) NOT NULL DEFAULT '' COMMENT 'unionid(可为空)', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '首次授权时间', `last_active_time` DATETIME NULL COMMENT '最近一次签发/活动时间', `merged_uid` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '转正并入的 AuthIdentity.ID,0=未合并', `merged_time` DATETIME NULL COMMENT '合并时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_phone` (`phone`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='游客轻身份(微信手机号授权签发)'; CREATE TABLE IF NOT EXISTS `yz_guest_data` ( `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, `guest_id` BIGINT UNSIGNED NOT NULL COMMENT 'yz_guest_user.id', `module` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '所属业务模块:notebook / schedule / passwordStore / …', `payload` TEXT NOT NULL COMMENT '业务条目 JSON 序列化(结构由各模块自定义)', `is_deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '0正常 1已删除(保留不清理) 2已合并进正式账号', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `update_time` DATETIME NULL, PRIMARY KEY (`id`), KEY `idx_guest_module` (`guest_id`, `module`, `is_deleted`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='游客通用数据(按模块文档式存储,永久保留)';