fix: add UTF-8 encoding fix migration

- Add 006_fix_encoding_utf8.sql migration script
- Properly sets UTF-8 charset for table creation
- Recreates companies and users tables with correct Chinese comments
- Imports company data with correct UTF-8 encoding

Usage:
docker exec -i 1Panel-mysql-409s mysql -uroot -p'mysql_xEsdPa' --default-character-set=utf8mb4 x_server_mobile < 006_fix_encoding_utf8.sql

Fixes encoding issues where Chinese text appears as garbled characters
due to MySQL client using latin1 charset instead of utf8mb4.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
root
2026-02-24 18:49:41 +08:00
parent e748eba55b
commit 5d989dfd86
@@ -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;