feat: add complete database initialization script
- Add 008_complete_init.sql with all 10 tables - Include approval workflow tables: - approval_flow (审批流程配置表) - approval_node (审批流程节点表) - approval_order (审批单表) - approval_record (审批记录表) - Include business trip tables: - business_trip (出差申请表) - business_trip_itinerary (出差行程明细表) - Include user_feishu_binding (用户飞书应用绑定表) All tables use proper UTF-8 encoding with utf8mb4_unicode_ci collation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,252 @@
|
||||
-- XServer 数据库完整初始化脚本
|
||||
-- 使用 UTF-8 编码保存此文件
|
||||
-- 执行方式:docker exec 1Panel-mysql-409s mysql -uroot -p'mysql_xEsdPa' --default-character-set=utf8mb4 xserver < 008_complete_init.sql
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET CHARACTER SET utf8mb4;
|
||||
|
||||
USE xserver;
|
||||
|
||||
-- =====================================
|
||||
-- 1. 公司表
|
||||
-- =====================================
|
||||
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. 用户表
|
||||
-- =====================================
|
||||
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. 飞书应用配置表
|
||||
-- =====================================
|
||||
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());
|
||||
|
||||
-- =====================================
|
||||
-- 4. 审批流程配置表
|
||||
-- =====================================
|
||||
DROP TABLE IF EXISTS approval_flow;
|
||||
CREATE TABLE `approval_flow` (
|
||||
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT "流程ID",
|
||||
`business_type` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "业务类型标识(如:business-trip, purchase)",
|
||||
`name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "流程名称",
|
||||
`description` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT "流程描述",
|
||||
`status` tinyint NOT NULL DEFAULT 1 COMMENT "状态:1=启用,0=禁用",
|
||||
`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_business_type` (`business_type`),
|
||||
KEY `idx_status` (`status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT="审批流程配置表";
|
||||
|
||||
INSERT INTO approval_flow (id, business_type, name, status) VALUES
|
||||
(1, "business-trip", "默认出差审批流程", 1);
|
||||
|
||||
-- =====================================
|
||||
-- 5. 审批流程节点表
|
||||
-- =====================================
|
||||
DROP TABLE IF EXISTS approval_node;
|
||||
CREATE TABLE `approval_node` (
|
||||
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT "节点ID",
|
||||
`flow_id` bigint unsigned NOT NULL COMMENT "流程ID",
|
||||
`type` ENUM("approver", "and_approve", "or_approve", "notify") NOT NULL COMMENT "节点类型",
|
||||
`name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "节点名称",
|
||||
`order` int NOT NULL DEFAULT 0 COMMENT "节点顺序",
|
||||
`approvers` json DEFAULT NULL COMMENT "审批人列表(JSON数组)",
|
||||
`conditions` json DEFAULT NULL COMMENT "条件判断(JSON)",
|
||||
`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_flow_id` (`flow_id`),
|
||||
KEY `idx_order` (`order`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT="审批流程节点表";
|
||||
|
||||
INSERT INTO approval_node (flow_id, type, name, `order`, approvers) VALUES
|
||||
(1, "approver", "部门主管审批", 1, "[]"),
|
||||
(1, "approver", "人事审批", 2, "[]");
|
||||
|
||||
-- =====================================
|
||||
-- 6. 审批单表
|
||||
-- =====================================
|
||||
DROP TABLE IF EXISTS approval_order;
|
||||
CREATE TABLE `approval_order` (
|
||||
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT "审批单ID",
|
||||
`business_type` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "业务类型",
|
||||
`business_id` bigint unsigned NOT NULL COMMENT "业务单据ID",
|
||||
`title` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "审批标题",
|
||||
`applicant_id` bigint unsigned NOT NULL COMMENT "申请人ID",
|
||||
`status` ENUM("draft", "pending", "approved", "rejected", "cancelled") NOT NULL DEFAULT "draft" COMMENT "审批状态",
|
||||
`current_nodes` json DEFAULT NULL COMMENT "当前待审批节点ID列表",
|
||||
`flow_id` bigint unsigned NOT NULL COMMENT "使用的流程ID",
|
||||
`form_data` json DEFAULT NULL COMMENT "业务表单数据(JSON)",
|
||||
`attachments` json DEFAULT NULL COMMENT "附件列表(JSON)",
|
||||
`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_business` (`business_type`, `business_id`),
|
||||
KEY `idx_applicant` (`applicant_id`),
|
||||
KEY `idx_status` (`status`),
|
||||
KEY `idx_created_at` (`created_at`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT="审批单表";
|
||||
|
||||
-- =====================================
|
||||
-- 7. 审批记录表(审批轨迹)
|
||||
-- =====================================
|
||||
DROP TABLE IF EXISTS approval_record;
|
||||
CREATE TABLE `approval_record` (
|
||||
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT "记录ID",
|
||||
`order_id` bigint unsigned NOT NULL COMMENT "审批单ID",
|
||||
`node_id` bigint unsigned NOT NULL COMMENT "节点ID",
|
||||
`node_type` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "节点类型",
|
||||
`approver_id` bigint unsigned NOT NULL COMMENT "审批人ID",
|
||||
`action` ENUM("submit", "approve", "reject", "cancel") NOT NULL COMMENT "操作类型",
|
||||
`comment` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT "审批意见",
|
||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "操作时间",
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_order_id` (`order_id`),
|
||||
KEY `idx_approver_id` (`approver_id`),
|
||||
KEY `idx_created_at` (`created_at`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT="审批记录表";
|
||||
|
||||
-- =====================================
|
||||
-- 8. 出差申请表
|
||||
-- =====================================
|
||||
DROP TABLE IF EXISTS business_trip;
|
||||
CREATE TABLE `business_trip` (
|
||||
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT "出差ID",
|
||||
`user_id` bigint unsigned NOT NULL COMMENT "申请人ID",
|
||||
`reason` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "出差事由",
|
||||
`start_date` date NOT NULL COMMENT "开始日期",
|
||||
`end_date` date NOT NULL COMMENT "结束日期",
|
||||
`destination` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "目的地",
|
||||
`estimated_cost` decimal(10,2) DEFAULT 0.00 COMMENT "预计费用",
|
||||
`status` ENUM("draft", "pending", "approved", "rejected", "cancelled") NOT NULL DEFAULT "draft" COMMENT "状态",
|
||||
`approval_order_id` bigint unsigned DEFAULT NULL COMMENT "关联审批单ID",
|
||||
`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_user_id` (`user_id`),
|
||||
KEY `idx_status` (`status`),
|
||||
KEY `idx_dates` (`start_date`, `end_date`),
|
||||
KEY `idx_approval_order_id` (`approval_order_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT="出差申请表";
|
||||
|
||||
-- =====================================
|
||||
-- 9. 出差行程明细表
|
||||
-- =====================================
|
||||
DROP TABLE IF EXISTS business_trip_itinerary;
|
||||
CREATE TABLE `business_trip_itinerary` (
|
||||
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT "行程ID",
|
||||
`business_trip_id` bigint unsigned NOT NULL COMMENT "出差申请ID",
|
||||
`date` date NOT NULL COMMENT "行程日期",
|
||||
`departure` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT "出发地",
|
||||
`destination` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "目的地",
|
||||
`transport` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT "交通方式",
|
||||
`accommodation` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT "住宿安排",
|
||||
`remark` 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_business_trip_id` (`business_trip_id`),
|
||||
KEY `idx_date` (`date`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT="出差行程明细表";
|
||||
|
||||
-- =====================================
|
||||
-- 10. 用户与飞书应用关联表
|
||||
-- =====================================
|
||||
DROP TABLE IF EXISTS user_feishu_binding;
|
||||
CREATE TABLE `user_feishu_binding` (
|
||||
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT "ID",
|
||||
`user_id` bigint unsigned NOT NULL COMMENT "用户ID",
|
||||
`company_id` bigint unsigned NOT NULL COMMENT "公司ID",
|
||||
`feishu_open_id` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT "飞书OpenID",
|
||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间",
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_user_company` (`user_id`, `company_id`),
|
||||
KEY `idx_feishu_open_id` (`feishu_open_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT="用户飞书应用绑定表";
|
||||
|
||||
-- =====================================
|
||||
-- 验证结果
|
||||
-- =====================================
|
||||
SELECT "=== 所有表 ===" as "";
|
||||
SHOW TABLES;
|
||||
|
||||
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 "Total tables:" as "", COUNT(*) as count FROM information_schema.tables WHERE table_schema = "xserver";
|
||||
Reference in New Issue
Block a user