diff --git a/backend/database/migrations/006_fix_encoding_utf8.sql b/backend/database/migrations/006_fix_encoding_utf8.sql new file mode 100644 index 0000000..a6dbc46 --- /dev/null +++ b/backend/database/migrations/006_fix_encoding_utf8.sql @@ -0,0 +1,107 @@ +-- UTF-8 编码修复脚本 +-- 使用方法: +-- docker exec -i 1Panel-mysql-409s mysql -uroot -p'mysql_xEsdPa' --default-character-set=utf8mb4 x_server_mobile < 006_fix_encoding_utf8.sql + +SET NAMES utf8mb4; +SET CHARACTER SET utf8mb4; +SET character_set_client = utf8mb4; +SET character_set_connection = utf8mb4; +SET character_set_results = utf8mb4; + +USE x_server_mobile; + +-- 重新创建 companies 表(带正确的中文注释) +DROP TABLE IF EXISTS companies; +CREATE TABLE `companies` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '公司ID', + `name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '公司名称', + `abbr` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '公司缩写', + `tenant_key` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '飞书企业标识', + `sort` int(11) NOT NULL DEFAULT 0 COMMENT '排序', + `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态:1=启用,0=禁用', + `feishu_enabled` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否启用飞书', + `feishu_app_id` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '飞书应用ID(已弃用,使用company_feishu_apps表)', + `feishu_app_secret` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '飞书应用密钥(已弃用)', + `feishu_tenant_key` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '飞书租户Key(已弃用)', + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_feishu_app_id` (`feishu_app_id`), + KEY `idx_status` (`status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='公司表'; + +-- 重新创建 users 表(带正确的中文注释) +DROP TABLE IF EXISTS users; +CREATE TABLE `users` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '用户ID', + `sn` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '用户编号', + `company_id` bigint unsigned NOT NULL COMMENT '所属公司ID', + `report_to` bigint(20) UNSIGNED NULL DEFAULT 0 COMMENT '上级用户ID', + `name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户名', + `avatar` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '头像URL', + `sex` tinyint(2) NULL DEFAULT NULL COMMENT '性别:1=男,2=女', + `email` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮箱', + `phone` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '手机号', + `password` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '密码', + `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态:1=正常,0=禁用', + `user_type` tinyint(2) NOT NULL DEFAULT 1 COMMENT '用户类型:1=内部,2=外部', + `union_id` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '飞书UnionID(跨应用唯一)', + `feishu_user_id` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '飞书用户ID', + `feishu_open_id` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '飞书OpenID', + `tenant_key` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '当前企业标识', + `position` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '职位', + `sign_img` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '签名图片', + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`), + KEY `idx_company_id` (`company_id`), + KEY `idx_feishu_user_id` (`feishu_user_id`), + KEY `idx_feishu_union_id` (`union_id`), + KEY `idx_status` (`status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表'; + +-- 重新创建 company_feishu_apps 表 +DROP TABLE IF EXISTS company_feishu_apps; +CREATE TABLE `company_feishu_apps` ( + `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID', + `company_id` int(11) NOT NULL COMMENT '公司ID', + `system_id` int(11) NOT NULL DEFAULT 1 COMMENT '系统ID:1=X-Server', + `name` varchar(90) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '应用名称', + `app_id` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '飞书应用ID', + `app_secret` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '飞书应用密钥', + `encrypt_key` varchar(60) COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '事件加密密钥', + `verification_token` varchar(60) COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '事件验证令牌', + `callback_url` varchar(255) COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'PC端回调地址', + `mobile_callback_url` varchar(255) COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL 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='公司飞书应用配置表'; + +-- 导入公司数据 +INSERT INTO `companies` (name, abbr, tenant_key, status, sort, feishu_enabled) VALUES +('合塑', 'hesu', '10edab4d5d85175f', 1, 1, 1), +('新友合', 'xinyouhe', '14e7bc0fe5985740', 1, 2, 1), +('派卡', 'paika', '14e5377859d71740', 1, 3, 1), +('斯玛特', 'simate', '', 0, 4, 0), +('magic bridge Auto', 'mbaf', '', 1, 5, 0); + +-- 导入飞书应用配置 +INSERT INTO `company_feishu_apps` (company_id, system_id, name, app_id, app_secret, callback_url, mobile_callback_url, status, created_at, updated_at) VALUES +(2, 1, 'X-Server', 'cli_a73e1e6406fa501c', '9cMfxujjGG9JPmNfNcOwUdCoIXqaM1wY', 'https://x.hnxinyouhe.com/auth/feishu-callback', 'https://mweb-fdesk.hnxinyouhe.com/login/feishu-callback', 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()), +(3, 1, 'X-Server', 'cli_a73e8253144f500b', 'MpLqRmfWx8iA8vwWj5IO6elvIKAHU8E6', 'https://x.hnxinyouhe.com/auth/feishu-callback', 'https://mweb-fdesk.hnxinyouhe.com/login/feishu-callback', 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()), +(1, 1, 'X-Server', 'cli_a6183b882cb8500d', 'VqYib48u4EtDIa6nG9qH3f0fYCA1bCvs', 'https://x.hnxinyouhe.com/auth/feishu-callback', 'https://mweb-fdesk.hnxinyouhe.com/login/feishu-callback', 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()); + +-- 验证结果 +SELECT '=== companies表 ===' as ''; +SELECT id, name, abbr, tenant_key FROM companies ORDER BY id; + +SELECT '=== company_feishu_apps表 ===' as ''; +SELECT id, company_id, name, app_id FROM company_feishu_apps ORDER BY id; + +SELECT '=== 完成!===' as ''; +SELECT COUNT(*) as company_count FROM companies; +SELECT COUNT(*) as feishu_app_count FROM company_feishu_apps;