增加个人办公模块

This commit is contained in:
2026-08-28 13:06:54 +08:00
parent 74ab6c4c6d
commit 576fea3770
27 changed files with 3370 additions and 59 deletions
+38
View File
@@ -0,0 +1,38 @@
-- 通讯录表(全局表,已从 yz_backend_erp_contact 改名):与组织架构联动,支持内部员工(自动同步)和外部联系人
-- 已合并 alter_contact_add_dept_position.sql 的 dept_name / position_id 字段
-- tenant 隔离:通过 tid 字段实现租户间数据隔离
CREATE TABLE IF NOT EXISTS `yz_backend_contact` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tid` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '租户ID',
`employee_id` bigint(20) unsigned DEFAULT NULL COMMENT '关联员工ID(内部联系人自动关联)',
`org_id` bigint(20) unsigned DEFAULT NULL COMMENT '所属组织/部门ID(关联yz_backend_organization)',
`contact_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '联系人类型:1=内部员工 2=外部联系人',
`contact_name` varchar(64) NOT NULL COMMENT '联系人姓名',
`gender` tinyint(4) NOT NULL DEFAULT 0 COMMENT '性别:0=未知 1=男 2=女',
`phone` varchar(20) DEFAULT NULL COMMENT '手机号',
`work_phone` varchar(20) DEFAULT NULL COMMENT '办公电话',
`email` varchar(128) DEFAULT NULL COMMENT '邮箱',
`wechat` varchar(64) DEFAULT NULL COMMENT '微信号',
`avatar` varchar(512) DEFAULT NULL COMMENT '头像URL',
`company_name` varchar(128) DEFAULT NULL COMMENT '公司名称(外部联系人)',
`dept_name` varchar(128) DEFAULT NULL COMMENT '外部联系人手填部门名称',
`position_id` bigint(20) unsigned DEFAULT NULL COMMENT '职位ID,关联yz_backend_position',
`position_title` varchar(100) DEFAULT NULL COMMENT '职位名称',
`address` varchar(512) DEFAULT NULL COMMENT '地址',
`remark` varchar(512) DEFAULT NULL COMMENT '备注',
`is_starred` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否收藏:0=否 1=是',
`sort` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '排序值',
`status` tinyint(4) NOT NULL DEFAULT 1 COMMENT '状态:1=正常 0=停用',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`delete_time` datetime DEFAULT NULL COMMENT '删除时间(软删除)',
PRIMARY KEY (`id`),
KEY `idx_tid` (`tid`),
KEY `idx_employee_id` (`employee_id`),
KEY `idx_org_id` (`org_id`),
KEY `idx_contact_type` (`contact_type`),
KEY `idx_contact_name` (`contact_name`),
KEY `idx_phone` (`phone`),
KEY `idx_delete_time` (`delete_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通讯录表';
+6
View File
@@ -0,0 +1,6 @@
-- 通讯录表新增字段:外部联系人手填部门、内部员工职位关联
-- 对应模型:go/models/contact.go BackendErpContact
ALTER TABLE `yz_backend_contact`
ADD COLUMN `dept_name` VARCHAR(128) NULL COMMENT '外部联系人手填部门名称' AFTER `company_name`,
ADD COLUMN `position_id` BIGINT UNSIGNED NULL COMMENT '职位ID,关联 yz_backend_position' AFTER `dept_name`;
+5
View File
@@ -0,0 +1,5 @@
-- 通讯录表全局化:从 ERP 模块独立为全局基础功能,表名去掉 erp 前缀
-- 对应模型:go/models/contact.go(BackendErpContact)
-- RENAME 会保留全部数据与索引,对存量环境执行本脚本即可完成迁移
RENAME TABLE `yz_backend_erp_contact` TO `yz_backend_contact`;
+69
View File
@@ -0,0 +1,69 @@
-- 全局组织架构相关表:组织机构、员工、职位
-- 说明:组织架构已从 ERP 模块独立为全局基础功能,表名不带 erp 前缀
-- tenant 隔离:通过 tid 字段实现租户间数据隔离
-- 对应模型:go/models/erp.go(BackendErpOrganization / BackendErpEmployee / BackendErpPosition)
-- DDL 与线上 go-platform 库实际结构一致(2026-08 导出)
-- 组织架构表(OA 组织机构、通讯录、组织机构管理页依赖)
CREATE TABLE IF NOT EXISTS `yz_backend_organization` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`tid` bigint(20) unsigned NOT NULL COMMENT '租户ID',
`org_name` varchar(128) NOT NULL COMMENT '组织/部门名称',
`org_code` varchar(64) NOT NULL COMMENT '组织/部门编码',
`parent_id` bigint(20) unsigned DEFAULT '0' COMMENT '上级组织ID',
`sort` int(10) unsigned DEFAULT '0' COMMENT '排序号',
`leader_id` bigint(20) unsigned DEFAULT NULL COMMENT '部门负责人ID',
`is_company` int(11) DEFAULT '0' COMMENT '是否是公司 0-不是 1-是',
`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态:1-启用,2-停用,0-删除',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`delete_time` datetime DEFAULT NULL COMMENT '删除时间',
`remark` varchar(512) DEFAULT NULL COMMENT '备注信息',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_tid_code` (`tid`,`org_code`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='组织架构表';
-- 员工信息表(account 全局唯一)
CREATE TABLE IF NOT EXISTS `yz_backend_employee` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`tid` int(11) DEFAULT NULL COMMENT '租户ID',
`account` varchar(50) NOT NULL COMMENT '员工账号',
`password` varchar(64) NOT NULL DEFAULT '' COMMENT '密码',
`name` varchar(30) NOT NULL COMMENT '员工姓名',
`gender` tinyint(4) NOT NULL DEFAULT '0' COMMENT '性别 0=未知 1=男 2=女',
`birthday` date DEFAULT NULL COMMENT '生日',
`affiliate_unit` varchar(100) DEFAULT NULL COMMENT '隶属单位',
`department` varchar(50) DEFAULT NULL COMMENT '部门',
`position` varchar(50) DEFAULT NULL COMMENT '职位',
`education` varchar(20) DEFAULT NULL COMMENT '学历',
`nation` varchar(20) DEFAULT NULL COMMENT '民族',
`phone` varchar(20) DEFAULT NULL COMMENT '手机号',
`wechat` varchar(50) DEFAULT NULL COMMENT '微信号',
`email` varchar(100) DEFAULT NULL COMMENT '邮箱',
`home_address` varchar(255) DEFAULT NULL COMMENT '家庭住址',
`account_status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '账号状态 0=禁用 1=正常 2=离职',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`delete_time` datetime DEFAULT NULL COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_account` (`account`) USING BTREE,
KEY `idx_tid_account` (`tid`,`account`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='员工信息表';
-- 职位表
CREATE TABLE IF NOT EXISTS `yz_backend_position` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`tid` bigint(20) unsigned NOT NULL COMMENT '租户ID',
`department_id` bigint(20) unsigned NOT NULL COMMENT '部门ID',
`position_code` varchar(50) NOT NULL COMMENT '职位编码',
`position_name` varchar(100) NOT NULL COMMENT '职位名称',
`position_type` tinyint(4) DEFAULT '0' COMMENT '职位类型:0-普通职位 1-管理职位 2-技术职位',
`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态:0-禁用 1-启用',
`sort` int(10) unsigned DEFAULT '0' COMMENT '排序',
`remark` varchar(512) DEFAULT NULL COMMENT '备注',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`delete_time` datetime DEFAULT NULL COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_tid_code` (`tid`,`position_code`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='职位表';