-- 小程序管理 & 小程序用户建表脚本(mini_ / users 前缀,与后台 RBAC 物理隔离)。 -- 执行顺序:先建表,再建索引(GORM 已含唯一/普通索引定义,此处显式列出便于审阅)。 -- 表结构与 internal/model/miniapp.go、internal/model/user.go 保持一致。 -- 被后台纳管的小程序配置,AppID 全局唯一。 -- DeletedAt 为 GORM 软删除字段,已建普通索引以支持软删除过滤。 CREATE TABLE IF NOT EXISTS `mini_programs` ( `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, `name` VARCHAR(128) NOT NULL, `description` VARCHAR(512) DEFAULT '', `app_id` VARCHAR(64) NOT NULL, `app_secret` VARCHAR(128) NOT NULL, `status` TINYINT NOT NULL DEFAULT 1, `ext` TEXT, `created_at` DATETIME(3) NULL, `updated_at` DATETIME(3) NULL, `deleted_at` DATETIME(3) NULL, PRIMARY KEY (`id`), UNIQUE KEY `uk_mini_programs_app_id` (`app_id`), KEY `idx_mini_programs_deleted_at` (`deleted_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 小程序端用户。mini_id 关联被纳管小程序(mini_programs.id), -- 与 open_id 共同唯一标识一个用户;查询统一按 (mini_id, openid) 索引过滤。 -- union_id 建普通索引便于跨小程序去重/聚合。 CREATE TABLE IF NOT EXISTS `users` ( `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, `mini_id` BIGINT UNSIGNED NOT NULL, `openid` VARCHAR(64) NOT NULL, `union_id` VARCHAR(64) DEFAULT '', `nickname` VARCHAR(128) DEFAULT '', `avatar` VARCHAR(512) DEFAULT '', `status` TINYINT NOT NULL DEFAULT 1, `created_at` DATETIME(3) NULL, `updated_at` DATETIME(3) NULL, PRIMARY KEY (`id`), KEY `idx_users_mini_openid` (`mini_id`, `openid`), KEY `idx_users_union_id` (`union_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;