fix: add table structure migration with UTF-8 encoding
- Update .gitignore to allow backend database migrations - Add 004_fix_table_structure.sql migration - Rename tables to plural form (user->users, company->companies) - Add missing fields to companies and users tables - Create company_feishu_apps table for multi-app configuration - Import company data and Feishu app configurations - Set UTF-8 charset to fix encoding issues from MySQL 5.7 export Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -52,3 +52,4 @@ docker-volumes/
|
||||
# Large SQL files (import data files)
|
||||
*.sql
|
||||
!database/migrations/*.sql
|
||||
!backend/database/migrations/*.sql
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
-- 修复表结构和命名以符合项目规范
|
||||
-- 执行前请备份数据库
|
||||
-- 确保以UTF-8编码执行: source /path/to/004_fix_table_structure.sql
|
||||
|
||||
-- 设置字符集
|
||||
SET NAMES utf8mb4;
|
||||
SET CHARACTER SET utf8mb4;
|
||||
|
||||
-- 1. 重命名表为复数形式(符合 webman/Eloquent 规范)
|
||||
RENAME TABLE `user` TO `users`;
|
||||
RENAME TABLE `company` TO `companies`;
|
||||
|
||||
-- 2. 为 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 '是否启用飞书' AFTER `status`;
|
||||
|
||||
-- 3. 为 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 `sex` tinyint(2) NULL DEFAULT NULL COMMENT '性别:1:男,2:女' AFTER `avatar`,
|
||||
ADD COLUMN `user_type` tinyint(2) NOT NULL DEFAULT 1 COMMENT '用户类型 1内部2外部' AFTER `status`,
|
||||
ADD COLUMN `position` varchar(128) NULL DEFAULT NULL COMMENT '职位' AFTER `feishu_open_id`,
|
||||
ADD COLUMN `sign_img` varchar(255) NULL DEFAULT NULL COMMENT '签名图片' AFTER `position`;
|
||||
|
||||
-- 4. 创建飞书应用配置表
|
||||
CREATE TABLE IF NOT EXISTS `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) 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 '事件验证令牌',
|
||||
`callback_url` varchar(255) NULL DEFAULT NULL COMMENT '回调地址',
|
||||
`mobile_callback_url` varchar(255) NULL DEFAULT NULL COMMENT '移动端回调地址',
|
||||
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态',
|
||||
`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
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='公司飞书应用配置';
|
||||
|
||||
-- 5. 清空并导入公司数据
|
||||
TRUNCATE TABLE `companies`;
|
||||
ALTER TABLE `companies` AUTO_INCREMENT = 1;
|
||||
|
||||
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);
|
||||
|
||||
-- 6. 导入飞书应用配置
|
||||
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 '数据迁移完成!' AS message;
|
||||
SELECT COUNT(*) AS company_count FROM companies;
|
||||
SELECT COUNT(*) AS feishu_app_count FROM company_feishu_apps;
|
||||
Reference in New Issue
Block a user