更新代码

This commit is contained in:
2026-09-15 10:44:31 +08:00
parent 9875832019
commit 943c3708b0
125 changed files with 2009 additions and 1728 deletions
+133
View File
@@ -0,0 +1,133 @@
-- =============================================================
-- OA文档库相关表:分类表 / 文档表 / 关联表 / 共享表
-- yz_backend_oa_doc_category 文档分类(含共享/私密双空间)
-- yz_backend_oa_doc 文档
-- yz_backend_oa_doc_link 文档关联(图谱)
-- yz_backend_oa_doc_share 文档共享(用户/部门)
-- 说明:建表可重复执行;末尾的历史库补列与数据修正在重复执行时
-- 报 "Duplicate column name" 属正常,跳过即可。
-- 运行:mysql -h<host> -P<port> -u<user> -p <db> < create_oa_document.sql
-- =============================================================
CREATE TABLE IF NOT EXISTS `yz_backend_oa_doc_category` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tid` int NOT NULL DEFAULT 0 COMMENT '租户ID',
`user_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '归属用户ID 0-租户级(共享分类) >0-该用户的个人分类',
`parent_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '父级ID,0为一级分类',
`name` varchar(128) NOT NULL DEFAULT '' COMMENT '分类名称',
`sort` int NOT NULL DEFAULT 0 COMMENT '排序,越小越靠前',
`remark` varchar(255) NOT NULL DEFAULT '' COMMENT '备注',
`is_system` tinyint NOT NULL DEFAULT 0 COMMENT '是否系统内置分类 0-否(可删除) 1-是(不可删除)',
`scope` varchar(16) NOT NULL DEFAULT 'shared' COMMENT '所属范围 personal-个人文档 shared-共享文档',
`is_deleted` tinyint NOT NULL DEFAULT 0 COMMENT '是否删除 0-否 1-是',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`delete_time` datetime DEFAULT NULL COMMENT '删除时间',
PRIMARY KEY (`id`),
KEY `idx_tid_parent` (`tid`,`parent_id`),
KEY `idx_tid_scope_user` (`tid`,`scope`,`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='OA文档分类表';
CREATE TABLE IF NOT EXISTS `yz_backend_oa_doc` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tid` int NOT NULL DEFAULT 0 COMMENT '租户ID',
`category_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '所属分类ID,0为未分类',
`title` varchar(255) NOT NULL DEFAULT '' COMMENT '文档标题',
`file_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '关联附件ID(yz_system_files)',
`file_url` varchar(512) NOT NULL DEFAULT '' COMMENT '附件访问地址',
`file_name` varchar(255) NOT NULL DEFAULT '' COMMENT '原始文件名',
`ext` varchar(16) NOT NULL DEFAULT '' COMMENT '扩展名',
`size` bigint unsigned NOT NULL DEFAULT 0 COMMENT '文件大小(字节)',
`doc_type` tinyint NOT NULL DEFAULT 0 COMMENT '类型 0-其他 1-文档 2-表格 3-演示 4-PDF 5-图片 6-压缩包 7-视频 8-音频',
`tags` varchar(255) NOT NULL DEFAULT '' COMMENT '标签,逗号分隔',
`summary` varchar(1000) NOT NULL DEFAULT '' COMMENT '摘要/描述',
`content` longtext NULL COMMENT '在线制作文档的编辑源(富文本HTML),仅用于再次编辑',
`status` tinyint NOT NULL DEFAULT 0 COMMENT '状态 0-草稿 1-已发布 2-已归档',
`version` int NOT NULL DEFAULT 1 COMMENT '版本号',
`is_star` tinyint NOT NULL DEFAULT 0 COMMENT '是否收藏 0-否 1-是',
`owner_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '负责人ID',
`owner_name` varchar(100) NOT NULL DEFAULT '' COMMENT '负责人姓名',
`view_count` int NOT NULL DEFAULT 0 COMMENT '查看次数',
`download_count` int NOT NULL DEFAULT 0 COMMENT '下载次数',
`creator_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建人ID',
`creator_name` varchar(100) NOT NULL DEFAULT '' COMMENT '创建人姓名',
`visibility` tinyint NOT NULL DEFAULT 0 COMMENT '可见性 0-租户公开 1-私密(仅创建者与被共享者)',
`is_deleted` tinyint NOT NULL DEFAULT 0 COMMENT '是否删除 0-否 1-是',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`delete_time` datetime DEFAULT NULL COMMENT '删除时间',
PRIMARY KEY (`id`),
KEY `idx_tid_cate` (`tid`,`category_id`,`is_deleted`),
KEY `idx_tid_status` (`tid`,`status`,`is_deleted`),
KEY `idx_tid_title` (`tid`,`title`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='OA文档表';
CREATE TABLE IF NOT EXISTS `yz_backend_oa_doc_link` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tid` int NOT NULL DEFAULT 0 COMMENT '租户ID',
`source_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '源文档ID',
`target_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '目标文档ID',
`relation` varchar(32) NOT NULL DEFAULT 'related' COMMENT '关系 reference-引用 related-相关 version-版本 belong-从属',
`remark` varchar(255) NOT NULL DEFAULT '' COMMENT '关系说明',
`creator_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '创建人ID',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_doc_pair` (`tid`,`source_id`,`target_id`,`relation`),
KEY `idx_tid_source` (`tid`,`source_id`),
KEY `idx_tid_target` (`tid`,`target_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='OA文档关联表';
CREATE TABLE IF NOT EXISTS `yz_backend_oa_doc_share` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tid` int NOT NULL DEFAULT 0 COMMENT '租户ID',
`doc_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '文档ID',
`share_type` tinyint NOT NULL DEFAULT 0 COMMENT '共享类型 0-用户(target_id=uid) 1-部门(target_id=org_id,含子部门)',
`target_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '共享目标ID',
`creator_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '授权人ID',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_doc_target` (`tid`,`doc_id`,`share_type`,`target_id`),
KEY `idx_tid_doc` (`tid`,`doc_id`),
KEY `idx_target` (`tid`,`share_type`,`target_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='OA文档共享表';
-- -------------------------------------------------------------
-- 历史库补齐列(表已存在且缺列时才执行 ALTER,可重复执行不报错)
-- -------------------------------------------------------------
-- yz_backend_oa_doc.visibility
SET @tbl := (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_oa_doc');
SET @col := (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_oa_doc' AND COLUMN_NAME = 'visibility');
SET @ddl := IF(@tbl > 0 AND @col = 0, 'ALTER TABLE `yz_backend_oa_doc` ADD COLUMN `visibility` tinyint NOT NULL DEFAULT 0 COMMENT ''可见性 0-租户公开 1-私密(仅创建者与被共享者)''', 'DO 0');
PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-- yz_backend_oa_doc.content
SET @tbl := (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_oa_doc');
SET @col := (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_oa_doc' AND COLUMN_NAME = 'content');
SET @ddl := IF(@tbl > 0 AND @col = 0, 'ALTER TABLE `yz_backend_oa_doc` ADD COLUMN `content` longtext NULL COMMENT ''在线制作文档的编辑源(富文本HTML),仅用于再次编辑''', 'DO 0');
PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-- yz_backend_oa_doc_category.is_system
SET @tbl := (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_oa_doc_category');
SET @col := (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_oa_doc_category' AND COLUMN_NAME = 'is_system');
SET @ddl := IF(@tbl > 0 AND @col = 0, 'ALTER TABLE `yz_backend_oa_doc_category` ADD COLUMN `is_system` tinyint NOT NULL DEFAULT 0 COMMENT ''是否系统内置分类 0-否(可删除) 1-是(不可删除)''', 'DO 0');
PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-- yz_backend_oa_doc_category.scope
SET @tbl := (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_oa_doc_category');
SET @col := (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_oa_doc_category' AND COLUMN_NAME = 'scope');
SET @ddl := IF(@tbl > 0 AND @col = 0, 'ALTER TABLE `yz_backend_oa_doc_category` ADD COLUMN `scope` varchar(16) NOT NULL DEFAULT ''shared'' COMMENT ''所属范围 personal-个人文档 shared-共享文档''', 'DO 0');
PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-- yz_backend_oa_doc_category.user_id
SET @tbl := (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_oa_doc_category');
SET @col := (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_oa_doc_category' AND COLUMN_NAME = 'user_id');
SET @ddl := IF(@tbl > 0 AND @col = 0, 'ALTER TABLE `yz_backend_oa_doc_category` ADD COLUMN `user_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT ''归属用户ID 0-租户级(共享分类) >0-该用户的个人分类''', 'DO 0');
PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-- 双空间模型:兼容存量数据,将不在 (shared, personal) 范围内的分类统一归为共享空间
-- (user_id 置 0、scope 置 shared),避免历史脏数据导致分类不可见。
-- 注意:不再把 personal 并入 shared,私密空间需保留各自的 user_id 隔离。
UPDATE `yz_backend_oa_doc_category`
SET `user_id` = 0, `scope` = 'shared'
WHERE `scope` NOT IN ('shared', 'personal') AND `is_deleted` = 0;