fix: switch to xserver database with UTF-8 data
- Change default database from x_server_mobile to xserver - Add 007_xserver_init.sql initialization script - Companies data now correctly encoded in UTF-8: - 合塑 (hesu) - 新友合 (xinyouhe) - 派卡 (paika) - 斯玛特 (simate) - magic bridge Auto (mbaf) - Company Feishu apps properly configured The key fix is to execute SQL directly inside the MySQL container using heredoc to avoid charset conversion issues during transfer. Usage: docker exec 1Panel-mysql-409s mysql -uroot -p'mysql_xEsdPa' --default-character-set=utf8mb4 xserver < 007_xserver_init.sql Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -7,7 +7,7 @@ return [
|
|||||||
'driver' => 'mysql',
|
'driver' => 'mysql',
|
||||||
'host' => getenv('DB_HOST') ?: 'mysql',
|
'host' => getenv('DB_HOST') ?: 'mysql',
|
||||||
'port' => getenv('DB_PORT') ?: 3306,
|
'port' => getenv('DB_PORT') ?: 3306,
|
||||||
'database' => getenv('DB_DATABASE') ?: 'x_server_mobile',
|
'database' => getenv('DB_DATABASE') ?: 'xserver',
|
||||||
'username' => getenv('DB_USERNAME') ?: 'root',
|
'username' => getenv('DB_USERNAME') ?: 'root',
|
||||||
'password' => getenv('DB_PASSWORD') ?: '123456',
|
'password' => getenv('DB_PASSWORD') ?: '123456',
|
||||||
'unix_socket' => getenv('DB_SOCKET') ?: '',
|
'unix_socket' => getenv('DB_SOCKET') ?: '',
|
||||||
|
|||||||
@@ -0,0 +1,111 @@
|
|||||||
|
-- XServer 数据库初始化脚本
|
||||||
|
-- 使用 UTF-8 编码保存此文件
|
||||||
|
-- 执行方式:在 MySQL 容器内执行,确保使用正确的字符集
|
||||||
|
|
||||||
|
-- 重要:必须在容器内部直接执行,避免字符集转换问题
|
||||||
|
-- docker exec 1Panel-mysql-409s mysql -uroot -p'mysql_xEsdPa' --default-character-set=utf8mb4 xserver < 007_xserver_init.sql
|
||||||
|
|
||||||
|
SET NAMES utf8mb4;
|
||||||
|
SET CHARACTER SET utf8mb4;
|
||||||
|
|
||||||
|
USE xserver;
|
||||||
|
|
||||||
|
-- =====================================
|
||||||
|
-- 1. 公司表(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 '是否启用飞书',
|
||||||
|
`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_status` (`status`)
|
||||||
|
) 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);
|
||||||
|
|
||||||
|
-- =====================================
|
||||||
|
-- 2. 用户表(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='用户表';
|
||||||
|
|
||||||
|
-- =====================================
|
||||||
|
-- 3. 飞书应用配置表(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 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;
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# MySQL UTF-8 字符集配置
|
||||||
|
# 放到 /etc/mysql/conf.d/ 或 /etc/my.cnf.d/ 目录下
|
||||||
|
|
||||||
|
[client]
|
||||||
|
default-character-set = utf8mb4
|
||||||
|
|
||||||
|
[mysql]
|
||||||
|
default-character-set = utf8mb4
|
||||||
|
|
||||||
|
[mysqld]
|
||||||
|
character-set-server = utf8mb4
|
||||||
|
collation-server = utf8mb4_unicode_ci
|
||||||
|
init_connect = 'SET NAMES utf8mb4'
|
||||||
|
|
||||||
|
# 确保客户端连接使用正确字符集
|
||||||
|
skip-character-set-client-handshake = 0
|
||||||
Reference in New Issue
Block a user