-- 合并旧项目数据到新项目 -- 执行前请确保已备份数据库 -- 1. 更新 companies 表,添加飞书相关字段 ALTER TABLE `companies` ADD COLUMN `abbr` varchar(50) NOT NULL DEFAULT '' COMMENT '公司缩写' AFTER `name`, ADD COLUMN `tenant_key` varchar(36) NOT NULL DEFAULT '' COMMENT '飞书企业标识' AFTER `abbr`, ADD COLUMN `sort` int(11) NOT NULL DEFAULT 0 COMMENT '排序' AFTER `tenant_key`, ADD COLUMN `feishu_enabled` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否启用飞书'; -- 2. 更新 users 表,添加飞书相关字段 ALTER TABLE `users` ADD COLUMN `sn` varchar(36) NOT NULL DEFAULT '' COMMENT '用户编号' AFTER `id`, ADD COLUMN `report_to` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '上级用户ID' AFTER `sn`, ADD COLUMN `avatar` varchar(255) NULL DEFAULT NULL COMMENT '头像' AFTER `phone`, ADD COLUMN `sex` tinyint(2) NULL DEFAULT NULL COMMENT '性别:1:男,2:女' AFTER `avatar`, ADD COLUMN `status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态' AFTER `sex`, ADD COLUMN `user_type` tinyint(2) NOT NULL DEFAULT 1 COMMENT '用户类型 1内部2外部' AFTER `status`, ADD COLUMN `union_id` varchar(60) NULL DEFAULT NULL COMMENT 'ISV的唯一标识' AFTER `user_type`, ADD COLUMN `feishu_user_id` varchar(60) NULL DEFAULT NULL COMMENT '飞书user_id' AFTER `union_id`, ADD COLUMN `feishu_open_id` varchar(60) NULL DEFAULT NULL COMMENT '飞书open_id' AFTER `feishu_user_id`, ADD COLUMN `tenant_key` varchar(60) NULL DEFAULT NULL COMMENT '当前企业标识' AFTER `feishu_open_id`, ADD COLUMN `position` varchar(128) NULL DEFAULT NULL COMMENT '职位' AFTER `tenant_key`, ADD COLUMN `sign_img` varchar(255) NULL DEFAULT NULL COMMENT '签名图片' AFTER `position`; -- 3. 创建公司飞书应用配置表 CREATE TABLE IF NOT EXISTS `company_feishu_apps` ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID', `company_id` int(11) NOT NULL DEFAULT 0 COMMENT '公司ID', `system_id` int(11) NOT NULL DEFAULT 0 COMMENT '系统ID:1=X-Server, 2=工单, 3=CRM_PC', `name` varchar(90) NOT NULL DEFAULT '' COMMENT '应用名称', `tenant_key` varchar(36) NOT NULL DEFAULT '' COMMENT '企业标识', `app_id` varchar(60) NOT NULL DEFAULT '' COMMENT '飞书应用ID', `app_secret` varchar(150) NOT NULL DEFAULT '' COMMENT '飞书应用密钥', `encrypt_key` varchar(60) NULL DEFAULT NULL COMMENT '事件加密密钥', `verification_token` varchar(60) NULL DEFAULT NULL COMMENT '事件验证令牌', `base_uri` varchar(255) NOT NULL DEFAULT 'https://open.feishu.cn/open-apis/' COMMENT '飞书API基础地址', `callback_url` varchar(255) NULL DEFAULT NULL COMMENT 'PC端回调地址', `mobile_callback_url` varchar(255) NULL DEFAULT NULL COMMENT '移动端回调地址', `scopes` text NULL COMMENT '授权范围', `state` varchar(255) NULL DEFAULT NULL COMMENT '携带参数', `sort` int(11) NOT NULL DEFAULT 0 COMMENT '排序', `status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态:1启用,0禁用', `created_at` int(11) NOT NULL DEFAULT 0 COMMENT '创建时间', `updated_at` int(11) NOT NULL DEFAULT 0 COMMENT '更新时间', PRIMARY KEY (`id`) USING BTREE, KEY `idx_company_id` (`company_id`) USING BTREE, KEY `idx_system_id` (`system_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='公司飞书应用配置'; -- 4. 创建用户编号池表 CREATE TABLE IF NOT EXISTS `user_sn_pool` ( `sn` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户编号', `user_id` bigint(20) UNSIGNED NULL DEFAULT NULL COMMENT '分配的用户ID', `status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态:0未分配,1已分配', `created_at` int(11) NOT NULL DEFAULT 0 COMMENT '创建时间', PRIMARY KEY (`sn`) USING BTREE, KEY `idx_user_id` (`user_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户编号池'; -- 5. 插入初始编号池数据(从100000到199999) INSERT IGNORE INTO `user_sn_pool` (`sn`, `status`, `created_at`) SELECT 100000 + n.n AS sn, 0 AS status, UNIX_TIMESTAMP() AS created_at FROM ( SELECT 0 AS n UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ) t CROSS JOIN ( SELECT 0 AS n UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ) t1 CROSS JOIN ( SELECT 0 AS n UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 ) t2; -- 6. 创建迁移数据临时表(用于从旧数据迁移) CREATE TABLE IF NOT EXISTS `_migration_users` ( `id` bigint(20) UNSIGNED NOT NULL, `sn` varchar(36) NOT NULL DEFAULT '', `report_to` bigint(20) UNSIGNED NULL DEFAULT 0, `name` varchar(60) NOT NULL DEFAULT '', `avatar` varchar(255) NULL DEFAULT NULL, `sex` tinyint(2) NULL DEFAULT NULL, `password` varchar(255) NOT NULL DEFAULT '', `phone` varchar(22) NOT NULL DEFAULT '', `email` varchar(90) NOT NULL DEFAULT '', `corp_id` int(11) NOT NULL DEFAULT 0, `status` tinyint(1) NOT NULL DEFAULT 1, `user_type` tinyint(2) NOT NULL DEFAULT 1, `union_id` varchar(60) NULL DEFAULT NULL, `user_id` varchar(60) NULL DEFAULT NULL, `open_id` varchar(60) NULL DEFAULT NULL, `tenant_key` varchar(60) NULL DEFAULT NULL, `position` varchar(128) NULL DEFAULT NULL, `sign_img` varchar(255) NULL DEFAULT NULL, `created_at` int(11) NOT NULL DEFAULT 0, `updated_at` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `_migration_corp` ( `id` int(11) UNSIGNED NOT NULL, `name` varchar(255) NOT NULL DEFAULT '', `abbr` enum('hesu','xinyouhe','paika','simate','mbaf') NOT NULL DEFAULT 'hesu', `tenant_key` varchar(36) NOT NULL DEFAULT '', `sort` int(11) NOT NULL DEFAULT 0, `status` tinyint(1) NOT NULL DEFAULT 1, `created_at` int(11) NOT NULL DEFAULT 0, `updated_at` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `_migration_corp_feishu_app` ( `id` int(11) UNSIGNED NOT NULL, `corp_id` int(11) NOT NULL DEFAULT 0, `system_id` int(11) NOT NULL DEFAULT 0, `name` varchar(90) NOT NULL DEFAULT '', `tenant_key` varchar(36) NOT NULL DEFAULT '', `app_id` varchar(60) NOT NULL DEFAULT '', `app_secret` varchar(150) NOT NULL DEFAULT '', `base_uri` varchar(255) NOT NULL DEFAULT '', `r_url` varchar(255) NULL DEFAULT NULL, `m_url` varchar(255) NULL DEFAULT '', `scopes` text NULL, `state` varchar(255) NULL DEFAULT NULL, `sort` int(11) NOT NULL DEFAULT 0, `status` tinyint(1) NOT NULL DEFAULT 1, `created_at` int(11) NOT NULL DEFAULT 0, `updated_at` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;